[Go] Add imtype, goin, goout, godirectorin, and godirectorout
typemaps, to support writing Go code to convert between types.
This commit is contained in:
parent
6eaec9ce7c
commit
1addbb46a8
9 changed files with 744 additions and 101 deletions
|
|
@ -30,6 +30,7 @@
|
|||
<li><a href="#Go_primitive_type_mappings">Default Go primitive type mappings</a>
|
||||
<li><a href="#Go_output_arguments">Output arguments</a>
|
||||
<li><a href="#Go_adding_additional_code">Adding additional go code</a>
|
||||
<li><a href="#Go_typemaps">Go typemaps</a>
|
||||
</ul>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -692,5 +693,123 @@ func bar() {
|
|||
</pre>
|
||||
</div>
|
||||
|
||||
<H3><a name="Go_typemaps"></a>23.3.11 Go typemaps</H3>
|
||||
|
||||
|
||||
<p>
|
||||
You can use the <tt>%typemap</tt> directive to modify SWIG's default
|
||||
wrapping behavior for specific C/C++ types. You need to be familiar
|
||||
with the material in the general
|
||||
"<a href="Typemaps.html#Typemaps">Typemaps</a>" chapter. That chapter
|
||||
explains how to define a typemap. This section describes some
|
||||
specific typemaps used for Go.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
In general type conversion code may be written either in C/C++ or in
|
||||
Go. The choice to make normally depends on where memory should be
|
||||
allocated. To allocate memory controlled by the Go garbage collector,
|
||||
write Go code. To allocate memory in the C/C++ heap, write C code.
|
||||
</p>
|
||||
|
||||
<table BORDER summary="Go Typemaps">
|
||||
<tr>
|
||||
<td><b>Typemap</b></td>
|
||||
<td><b>Description</b></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>gotype</td>
|
||||
<td>
|
||||
The Go type to use for a C++ type. This type will appear in the
|
||||
generated Go wrapper function. If this is not defined SWIG will use a
|
||||
default as <a href="#Go_primitive_type_mappings">described above</a>.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>imtype</td>
|
||||
<td>
|
||||
An intermediate Go type used by the "goin", "goout", "godirectorin",
|
||||
and "godirectorout" typemaps. If this typemap is not defined for a
|
||||
C/C++ type, the gotype typemape will be used. This is useful when
|
||||
gotype is best converted to C/C++ using Go code.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>goin</td>
|
||||
<td>
|
||||
Go code to convert from gotype to imtype when calling a C/C++
|
||||
function. SWIG will then internally convert imtype to a C/C++ type
|
||||
and pass it down. If this is not defined no conversion is done.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>in</td>
|
||||
<td>
|
||||
C/C++ code to convert the internally generated C/C++ type, based on
|
||||
imtype, into the C/C++ type that a function call expects. If this is
|
||||
not defined the value will simply be cast to the desired type.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>out</td>
|
||||
<td>
|
||||
C/C++ code to convert the C/C++ type that a function call returns into
|
||||
the internally generated C/C++ type, based on imtype, that will be
|
||||
returned to Go. If this is not defined the value will simply be cast
|
||||
to the desired type.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>goout</td>
|
||||
<td>
|
||||
Go code to convert a value returned from a C/C++ function from imtype
|
||||
to gotype. If this is not defined no conversion is done.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>directorin</td>
|
||||
<td>
|
||||
C/C++ code to convert the C/C++ type used to call a director method
|
||||
into the internally generated C/C++ type, based on imtype, that will
|
||||
be passed to Go. If this is not defined the value will simply be cast
|
||||
to the desired type.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>godirectorin</td>
|
||||
<td>
|
||||
Go code to convert a value used to call a director method from imtype
|
||||
to gotype. If this is not defined no conversion is done.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>godirectorout</td>
|
||||
<td>
|
||||
Go code to convert a value returned from a director method from gotype
|
||||
to imtype. If this is not defined no conversion is done.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>directorout</td>
|
||||
<td>
|
||||
C/C++ code to convert a value returned from a director method from the
|
||||
internally generated C/C++ type, based on imtype, into the type that
|
||||
the method should return If this is not defined the value will simply
|
||||
be cast to the desired type.
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue