html error fixes
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@7247 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
dac6d7d0c7
commit
a0cb27e998
8 changed files with 61 additions and 52 deletions
|
|
@ -29,9 +29,9 @@
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
The purpose of the C# module is to offer an automated way of accessing existing C/C++ code from .NET languages.
|
The purpose of the C# module is to offer an automated way of accessing existing C/C++ code from .NET languages.
|
||||||
The wrapper code implementation uses C# and the Platform Invoke (PINVOKE) interface to access natively compiled C/C++ code.
|
The wrapper code implementation uses C# and the Platform Invoke (PInvoke) interface to access natively compiled C/C++ code.
|
||||||
The PINVOKE interface has been chosen over Microsoft's Managed C++ interface as it is portable to both Microsoft Windows and non-Microsoft platforms.
|
The PInvoke interface has been chosen over Microsoft's Managed C++ interface as it is portable to both Microsoft Windows and non-Microsoft platforms.
|
||||||
PINVOKE is part of the ECMA/ISO C# specification.
|
PInvoke is part of the ECMA/ISO C# specification.
|
||||||
It is also better suited for robust production environments due to the Managed C++ flaw called the
|
It is also better suited for robust production environments due to the Managed C++ flaw called the
|
||||||
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vcconMixedDLLLoadingProblem.asp">Mixed DLL Loading Problem</a>.
|
<a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vcconMixedDLLLoadingProblem.asp">Mixed DLL Loading Problem</a>.
|
||||||
Swig C# works equally well on non-Microsoft operating systems such as Linux, Solaris and Apple Mac using
|
Swig C# works equally well on non-Microsoft operating systems such as Linux, Solaris and Apple Mac using
|
||||||
|
|
@ -96,7 +96,7 @@ Note that %csconst(0) will be ignored when wrapping C/C++ enums with proper C# e
|
||||||
This is because C# enum items must be initialised from a compile time constant.
|
This is because C# enum items must be initialised from a compile time constant.
|
||||||
If an enum item has an initialiser and the initialiser doesn't compile as C# code,
|
If an enum item has an initialiser and the initialiser doesn't compile as C# code,
|
||||||
then the %csconstvalue directive must be used as %csconst(0) will have no effect.
|
then the %csconstvalue directive must be used as %csconst(0) will have no effect.
|
||||||
If it was used, it would generate an illegal runtime initialisation via a PINVOKE call.
|
If it was used, it would generate an illegal runtime initialisation via a PInvoke call.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
|
|
@ -451,11 +451,15 @@ the code contains a call to <tt>SWIG_CSharpSetPendingExceptionArgument()</tt>. T
|
||||||
|
|
||||||
%typemap(check, canthrow=1) int number %{
|
%typemap(check, canthrow=1) int number %{
|
||||||
if ($1 < 0) {
|
if ($1 < 0) {
|
||||||
SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, "only positive numbers accepted", "number");
|
SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException,
|
||||||
|
"only positive numbers accepted", "number");
|
||||||
return $null;
|
return $null;
|
||||||
}
|
}
|
||||||
// SWIGEXCODE is a macro used by many other csout typemaps
|
// SWIGEXCODE is a macro used by many other csout typemaps
|
||||||
%define SWIGEXCODE "\n if ($modulePINVOKE.SWIGPendingException.Pending) throw $modulePINVOKE.SWIGPendingException.Retrieve();" %enddef
|
%define SWIGEXCODE
|
||||||
|
"\n if ($modulePINVOKE.SWIGPendingException.Pending)"
|
||||||
|
"\n throw $modulePINVOKE.SWIGPendingException.Retrieve();"
|
||||||
|
%enddef
|
||||||
%typemap(csout, excode=SWIGEXCODE) void {
|
%typemap(csout, excode=SWIGEXCODE) void {
|
||||||
$imcall;$excode
|
$imcall;$excode
|
||||||
}
|
}
|
||||||
|
|
@ -504,13 +508,14 @@ Now let's analyse the generated code to gain a fuller understanding of the typem
|
||||||
|
|
||||||
<div class="code">
|
<div class="code">
|
||||||
<pre>
|
<pre>
|
||||||
DllExport void SWIGSTDCALL CSharp_positivesonly(int jarg1) {
|
SWIGEXPORT void SWIGSTDCALL CSharp_positivesonly(int jarg1) {
|
||||||
int arg1 ;
|
int arg1 ;
|
||||||
|
|
||||||
arg1 = (int)jarg1;
|
arg1 = (int)jarg1;
|
||||||
|
|
||||||
if (arg1 < 0) {
|
if (arg1 < 0) {
|
||||||
SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, "only positive numbers accepted", "number");
|
SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException,
|
||||||
|
"only positive numbers accepted", "number");
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -529,7 +534,8 @@ This largely comes from the "check" typemap. The managed code in the module clas
|
||||||
public class example {
|
public class example {
|
||||||
public static void positivesonly(int number) {
|
public static void positivesonly(int number) {
|
||||||
examplePINVOKE.positivesonly(number);
|
examplePINVOKE.positivesonly(number);
|
||||||
if (examplePINVOKE.SWIGPendingException.Pending) throw examplePINVOKE.SWIGPendingException.Retrieve();
|
if (examplePINVOKE.SWIGPendingException.Pending)
|
||||||
|
throw examplePINVOKE.SWIGPendingException.Retrieve();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -578,7 +584,8 @@ In fact, the code above would be generated if the <tt>canthrow</tt> attribute wa
|
||||||
<pre>
|
<pre>
|
||||||
%typemap(check) int number %{
|
%typemap(check) int number %{
|
||||||
if ($1 < 0) {
|
if ($1 < 0) {
|
||||||
SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException, "only positive numbers accepted", "number");
|
SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentOutOfRangeException,
|
||||||
|
"only positive numbers accepted", "number");
|
||||||
return $null;
|
return $null;
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
@ -634,7 +641,7 @@ The generated unmanaged code this time catches the C++ exception and converts it
|
||||||
|
|
||||||
<div class="code">
|
<div class="code">
|
||||||
<pre>
|
<pre>
|
||||||
DllExport void SWIGSTDCALL CSharp_negativesonly(int jarg1) {
|
SWIGEXPORT void SWIGSTDCALL CSharp_negativesonly(int jarg1) {
|
||||||
int arg1 ;
|
int arg1 ;
|
||||||
|
|
||||||
arg1 = (int)jarg1;
|
arg1 = (int)jarg1;
|
||||||
|
|
@ -659,7 +666,8 @@ The managed code generated does check for the pending exception as mentioned ear
|
||||||
<pre>
|
<pre>
|
||||||
public static void negativesonly(int value) {
|
public static void negativesonly(int value) {
|
||||||
examplePINVOKE.negativesonly(value);
|
examplePINVOKE.negativesonly(value);
|
||||||
if (examplePINVOKE.SWIGPendingException.Pending) throw examplePINVOKE.SWIGPendingException.Retrieve();
|
if (examplePINVOKE.SWIGPendingException.Pending)
|
||||||
|
throw examplePINVOKE.SWIGPendingException.Retrieve();
|
||||||
}
|
}
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -683,7 +691,7 @@ such as the <tt>evensonly</tt> method below.
|
||||||
}
|
}
|
||||||
|
|
||||||
%inline %{
|
%inline %{
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
void evensonly(int input) throw (std::out_of_range) {
|
void evensonly(int input) throw (std::out_of_range) {
|
||||||
if (input%2 != 0)
|
if (input%2 != 0)
|
||||||
throw std::out_of_range("number is not even");
|
throw std::out_of_range("number is not even");
|
||||||
|
|
@ -699,7 +707,7 @@ SWIG generates a try catch block with the throws typemap code in the catch handl
|
||||||
|
|
||||||
<div class="code">
|
<div class="code">
|
||||||
<pre>
|
<pre>
|
||||||
DllExport void SWIGSTDCALL CSharp_evensonly(int jarg1) {
|
SWIGEXPORT void SWIGSTDCALL CSharp_evensonly(int jarg1) {
|
||||||
int arg1 ;
|
int arg1 ;
|
||||||
|
|
||||||
arg1 = (int)jarg1;
|
arg1 = (int)jarg1;
|
||||||
|
|
@ -750,11 +758,13 @@ the C# code can be generated into the intermediary class using the <tt>imclassco
|
||||||
typedef void (SWIGSTDCALL* CSharpExceptionCallback_t)(const char *);
|
typedef void (SWIGSTDCALL* CSharpExceptionCallback_t)(const char *);
|
||||||
CSharpExceptionCallback_t customExceptionCallback = NULL;
|
CSharpExceptionCallback_t customExceptionCallback = NULL;
|
||||||
|
|
||||||
extern "C" DllExport void SWIGSTDCALL CustomExceptionRegisterCallback(CSharpExceptionCallback_t customCallback) {
|
extern "C" SWIGEXPORT
|
||||||
|
void SWIGSTDCALL CustomExceptionRegisterCallback(CSharpExceptionCallback_t customCallback) {
|
||||||
customExceptionCallback = customCallback;
|
customExceptionCallback = customCallback;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Note that SWIG detects any method calls named starting with SWIG_CSharpSetPendingException for warning 845
|
// Note that SWIG detects any method calls named starting with
|
||||||
|
// SWIG_CSharpSetPendingException for warning 845
|
||||||
static void SWIG_CSharpSetPendingExceptionCustom(const char *msg) {
|
static void SWIG_CSharpSetPendingExceptionCustom(const char *msg) {
|
||||||
customExceptionCallback(msg);
|
customExceptionCallback(msg);
|
||||||
}
|
}
|
||||||
|
|
@ -764,7 +774,8 @@ the C# code can be generated into the intermediary class using the <tt>imclassco
|
||||||
class CustomExceptionHelper {
|
class CustomExceptionHelper {
|
||||||
// C# delegate for the C/C++ customExceptionCallback
|
// C# delegate for the C/C++ customExceptionCallback
|
||||||
public delegate void CustomExceptionDelegate(string message);
|
public delegate void CustomExceptionDelegate(string message);
|
||||||
static CustomExceptionDelegate customDelegate = new CustomExceptionDelegate(SetPendingCustomException);
|
static CustomExceptionDelegate customDelegate =
|
||||||
|
new CustomExceptionDelegate(SetPendingCustomException);
|
||||||
|
|
||||||
[DllImport("$dllimport", EntryPoint="CustomExceptionRegisterCallback")]
|
[DllImport("$dllimport", EntryPoint="CustomExceptionRegisterCallback")]
|
||||||
public static extern void CustomExceptionRegisterCallback(CustomExceptionDelegate customCallback);
|
public static extern void CustomExceptionRegisterCallback(CustomExceptionDelegate customCallback);
|
||||||
|
|
|
||||||
|
|
@ -379,10 +379,10 @@
|
||||||
<li><a href="Typemaps.html#Typemaps_nn46">Usage</a>
|
<li><a href="Typemaps.html#Typemaps_nn46">Usage</a>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="Typemaps.html#Typemaps_overloading">Typemaps and overloading</a>
|
<li><a href="Typemaps.html#Typemaps_overloading">Typemaps and overloading</a>
|
||||||
<li><a href="Typemaps.html#Typemaps_nn45">More about <tt>%apply</tt> and <tt>%clear</tt></a>
|
<li><a href="Typemaps.html#Typemaps_nn48">More about <tt>%apply</tt> and <tt>%clear</tt></a>
|
||||||
<li><a href="Typemaps.html#Typemaps_nn46">Reducing wrapper code size</a>
|
<li><a href="Typemaps.html#Typemaps_nn49">Reducing wrapper code size</a>
|
||||||
<li><a href="Typemaps.html#Typemaps_nn47">Passing data between typemaps</a>
|
<li><a href="Typemaps.html#Typemaps_nn47">Passing data between typemaps</a>
|
||||||
<li><a href="Typemaps.html#Typemaps_nn48">Where to go for more information?</a>
|
<li><a href="Typemaps.html#Typemaps_nn51">Where to go for more information?</a>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- INDEX -->
|
<!-- INDEX -->
|
||||||
|
|
@ -519,11 +519,11 @@
|
||||||
<li><a href="Chicken.html#Chicken_nn10">Exceptions</a>
|
<li><a href="Chicken.html#Chicken_nn10">Exceptions</a>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a>
|
<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a>
|
||||||
<li><a href="Chicken.html#Chicken_nn12">Compilation</a>
|
<li><a href="Chicken.html#Chicken_nn12">Linkage</a>
|
||||||
<li><a href="Chicken.html#Chicken_nn13">Linkage</a>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="Chicken.html#Chicken_nn14">Shared library</a>
|
<li><a href="Chicken.html#Chicken_nn13">Static binary or shared library linked at compile time</a>
|
||||||
<li><a href="Chicken.html#Chicken_nn15">Static binary</a>
|
<li><a href="Chicken.html#Chicken_nn14">Building chicken extension libraries</a>
|
||||||
|
<li><a href="Chicken.html#Chicken_nn15">Linking multiple SWIG modules with TinyCLOS</a>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="Chicken.html#Chicken_nn16">Typemaps</a>
|
<li><a href="Chicken.html#Chicken_nn16">Typemaps</a>
|
||||||
<li><a href="Chicken.html#Chicken_nn17">Pointers</a>
|
<li><a href="Chicken.html#Chicken_nn17">Pointers</a>
|
||||||
|
|
|
||||||
|
|
@ -356,8 +356,7 @@ back to this behavior, use</p>
|
||||||
%values_as_list;</pre>
|
%values_as_list;</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<li><p><em>Multiple values as vectors.</em>
|
||||||
<li><em>Multiple values as vectors.</em>
|
|
||||||
By issuing
|
By issuing
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
@ -368,7 +367,7 @@ By issuing
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
vectors instead of lists will be used.
|
vectors instead of lists will be used.
|
||||||
<li><em>Multiple values for multiple-value continuations.</em>
|
<li><p><em>Multiple values for multiple-value continuations.</em>
|
||||||
<strong>This is the most elegant way.</strong> By issuing
|
<strong>This is the most elegant way.</strong> By issuing
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,7 @@ object is created using <tt>calloc()</tt>. In C++, <tt>new</tt> is used.
|
||||||
|
|
||||||
<div class="indent"><p>
|
<div class="indent"><p>
|
||||||
Deletes an object type <tt>type</tt>.
|
Deletes an object type <tt>type</tt>.
|
||||||
<p></div>
|
</p></div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
<tt>void name_assign(type *obj, type value)</tt>
|
<tt>void name_assign(type *obj, type value)</tt>
|
||||||
|
|
|
||||||
|
|
@ -2728,7 +2728,7 @@ likely to be extended in Python and used in C++.
|
||||||
<p>
|
<p>
|
||||||
Compared to classes that do not use directors, the call routing in the
|
Compared to classes that do not use directors, the call routing in the
|
||||||
director methods does add some overhead. In particular, at least one
|
director methods does add some overhead. In particular, at least one
|
||||||
dynamic cast and one extra function call occur per method call from
|
dynamic cast and one extra function call occurs per method call from
|
||||||
Python. Relative to the speed of Python execution this is probably
|
Python. Relative to the speed of Python execution this is probably
|
||||||
completely negligible. For worst case routing, a method call that
|
completely negligible. For worst case routing, a method call that
|
||||||
ultimately resolves in C++ may take one extra detour through Python in
|
ultimately resolves in C++ may take one extra detour through Python in
|
||||||
|
|
@ -2754,8 +2754,8 @@ Typemaps for input and output of most of the basic types from director
|
||||||
classes have been written. These are roughly the reverse of the usual
|
classes have been written. These are roughly the reverse of the usual
|
||||||
input and output typemaps used by the wrapper code. The typemap
|
input and output typemaps used by the wrapper code. The typemap
|
||||||
operation names are 'directorin', 'directorout', and 'directorargout'.
|
operation names are 'directorin', 'directorout', and 'directorargout'.
|
||||||
The director code does not use any of the other kinds of typemaps
|
The director code does not currently use any of the other kinds of typemaps.
|
||||||
yet. It is not clear at this point which kinds are appropriate and
|
It is not clear at this point which kinds are appropriate and
|
||||||
need to be supported.
|
need to be supported.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
@ -2765,7 +2765,7 @@ need to be supported.
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Director typemaps for STL classes are in place, and hence you should
|
Director typemaps for STL classes are in place, and hence you should
|
||||||
be able to use std::vector, std::string, etc., as any other raw type.
|
be able to use std::vector, std::string, etc., as you would any other type.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -2776,7 +2776,7 @@ references, such as
|
||||||
<pre>
|
<pre>
|
||||||
class Foo {
|
class Foo {
|
||||||
…
|
…
|
||||||
virtual const int& bar();
|
virtual const int& bar();
|
||||||
…
|
…
|
||||||
};
|
};
|
||||||
</pre>
|
</pre>
|
||||||
|
|
@ -2784,10 +2784,10 @@ class Foo {
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
will work only for simple call scenarios. Usually the resulting code
|
will work only for simple call scenarios. Usually the resulting code
|
||||||
is neither thread or reentrant safe. Hence, the user is adviced to
|
is neither thread or reentrant safe. Hence, the user is advised to
|
||||||
avoid returning const reference in director methods. For example,
|
avoid returning const references in director methods. For example,
|
||||||
the user could modify the method interface to use a lvalue return
|
the user could modify the method interface to use lvalue return
|
||||||
types, when possible, i.e.
|
types, wherever possible, for example
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div class="code">
|
<div class="code">
|
||||||
|
|
@ -2801,13 +2801,11 @@ class Foo {
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
If that is not possible, the user should avoid to enable the
|
If that is not possible, the user should avoid enabling the
|
||||||
director feature for reentrant, recursive or threaded member
|
director feature for reentrant, recursive or threaded member
|
||||||
methods that return const references.
|
methods that return const references.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
<H2><a name="Python_nn40"></a>26.6 Common customization features</H2>
|
<H2><a name="Python_nn40"></a>26.6 Common customization features</H2>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4033,8 +4033,7 @@ public:
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p>
|
<li><p>Resolving ambiguity in overloading may prevent declarations from being
|
||||||
<li>Resolving ambiguity in overloading may prevent declarations from being
|
|
||||||
imported by <tt>using</tt>. For example:
|
imported by <tt>using</tt>. For example:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,10 +70,10 @@
|
||||||
<li><a href="#Typemaps_nn46">Usage</a>
|
<li><a href="#Typemaps_nn46">Usage</a>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="#Typemaps_overloading">Typemaps and overloading</a>
|
<li><a href="#Typemaps_overloading">Typemaps and overloading</a>
|
||||||
<li><a href="#Typemaps_nn45">More about <tt>%apply</tt> and <tt>%clear</tt></a>
|
<li><a href="#Typemaps_nn48">More about <tt>%apply</tt> and <tt>%clear</tt></a>
|
||||||
<li><a href="#Typemaps_nn46">Reducing wrapper code size</a>
|
<li><a href="#Typemaps_nn49">Reducing wrapper code size</a>
|
||||||
<li><a href="#Typemaps_nn47">Passing data between typemaps</a>
|
<li><a href="#Typemaps_nn47">Passing data between typemaps</a>
|
||||||
<li><a href="#Typemaps_nn48">Where to go for more information?</a>
|
<li><a href="#Typemaps_nn51">Where to go for more information?</a>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<!-- INDEX -->
|
<!-- INDEX -->
|
||||||
|
|
@ -2837,6 +2837,8 @@ information storage, the generated SWIG code needs to provide it.
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
Requirements for the type system:
|
Requirements for the type system:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
<li>Store inheritance and type equivalence information and be able to correctly
|
<li>Store inheritance and type equivalence information and be able to correctly
|
||||||
re-create the type pointer.</li>
|
re-create the type pointer.</li>
|
||||||
<li>Share type information between modules.</li>
|
<li>Share type information between modules.</li>
|
||||||
|
|
@ -2847,7 +2849,7 @@ dependency.</li>
|
||||||
language modules.</li>
|
language modules.</li>
|
||||||
<li>Custom, language specific information can be attached to types.</li>
|
<li>Custom, language specific information can be attached to types.</li>
|
||||||
<li>Modules can be unloaded from the type system.</li>
|
<li>Modules can be unloaded from the type system.</li>
|
||||||
</p>
|
</ul>
|
||||||
|
|
||||||
<H3><a name="Typemaps_nn45"></a>10.8.1 Implementation</H3>
|
<H3><a name="Typemaps_nn45"></a>10.8.1 Implementation</H3>
|
||||||
|
|
||||||
|
|
@ -3016,7 +3018,7 @@ Each module has one swig_module_info structure which looks like this:
|
||||||
* Each module generates one structure like this, and the runtime collects
|
* Each module generates one structure like this, and the runtime collects
|
||||||
* all of these structures and stores them in a circularly linked list.*/
|
* all of these structures and stores them in a circularly linked list.*/
|
||||||
typedef struct swig_module_info {
|
typedef struct swig_module_info {
|
||||||
swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
|
swig_type_info **types; /* Array of pointers to swig_type_info structures in this module */
|
||||||
int size; /* Number of types in this module */
|
int size; /* Number of types in this module */
|
||||||
struct swig_module_info *next; /* Pointer to next element in circularly linked list */
|
struct swig_module_info *next; /* Pointer to next element in circularly linked list */
|
||||||
swig_type_info **type_initial; /* Array of initially generated type structures */
|
swig_type_info **type_initial; /* Array of initially generated type structures */
|
||||||
|
|
@ -3476,7 +3478,7 @@ Subsequent "in" typemaps would then perform more extensive type-checking.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<H2><a name="Typemaps_nn45"></a>10.10 More about <tt>%apply</tt> and <tt>%clear</tt></H2>
|
<H2><a name="Typemaps_nn48"></a>10.10 More about <tt>%apply</tt> and <tt>%clear</tt></H2>
|
||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -3561,7 +3563,7 @@ example:
|
||||||
</pre>
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<H2><a name="Typemaps_nn46"></a>10.11 Reducing wrapper code size</H2>
|
<H2><a name="Typemaps_nn49"></a>10.11 Reducing wrapper code size</H2>
|
||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
@ -3679,7 +3681,7 @@ sure that the typemaps sharing information have exactly the same types and names
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<H2><a name="Typemaps_nn48"></a>10.13 Where to go for more information?</H2>
|
<H2><a name="Typemaps_nn51"></a>10.13 Where to go for more information?</H2>
|
||||||
|
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|
|
||||||
|
|
@ -55,11 +55,11 @@ Usage within the Unix like environments MinGW and Cygwin is also detailed.
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
SWIG does not come with the usual Windows type installation program, however it is quite easy to get started. The main steps are:
|
SWIG does not come with the usual Windows type installation program, however it is quite easy to get started. The main steps are:
|
||||||
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Download the swigwin zip package from the <a href="http://www.swig.org">SWIG website</a> and unzip into a directory. This is all that needs downloading for the Windows platform.
|
<li>Download the swigwin zip package from the <a href="http://www.swig.org">SWIG website</a> and unzip into a directory. This is all that needs downloading for the Windows platform.
|
||||||
<li>Set environment variables as described in the <a href="#examples">SWIG Windows Examples</a> section in order to run examples using Visual C++.
|
<li>Set environment variables as described in the <a href="#examples">SWIG Windows Examples</a> section in order to run examples using Visual C++.
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
|
||||||
|
|
||||||
<H3><a name="Windows_nn3"></a>3.1.1 Windows Executable</H3>
|
<H3><a name="Windows_nn3"></a>3.1.1 Windows Executable</H3>
|
||||||
|
|
||||||
|
|
@ -94,7 +94,7 @@ Most languages require some environment variables to be set <b>before</b> runnin
|
||||||
Note that Visual C++ must be re-started to pick up any changes in environment variables.
|
Note that Visual C++ must be re-started to pick up any changes in environment variables.
|
||||||
Open up an example .dsp file, Visual C++ will create a workspace for you (.dsw file).
|
Open up an example .dsp file, Visual C++ will create a workspace for you (.dsw file).
|
||||||
Ensure the Release build is selected then do a Rebuild All from the Build menu.
|
Ensure the Release build is selected then do a Rebuild All from the Build menu.
|
||||||
The required environment variables are displayed with their current values. <p>
|
The required environment variables are displayed with their current values.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The list of required environment variables for each module language is also listed below.
|
The list of required environment variables for each module language is also listed below.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue