From: William S F. <ws...@fu...> - 2010-05-28 21:20:46
|
Ian Lance Taylor wrote: > William S Fulton <ws...@fu...> writes: > >>>> What is XXX in the "go" typemaps meant to indicate, it doesn't seem >>>> very conventional. >>> It's meant to indicate a case where the typemaps are unable to convert >>> the type from C/C++ syntax to Go syntax. Those are the cases which >>> the code in go.cxx has to handle. For example, the syntax for pointer >>> to pointer to int in C/C++ is of course "int**" and in Go is "**int". >>> The typemap code does not seem able to make that transformation. The primitive types are normally hard coded in the typemap, but if you need a more generic handling of this, like "**MyStruct" for "MyStruct**", then you need a special variable to do the transformation. >>> The function goTypeWithInfo handles the transformations which aren't >>> handled in the typemap code. >>> >> I need to look at the generated code, but probably a special variable >> will be more suitable as these indicate a substitution by SWIG of some >> sort, whereas XXX is not very conventional. > > Is there any existing example I could look at? > > To be clear, the XXX never appears in the generated code. The code in > go.cxx looks for XXX and replaces it with something else generated at > runtime. > $javaclassname in the Java module and $csclassname in C# are special variables particular to a language module. There of course all the standard special variables like $1, $1_type, $1_ltype etc etc, see Typemaps.html#Typemaps_special_variables. William |