html validation fixes and chapter renumbering

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9206 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2006-07-07 21:54:23 +00:00
commit c02f6f4267
7 changed files with 188 additions and 109 deletions

View file

@ -22,7 +22,7 @@
<ul> <ul>
<li><a href="#csharp_directors_example">Directors example</a> <li><a href="#csharp_directors_example">Directors example</a>
<li><a href="#csharp_directors_implementation">Directors implementation</a> <li><a href="#csharp_directors_implementation">Directors implementation</a>
<li><a href="#csharp_typemap_examples">Director caveats</a> <li><a href="#csharp_director_caveats">Director caveats</a>
</ul> </ul>
<li><a href="#csharp_typemap_examples">C# Typemap examples</a> <li><a href="#csharp_typemap_examples">C# Typemap examples</a>
<ul> <ul>
@ -909,7 +909,7 @@ Essentially, it enables unmanaged C++ code to call back into managed code for vi
<p> <p>
The following sections provide information on the C# director implementation and contain most of the information required to use the C# directors. The following sections provide information on the C# director implementation and contain most of the information required to use the C# directors.
However, the <a href=Java.html#java_directors>Java directors</a> section should also be read in order to gain more insight into directors. However, the <a href="Java.html#java_directors">Java directors</a> section should also be read in order to gain more insight into directors.
</p> </p>
<H3><a name="csharp_directors_example"></a>17.4.1 Directors example</H3> <H3><a name="csharp_directors_example"></a>17.4.1 Directors example</H3>
@ -1158,7 +1158,7 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Base_director_connect(void *objarg,
SwigDirector_Base::SWIG_Callback0_t callback0, SwigDirector_Base::SWIG_Callback0_t callback0,
SwigDirector_Base::SWIG_Callback1_t callback1) { SwigDirector_Base::SWIG_Callback1_t callback1) {
Base *obj = (Base *)objarg; Base *obj = (Base *)objarg;
SwigDirector_Base *director = dynamic_cast<SwigDirector_Base *>(obj); SwigDirector_Base *director = dynamic_cast&lt;SwigDirector_Base *&gt;(obj);
if (director) { if (director) {
director-&gt;swig_connect_director(callback0, callback1); director-&gt;swig_connect_director(callback0, callback1);
} }
@ -1207,7 +1207,7 @@ void SwigDirector_Base::BaseBoolMethod(Base const &amp;b, bool flag) {
Base::BaseBoolMethod(b,flag); Base::BaseBoolMethod(b,flag);
return; return;
} else { } else {
jb = (Base *) &b; jb = (Base *) &amp;b;
jflag = flag; jflag = flag;
swig_callbackBaseBoolMethod(jb, jflag); swig_callbackBaseBoolMethod(jb, jflag);
} }
@ -1215,7 +1215,7 @@ void SwigDirector_Base::BaseBoolMethod(Base const &amp;b, bool flag) {
</pre> </pre>
</div> </div>
<H3><a name="csharp_typemap_examples"></a>17.4.3 Director caveats</H3> <H3><a name="csharp_director_caveats"></a>17.4.3 Director caveats</H3>
<p> <p>

View file

@ -163,7 +163,7 @@
<li><a href="SWIG.html#SWIG_structure_data_members">Structure data members</a> <li><a href="SWIG.html#SWIG_structure_data_members">Structure data members</a>
<li><a href="SWIG.html#SWIG_nn36">C constructors and destructors </a> <li><a href="SWIG.html#SWIG_nn36">C constructors and destructors </a>
<li><a href="SWIG.html#SWIG_adding_member_functions">Adding member functions to C structures</a> <li><a href="SWIG.html#SWIG_adding_member_functions">Adding member functions to C structures</a>
<li><a href="SWIG.html#SWIG_nn38">Nested structures</a> <li><a href="SWIG.html#SWIG_nested_structs">Nested structures</a>
<li><a href="SWIG.html#SWIG_nn39">Other things to note about structure wrapping</a> <li><a href="SWIG.html#SWIG_nn39">Other things to note about structure wrapping</a>
</ul> </ul>
<li><a href="SWIG.html#SWIG_nn40">Code Insertion</a> <li><a href="SWIG.html#SWIG_nn40">Code Insertion</a>
@ -194,6 +194,12 @@
<li><a href="SWIGPlus.html#SWIGPlus_nn3">Approach</a> <li><a href="SWIGPlus.html#SWIGPlus_nn3">Approach</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn4">Supported C++ features</a> <li><a href="SWIGPlus.html#SWIGPlus_nn4">Supported C++ features</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn5">Command line options and compilation</a> <li><a href="SWIGPlus.html#SWIGPlus_nn5">Command line options and compilation</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn38">Proxy classes</a>
<ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn39">Construction of proxy classes</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn40">Resource management in proxies</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn41">Language specific details</a>
</ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn6">Simple C++ wrapping</a> <li><a href="SWIGPlus.html#SWIGPlus_nn6">Simple C++ wrapping</a>
<ul> <ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn7">Constructors and destructors</a> <li><a href="SWIGPlus.html#SWIGPlus_nn7">Constructors and destructors</a>
@ -211,8 +217,10 @@
<li><a href="SWIGPlus.html#SWIGPlus_nn18">References and pointers</a> <li><a href="SWIGPlus.html#SWIGPlus_nn18">References and pointers</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn19">Pass and return by value</a> <li><a href="SWIGPlus.html#SWIGPlus_nn19">Pass and return by value</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn20">Inheritance</a> <li><a href="SWIGPlus.html#SWIGPlus_nn20">Inheritance</a>
<ul>
<li><a href="SWIGPlus.html#SWIGPlus_explicitcall">Explicit base class method calls</a>
</ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn21">A brief discussion of multiple inheritance, pointers, and type checking</a> <li><a href="SWIGPlus.html#SWIGPlus_nn21">A brief discussion of multiple inheritance, pointers, and type checking</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn22">Renaming</a>
<li><a href="SWIGPlus.html#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a> <li><a href="SWIGPlus.html#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a>
<ul> <ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn24">Dispatch function generation</a> <li><a href="SWIGPlus.html#SWIGPlus_nn24">Dispatch function generation</a>
@ -229,14 +237,8 @@
<li><a href="SWIGPlus.html#SWIGPlus_nn33">Pointers to Members</a> <li><a href="SWIGPlus.html#SWIGPlus_nn33">Pointers to Members</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn34">Smart pointers and operator-&gt;()</a> <li><a href="SWIGPlus.html#SWIGPlus_nn34">Smart pointers and operator-&gt;()</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn35">Using declarations and inheritance</a> <li><a href="SWIGPlus.html#SWIGPlus_nn35">Using declarations and inheritance</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn36">Partial class definitions</a> <li><a href="SWIGPlus.html#SWIGPlus_nested_classes">Nested classes</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn37">A brief rant about const-correctness</a> <li><a href="SWIGPlus.html#SWIGPlus_nn37">A brief rant about const-correctness</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn38">Proxy classes</a>
<ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn39">Construction of proxy classes</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn40">Resource management in proxies</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn41">Language specific details</a>
</ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn42">Where to go for more information</a> <li><a href="SWIGPlus.html#SWIGPlus_nn42">Where to go for more information</a>
</ul> </ul>
</div> </div>
@ -409,6 +411,7 @@
<li><a href="Customization.html#ownership">Object ownership and %newobject</a> <li><a href="Customization.html#ownership">Object ownership and %newobject</a>
<li><a href="Customization.html#features">Features and the %feature directive</a> <li><a href="Customization.html#features">Features and the %feature directive</a>
<ul> <ul>
<li><a href="Customization.html#Customization_feature_attributes">Feature attributes</a>
<li><a href="Customization.html#Customization_feature_flags">Feature flags</a> <li><a href="Customization.html#Customization_feature_flags">Feature flags</a>
<li><a href="Customization.html#Customization_clearing_features">Clearing features</a> <li><a href="Customization.html#Customization_clearing_features">Clearing features</a>
<li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a> <li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a>
@ -455,7 +458,7 @@
<div class="sectiontoc"> <div class="sectiontoc">
<ul> <ul>
<li><a href="Warnings.html#Warnings_nn2">Introduction</a> <li><a href="Warnings.html#Warnings_nn2">Introduction</a>
<li><a href="Warnings.html#Warnings_nn3">Warning message suppression</a> <li><a href="Warnings.html#Warnings_suppression">Warning message suppression</a>
<li><a href="Warnings.html#Warnings_nn4">Enabling additional warnings</a> <li><a href="Warnings.html#Warnings_nn4">Enabling additional warnings</a>
<li><a href="Warnings.html#Warnings_nn5">Issuing a warning message</a> <li><a href="Warnings.html#Warnings_nn5">Issuing a warning message</a>
<li><a href="Warnings.html#Warnings_nn6">Commentary</a> <li><a href="Warnings.html#Warnings_nn6">Commentary</a>
@ -592,7 +595,7 @@
<ul> <ul>
<li><a href="CSharp.html#csharp_directors_example">Directors example</a> <li><a href="CSharp.html#csharp_directors_example">Directors example</a>
<li><a href="CSharp.html#csharp_directors_implementation">Directors implementation</a> <li><a href="CSharp.html#csharp_directors_implementation">Directors implementation</a>
<li><a href="CSharp.html#csharp_typemap_examples">Director caveats</a> <li><a href="CSharp.html#csharp_director_caveats">Director caveats</a>
</ul> </ul>
<li><a href="CSharp.html#csharp_typemap_examples">C# Typemap examples</a> <li><a href="CSharp.html#csharp_typemap_examples">C# Typemap examples</a>
<ul> <ul>
@ -634,6 +637,9 @@
<li><a href="Chicken.html#collection">Garbage collection</a> <li><a href="Chicken.html#collection">Garbage collection</a>
</ul> </ul>
<li><a href="Chicken.html#Chicken_nn18">Unsupported features and known problems</a> <li><a href="Chicken.html#Chicken_nn18">Unsupported features and known problems</a>
<ul>
<li><a href="Chicken.html#Chicken_nn19">TinyCLOS problems with Chicken version &lt;= 1.92</a>
</ul>
</ul> </ul>
</div> </div>
<!-- INDEX --> <!-- INDEX -->
@ -752,6 +758,7 @@
<li><a href="Java.html#java_directors_classes">Director classes</a> <li><a href="Java.html#java_directors_classes">Director classes</a>
<li><a href="Java.html#java_directors_overhead">Overhead and code bloat</a> <li><a href="Java.html#java_directors_overhead">Overhead and code bloat</a>
<li><a href="Java.html#java_directors_example">Simple directors example</a> <li><a href="Java.html#java_directors_example">Simple directors example</a>
<li><a href="Java.html#java_directors_explicitcall">Director base method calls</a>
</ul> </ul>
<li><a href="Java.html#common_customization">Common customization features</a> <li><a href="Java.html#common_customization">Common customization features</a>
<ul> <ul>
@ -776,7 +783,7 @@
<li><a href="Java.html#typemaps_c_to_java_types">Typemaps for mapping C/C++ types to Java types</a> <li><a href="Java.html#typemaps_c_to_java_types">Typemaps for mapping C/C++ types to Java types</a>
<li><a href="Java.html#typemap_attributes">Java typemap attributes</a> <li><a href="Java.html#typemap_attributes">Java typemap attributes</a>
<li><a href="Java.html#special_variables">Java special variables</a> <li><a href="Java.html#special_variables">Java special variables</a>
<li><a href="Java.html#typemaps_for_c_and_c++">Typemaps for both C and C++ compilation</a> <li><a href="Java.html#typemaps_for_c_and_cpp">Typemaps for both C and C++ compilation</a>
<li><a href="Java.html#java_code_typemaps">Java code typemaps</a> <li><a href="Java.html#java_code_typemaps">Java code typemaps</a>
<li><a href="Java.html#java_directors_typemaps">Director specific typemaps</a> <li><a href="Java.html#java_directors_typemaps">Director specific typemaps</a>
</ul> </ul>
@ -1345,7 +1352,22 @@
</div> </div>
<!-- INDEX --> <!-- INDEX -->
<h3><a href="Extending.html#Extending">32 Extending SWIG to support new languages</a></h3> <h3><a href="R.html#R">32 SWIG and R</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="R.html#R_nn2">Bugs</a>
<li><a href="R.html#R_nn3">Using R and SWIG</a>
<li><a href="R.html#R_nn4">General policy</a>
<li><a href="R.html#R_nn5">Language conventions</a>
<li><a href="R.html#R_nn6">C++ classes</a>
<li><a href="R.html#R_nn7">Enumerations</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Extending.html#Extending">33 Extending SWIG to support new languages</a></h3>
<!-- INDEX --> <!-- INDEX -->
<div class="sectiontoc"> <div class="sectiontoc">

View file

@ -22,6 +22,7 @@
<li><a href="#ownership">Object ownership and %newobject</a> <li><a href="#ownership">Object ownership and %newobject</a>
<li><a href="#features">Features and the %feature directive</a> <li><a href="#features">Features and the %feature directive</a>
<ul> <ul>
<li><a href="#Customization_feature_attributes">Feature attributes</a>
<li><a href="#Customization_feature_flags">Feature flags</a> <li><a href="#Customization_feature_flags">Feature flags</a>
<li><a href="#Customization_clearing_features">Clearing features</a> <li><a href="#Customization_clearing_features">Clearing features</a>
<li><a href="#Customization_features_default_args">Features and default arguments</a> <li><a href="#Customization_features_default_args">Features and default arguments</a>
@ -709,7 +710,8 @@ The following are all equivalent:
The syntax in the first variation will generate the <tt>{ }</tt> delimiters used whereas the other variations will not. The syntax in the first variation will generate the <tt>{ }</tt> delimiters used whereas the other variations will not.
</p> </p>
<H3><a name="Customization_feature_attributes"></a>Feature attributes</H3> <H3><a name="Customization_feature_attributes"></a>11.3.1 Feature attributes</H3>
<p> <p>
The <tt>%feature</tt> directive also accepts XML style attributes in the same way that typemaps do. The <tt>%feature</tt> directive also accepts XML style attributes in the same way that typemaps do.
@ -749,7 +751,7 @@ In the following example, <tt>MyExceptionClass</tt> is the name of the Java clas
Further details can be obtained from the <a href="Java.html#exception_handling">Java exception handling</a> section. Further details can be obtained from the <a href="Java.html#exception_handling">Java exception handling</a> section.
</p> </p>
<H3><a name="Customization_feature_flags"></a>11.3.1 Feature flags</H3> <H3><a name="Customization_feature_flags"></a>11.3.2 Feature flags</H3>
<p> <p>
@ -847,7 +849,7 @@ in the <tt>swig.swg</tt> Library file. The following shows the alternative synta
The concept of clearing features is discussed next. The concept of clearing features is discussed next.
</p> </p>
<H3><a name="Customization_clearing_features"></a>11.3.2 Clearing features</H3> <H3><a name="Customization_clearing_features"></a>11.3.3 Clearing features</H3>
<p> <p>
@ -926,7 +928,7 @@ but this will:
</pre> </pre>
</div> </div>
<H3><a name="Customization_features_default_args"></a>11.3.3 Features and default arguments</H3> <H3><a name="Customization_features_default_args"></a>11.3.4 Features and default arguments</H3>
<p> <p>
@ -1001,7 +1003,7 @@ specifying or not specifying default arguments in a feature is not applicable as
in SWIG-1.3.23 when the approach to wrapping methods with default arguments was changed. in SWIG-1.3.23 when the approach to wrapping methods with default arguments was changed.
</p> </p>
<H3><a name="features_example"></a>11.3.4 Feature example</H3> <H3><a name="features_example"></a>11.3.5 Feature example</H3>
<p> <p>

View file

@ -6,7 +6,7 @@
</head> </head>
<body bgcolor="#ffffff"> <body bgcolor="#ffffff">
<H1><a name="Extending"></a>32 Extending SWIG to support new languages</H1> <H1><a name="Extending"></a>33 Extending SWIG to support new languages</H1>
<!-- INDEX --> <!-- INDEX -->
<div class="sectiontoc"> <div class="sectiontoc">
<ul> <ul>
@ -72,7 +72,7 @@
<H2><a name="Extending_nn2"></a>32.1 Introduction</H2> <H2><a name="Extending_nn2"></a>33.1 Introduction</H2>
<p> <p>
@ -88,7 +88,7 @@ Also, this chapter is not meant to be a hand-holding tutorial. As a starting po
you should probably look at one of SWIG's existing modules. you should probably look at one of SWIG's existing modules.
</p> </p>
<H2><a name="Extending_nn3"></a>32.2 Prerequisites</H2> <H2><a name="Extending_nn3"></a>33.2 Prerequisites</H2>
<p> <p>
@ -118,7 +118,7 @@ obvious, but almost all SWIG directives as well as the low-level generation of
wrapper code are driven by C++ datatypes. wrapper code are driven by C++ datatypes.
</p> </p>
<H2><a name="Extending_nn4"></a>32.3 The Big Picture</H2> <H2><a name="Extending_nn4"></a>33.3 The Big Picture</H2>
<p> <p>
@ -155,7 +155,7 @@ role in making the system work. For example, both typemaps and declaration anno
based on pattern matching and interact heavily with the underlying type system. based on pattern matching and interact heavily with the underlying type system.
</p> </p>
<H2><a name="Extending_nn5"></a>32.4 Execution Model</H2> <H2><a name="Extending_nn5"></a>33.4 Execution Model</H2>
<p> <p>
@ -200,7 +200,7 @@ latter stage of compilation.
The next few sections briefly describe some of these stages. The next few sections briefly describe some of these stages.
</p> </p>
<H3><a name="Extending_nn6"></a>32.4.1 Preprocessing</H3> <H3><a name="Extending_nn6"></a>33.4.1 Preprocessing</H3>
<p> <p>
@ -280,7 +280,7 @@ been expanded as well as everything else that goes into the low-level
construction of the wrapper code. construction of the wrapper code.
</p> </p>
<H3><a name="Extending_nn7"></a>32.4.2 Parsing</H3> <H3><a name="Extending_nn7"></a>33.4.2 Parsing</H3>
<p> <p>
@ -381,7 +381,7 @@ returning a <tt>foo</tt> and taking types <tt>a</tt> and <tt>b</tt> as
arguments). arguments).
</p> </p>
<H3><a name="Extending_nn8"></a>32.4.3 Parse Trees</H3> <H3><a name="Extending_nn8"></a>33.4.3 Parse Trees</H3>
<p> <p>
@ -634,7 +634,7 @@ $ swig -c++ -python -dump_module example.i
</pre> </pre>
</div> </div>
<H3><a name="Extending_nn9"></a>32.4.4 Attribute namespaces</H3> <H3><a name="Extending_nn9"></a>33.4.4 Attribute namespaces</H3>
<p> <p>
@ -653,7 +653,7 @@ that matches the name of the target language. For example, <tt>python:foo</tt>
<tt>perl:foo</tt>. <tt>perl:foo</tt>.
</p> </p>
<H3><a name="Extending_nn10"></a>32.4.5 Symbol Tables</H3> <H3><a name="Extending_nn10"></a>33.4.5 Symbol Tables</H3>
<p> <p>
@ -741,7 +741,7 @@ example.i:5. Previous declaration is foo_i(int )
</pre> </pre>
</div> </div>
<H3><a name="Extending_nn11"></a>32.4.6 The %feature directive</H3> <H3><a name="Extending_nn11"></a>33.4.6 The %feature directive</H3>
<p> <p>
@ -797,7 +797,7 @@ For example, the exception code above is simply
stored without any modifications. stored without any modifications.
</p> </p>
<H3><a name="Extending_nn12"></a>32.4.7 Code Generation</H3> <H3><a name="Extending_nn12"></a>33.4.7 Code Generation</H3>
<p> <p>
@ -919,7 +919,7 @@ public :
The role of these functions is described shortly. The role of these functions is described shortly.
</p> </p>
<H3><a name="Extending_nn13"></a>32.4.8 SWIG and XML</H3> <H3><a name="Extending_nn13"></a>33.4.8 SWIG and XML</H3>
<p> <p>
@ -932,7 +932,7 @@ internal data structures, it may be useful to keep XML in the back of
your mind as a model. your mind as a model.
</p> </p>
<H2><a name="Extending_nn14"></a>32.5 Primitive Data Structures</H2> <H2><a name="Extending_nn14"></a>33.5 Primitive Data Structures</H2>
<p> <p>
@ -978,7 +978,7 @@ typedef Hash Typetab;
</pre> </pre>
</div> </div>
<H3><a name="Extending_nn15"></a>32.5.1 Strings</H3> <H3><a name="Extending_nn15"></a>33.5.1 Strings</H3>
<p> <p>
@ -1119,7 +1119,7 @@ Returns the number of replacements made (if any).
</div> </div>
<H3><a name="Extending_nn16"></a>32.5.2 Hashes</H3> <H3><a name="Extending_nn16"></a>33.5.2 Hashes</H3>
<p> <p>
@ -1196,7 +1196,7 @@ Returns the list of hash table keys.
</div> </div>
<H3><a name="Extending_nn17"></a>32.5.3 Lists</H3> <H3><a name="Extending_nn17"></a>33.5.3 Lists</H3>
<p> <p>
@ -1285,7 +1285,7 @@ If <tt>t</tt> is not a standard object, it is assumed to be a <tt>char *</tt>
and is used to create a String object. and is used to create a String object.
</div> </div>
<H3><a name="Extending_nn18"></a>32.5.4 Common operations</H3> <H3><a name="Extending_nn18"></a>33.5.4 Common operations</H3>
The following operations are applicable to all datatypes. The following operations are applicable to all datatypes.
@ -1340,7 +1340,7 @@ objects and report errors.
Gets the line number associated with <tt>x</tt>. Gets the line number associated with <tt>x</tt>.
</div> </div>
<H3><a name="Extending_nn19"></a>32.5.5 Iterating over Lists and Hashes</H3> <H3><a name="Extending_nn19"></a>33.5.5 Iterating over Lists and Hashes</H3>
To iterate over the elements of a list or a hash table, the following functions are used: To iterate over the elements of a list or a hash table, the following functions are used:
@ -1385,7 +1385,7 @@ for (j = First(j); j.item; j= Next(j)) {
</div> </div>
<H3><a name="Extending_nn20"></a>32.5.6 I/O</H3> <H3><a name="Extending_nn20"></a>33.5.6 I/O</H3>
Special I/O functions are used for all internal I/O. These operations Special I/O functions are used for all internal I/O. These operations
@ -1521,7 +1521,7 @@ Similarly, the preprocessor and parser all operate on string-files.
</div> </div>
<H2><a name="Extending_nn21"></a>32.6 Navigating and manipulating parse trees</H2> <H2><a name="Extending_nn21"></a>33.6 Navigating and manipulating parse trees</H2>
Parse trees are built as collections of hash tables. Each node is a hash table in which Parse trees are built as collections of hash tables. Each node is a hash table in which
@ -1655,7 +1655,7 @@ Deletes a node from the parse tree. Deletion reconnects siblings and properly u
the parent so that sibling nodes are unaffected. the parent so that sibling nodes are unaffected.
</div> </div>
<H2><a name="Extending_nn22"></a>32.7 Working with attributes</H2> <H2><a name="Extending_nn22"></a>33.7 Working with attributes</H2>
<p> <p>
@ -1772,7 +1772,7 @@ the attribute is optional. <tt>Swig_restore()</tt> must always be called after
function. function.
</div> </div>
<H2><a name="Extending_nn23"></a>32.8 Type system</H2> <H2><a name="Extending_nn23"></a>33.8 Type system</H2>
<p> <p>
@ -1781,7 +1781,7 @@ pointers, references, and pointers to members. A detailed discussion of
type theory is impossible here. However, let's cover the highlights. type theory is impossible here. However, let's cover the highlights.
</p> </p>
<H3><a name="Extending_nn24"></a>32.8.1 String encoding of types</H3> <H3><a name="Extending_nn24"></a>33.8.1 String encoding of types</H3>
<p> <p>
@ -1882,7 +1882,7 @@ make the final type, the two parts are just joined together using
string concatenation. string concatenation.
</p> </p>
<H3><a name="Extending_nn25"></a>32.8.2 Type construction</H3> <H3><a name="Extending_nn25"></a>33.8.2 Type construction</H3>
<p> <p>
@ -2051,7 +2051,7 @@ Returns the prefix of a type. For example, if <tt>ty</tt> is
<tt>ty</tt> is unmodified. <tt>ty</tt> is unmodified.
</div> </div>
<H3><a name="Extending_nn26"></a>32.8.3 Type tests</H3> <H3><a name="Extending_nn26"></a>33.8.3 Type tests</H3>
<p> <p>
@ -2138,7 +2138,7 @@ Checks if <tt>ty</tt> is a varargs type.
Checks if <tt>ty</tt> is a templatized type. Checks if <tt>ty</tt> is a templatized type.
</div> </div>
<H3><a name="Extending_nn27"></a>32.8.4 Typedef and inheritance</H3> <H3><a name="Extending_nn27"></a>33.8.4 Typedef and inheritance</H3>
<p> <p>
@ -2240,7 +2240,7 @@ Fully reduces <tt>ty</tt> according to typedef rules. Resulting datatype
will consist only of primitive typenames. will consist only of primitive typenames.
</div> </div>
<H3><a name="Extending_nn28"></a>32.8.5 Lvalues</H3> <H3><a name="Extending_nn28"></a>33.8.5 Lvalues</H3>
<p> <p>
@ -2277,7 +2277,7 @@ Literal y; // type = 'Literal', ltype='p.char'
</pre> </pre>
</div> </div>
<H3><a name="Extending_nn29"></a>32.8.6 Output functions</H3> <H3><a name="Extending_nn29"></a>33.8.6 Output functions</H3>
<p> <p>
@ -2339,7 +2339,7 @@ SWIG, but is most commonly associated with type-descriptor objects
that appear in wrappers (e.g., <tt>SWIGTYPE_p_double</tt>). that appear in wrappers (e.g., <tt>SWIGTYPE_p_double</tt>).
</div> </div>
<H2><a name="Extending_nn30"></a>32.9 Parameters</H2> <H2><a name="Extending_nn30"></a>33.9 Parameters</H2>
<p> <p>
@ -2438,7 +2438,7 @@ included. Used to emit prototypes.
Returns the number of required (non-optional) arguments in <tt>p</tt>. Returns the number of required (non-optional) arguments in <tt>p</tt>.
</div> </div>
<H2><a name="Extending_nn31"></a>32.10 Writing a Language Module</H2> <H2><a name="Extending_nn31"></a>33.10 Writing a Language Module</H2>
<p> <p>
@ -2453,7 +2453,7 @@ describes the creation of a minimal Python module. You should be able to extra
this to other languages. this to other languages.
</p> </p>
<H3><a name="Extending_nn32"></a>32.10.1 Execution model</H3> <H3><a name="Extending_nn32"></a>33.10.1 Execution model</H3>
<p> <p>
@ -2463,7 +2463,7 @@ the parsing of command line options, all aspects of code generation are controll
different methods of the <tt>Language</tt> that must be defined by your module. different methods of the <tt>Language</tt> that must be defined by your module.
</p> </p>
<H3><a name="Extending_nn33"></a>32.10.2 Starting out</H3> <H3><a name="Extending_nn33"></a>33.10.2 Starting out</H3>
<p> <p>
@ -2571,7 +2571,7 @@ that activates your module. For example, <tt>swig -python foo.i</tt>. The
messages from your new module should appear. messages from your new module should appear.
</p> </p>
<H3><a name="Extending_nn34"></a>32.10.3 Command line options</H3> <H3><a name="Extending_nn34"></a>33.10.3 Command line options</H3>
<p> <p>
@ -2630,7 +2630,7 @@ to mark the option as valid. If you forget to do this, SWIG will terminate wit
unrecognized command line option error. unrecognized command line option error.
</p> </p>
<H3><a name="Extending_nn35"></a>32.10.4 Configuration and preprocessing</H3> <H3><a name="Extending_nn35"></a>33.10.4 Configuration and preprocessing</H3>
<p> <p>
@ -2679,7 +2679,7 @@ an implementation file <tt>python.cxx</tt> and a configuration file
<tt>python.swg</tt>. <tt>python.swg</tt>.
</p> </p>
<H3><a name="Extending_nn36"></a>32.10.5 Entry point to code generation</H3> <H3><a name="Extending_nn36"></a>33.10.5 Entry point to code generation</H3>
<p> <p>
@ -2737,7 +2737,7 @@ int Python::top(Node *n) {
</pre> </pre>
</div> </div>
<H3><a name="Extending_nn37"></a>32.10.6 Module I/O and wrapper skeleton</H3> <H3><a name="Extending_nn37"></a>33.10.6 Module I/O and wrapper skeleton</H3>
<!-- please report bugs in this section to mgossage --> <!-- please report bugs in this section to mgossage -->
@ -2879,7 +2879,7 @@ functionWrapper : void Shape_y_set(Shape *self,double y)
</pre> </pre>
</div> </div>
<H3><a name="Extending_nn38"></a>32.10.7 Low-level code generators</H3> <H3><a name="Extending_nn38"></a>33.10.7 Low-level code generators</H3>
<!-- please report bugs in this section to mgossage --> <!-- please report bugs in this section to mgossage -->
@ -3033,7 +3033,7 @@ but without the typemaps, there is still work to do.
</p> </p>
<H3><a name="Extending_nn39"></a>32.10.8 Configuration files</H3> <H3><a name="Extending_nn39"></a>33.10.8 Configuration files</H3>
<!-- please report bugs in this section to ttn --> <!-- please report bugs in this section to ttn -->
@ -3183,7 +3183,7 @@ politely displays the ignoring language message.
</dl> </dl>
<H3><a name="Extending_nn40"></a>32.10.9 Runtime support</H3> <H3><a name="Extending_nn40"></a>33.10.9 Runtime support</H3>
<p> <p>
@ -3192,7 +3192,7 @@ Discuss the kinds of functions typically needed for SWIG runtime support (e.g.
the SWIG files that implement those functions. the SWIG files that implement those functions.
</p> </p>
<H3><a name="Extending_nn41"></a>32.10.10 Standard library files</H3> <H3><a name="Extending_nn41"></a>33.10.10 Standard library files</H3>
<p> <p>
@ -3211,7 +3211,7 @@ The following are the minimum that are usually supported:
Please copy these and modify for any new language. Please copy these and modify for any new language.
</p> </p>
<H3><a name="Extending_nn42"></a>32.10.11 Examples and test cases</H3> <H3><a name="Extending_nn42"></a>33.10.11 Examples and test cases</H3>
<p> <p>
@ -3240,7 +3240,7 @@ during this process, see the section on <a href="#n37a">configuration
files</a>. files</a>.
</p> </p>
<H3><a name="Extending_nn43"></a>32.10.12 Documentation</H3> <H3><a name="Extending_nn43"></a>33.10.12 Documentation</H3>
<p> <p>
@ -3272,7 +3272,7 @@ Some topics that you'll want to be sure to address include:
if available. if available.
</ul> </ul>
<H3><a name="Extending_prerequisites"></a>32.10.13 Prerequisites for adding a new language module to the SWIG distribution</H3> <H3><a name="Extending_prerequisites"></a>33.10.13 Prerequisites for adding a new language module to the SWIG distribution</H3>
<p> <p>
@ -3327,13 +3327,13 @@ the existing tests.
</p> </p>
<H2><a name="Extending_nn44"></a>32.11 Typemaps</H2> <H2><a name="Extending_nn44"></a>33.11 Typemaps</H2>
<H3><a name="Extending_nn45"></a>32.11.1 Proxy classes</H3> <H3><a name="Extending_nn45"></a>33.11.1 Proxy classes</H3>
<H2><a name="Extending_nn46"></a>32.12 Guide to parse tree nodes</H2> <H2><a name="Extending_nn46"></a>33.12 Guide to parse tree nodes</H2>
<p> <p>

View file

@ -83,6 +83,7 @@
<li><a href="#java_directors_classes">Director classes</a> <li><a href="#java_directors_classes">Director classes</a>
<li><a href="#java_directors_overhead">Overhead and code bloat</a> <li><a href="#java_directors_overhead">Overhead and code bloat</a>
<li><a href="#java_directors_example">Simple directors example</a> <li><a href="#java_directors_example">Simple directors example</a>
<li><a href="#java_directors_explicitcall">Director base method calls</a>
</ul> </ul>
<li><a href="#common_customization">Common customization features</a> <li><a href="#common_customization">Common customization features</a>
<ul> <ul>
@ -107,7 +108,7 @@
<li><a href="#typemaps_c_to_java_types">Typemaps for mapping C/C++ types to Java types</a> <li><a href="#typemaps_c_to_java_types">Typemaps for mapping C/C++ types to Java types</a>
<li><a href="#typemap_attributes">Java typemap attributes</a> <li><a href="#typemap_attributes">Java typemap attributes</a>
<li><a href="#special_variables">Java special variables</a> <li><a href="#special_variables">Java special variables</a>
<li><a href="#typemaps_for_c_and_c++">Typemaps for both C and C++ compilation</a> <li><a href="#typemaps_for_c_and_cpp">Typemaps for both C and C++ compilation</a>
<li><a href="#java_code_typemaps">Java code typemaps</a> <li><a href="#java_code_typemaps">Java code typemaps</a>
<li><a href="#java_directors_typemaps">Director specific typemaps</a> <li><a href="#java_directors_typemaps">Director specific typemaps</a>
</ul> </ul>
@ -3203,7 +3204,9 @@ directorDerived::upcall_method() invoked.
</pre> </pre>
</div> </div>
<H3><a name="java_directors_explicitcall"></a>Director base method calls</H3> <H3><a name="java_directors_explicitcall"></a>20.5.5 Director base method calls</H3>
<p> <p>
There is a limitation with Java directors when calling a base class method from an overridden method. There is a limitation with Java directors when calling a base class method from an overridden method.
A <tt>java.lang.StackOverflowError</tt> exception will be thrown as the code makes recursive calls from the C++ layer A <tt>java.lang.StackOverflowError</tt> exception will be thrown as the code makes recursive calls from the C++ layer
@ -4791,7 +4794,7 @@ This special variable expands to the intermediary class name. Usually this is th
unless the jniclassname attribute is specified in the <a href="Java.html#java_module_directive">%module directive</a>. unless the jniclassname attribute is specified in the <a href="Java.html#java_module_directive">%module directive</a>.
</p> </p>
<H3><a name="typemaps_for_c_and_c++"></a>20.8.8 Typemaps for both C and C++ compilation</H3> <H3><a name="typemaps_for_c_and_cpp"></a>20.8.8 Typemaps for both C and C++ compilation</H3>
<p> <p>

View file

@ -6,7 +6,21 @@
</head> </head>
<body bgcolor="#ffffff"> <body bgcolor="#ffffff">
<H1>SWIG and R</H1> <H1><a name="R_nn1"></a>32 SWIG and R</H1>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="#R_nn2">Bugs</a>
<li><a href="#R_nn3">Using R and SWIG</a>
<li><a href="#R_nn4">General policy</a>
<li><a href="#R_nn5">Language conventions</a>
<li><a href="#R_nn6">C++ classes</a>
<li><a href="#R_nn7">Enumerations</a>
</ul>
</div>
<!-- INDEX -->
<p> <p>
R is a GPL'ed open source statistical and plotting environment. R is a GPL'ed open source statistical and plotting environment.
@ -18,20 +32,27 @@ experimental. Not all features have been implemented and the API is
not stable. not stable.
</p> </p>
<H2>Bugs</H2> <H2><a name="R_nn2"></a>32.1 Bugs</H2>
<p> <p>
Currently the following features are not implemented or broken: Currently the following features are not implemented or broken:
</p>
<ul> <ul>
<li>Garbage collection of created objects <li>Garbage collection of created objects
<li>C Array wrappings <li>C Array wrappings
<li>tested on UNIX only, how well or badly it works on windows is not known <li>tested on UNIX only, how well or badly it works on windows is not known
</ul> </ul>
<H2>Using R and SWIG</H2> <H2><a name="R_nn3"></a>32.2 Using R and SWIG</H2>
<p> <p>
To use R and SWIG in C mode, execute the following commands where To use R and SWIG in C mode, execute the following commands where
example_func.c is the name of the file with the functions in them example_func.c is the name of the file with the functions in them
</p>
<div class="shell"> <div class="shell">
<pre> <pre>
swig -r -o example,c example.i swig -r -o example,c example.i
@ -39,7 +60,10 @@ PKG_LIBS="example_func.c" R CMD SHLIB example.c
</pre> </pre>
</div> </div>
<p>
The corresponding comments for C++ mode are The corresponding comments for C++ mode are
</p>
<div class="shell"> <div class="shell">
<pre> <pre>
swig -c++ -r -o example.cpp example.i swig -c++ -r -o example.cpp example.i
@ -47,6 +71,7 @@ PKG_LIBS="example_func.cxx" R CMD SHLIB example.cpp
</pre> </pre>
</div> </div>
<p>
Note that R is sensitive to the name of the file and to the file Note that R is sensitive to the name of the file and to the file
extension in C and C++ mode. The name of the wrapper file must be the extension in C and C++ mode. The name of the wrapper file must be the
name of the library. Also in C++ mode, the file extension must be cpp name of the library. Also in C++ mode, the file extension must be cpp
@ -57,35 +82,57 @@ rather than cxx for the R compile command to recognize it.
The commands produce two files. A dynamic shared object file called The commands produce two files. A dynamic shared object file called
example.so and an R wrapper file called example_wrap.S. To load these example.so and an R wrapper file called example_wrap.S. To load these
files, start up R and type in the following commands files, start up R and type in the following commands
</p>
<div class="shell"> <div class="shell">
<pre> <pre>
dyn.load('example.so') dyn.load('example.so')
source('example_wrap.S') source('example_wrap.S')
</pre> </pre>
</div>
<p>
These two files can be loaded in any order These two files can be loaded in any order
</p> </p>
<h2>General policy</h2> <H2><a name="R_nn4"></a>32.3 General policy</H2>
<p>
The general policy of the module is to treat the C/C++ as a basic The general policy of the module is to treat the C/C++ as a basic
wrapping over the underlying functions and rely on the R type system wrapping over the underlying functions and rely on the R type system
to provide R syntax. to provide R syntax.
</p>
<h2>Language conventions</h2> <H2><a name="R_nn5"></a>32.4 Language conventions</H2>
<p>
getitem and setitem use C++ conventions (i.e. zero based indices). [<- getitem and setitem use C++ conventions (i.e. zero based indices). [<-
and [ are overloaded to allow for R syntax (one based indices and and [ are overloaded to allow for R syntax (one based indices and
slices) slices)
</p>
<h2>C++ classes</h2> <H2><a name="R_nn6"></a>32.5 C++ classes</H2>
<p>
C++ objects are implemented as external pointer objects with the class C++ objects are implemented as external pointer objects with the class
being the mangled name of the class. The C++ classes are encapsulated being the mangled name of the class. The C++ classes are encapsulated
as an SEXP with an external pointer type. The class is the mangled as an SEXP with an external pointer type. The class is the mangled
name of the class. The nice thing about R is that is allows you to name of the class. The nice thing about R is that is allows you to
keep track of the pointer object which removes the necessity for a lot keep track of the pointer object which removes the necessity for a lot
of the proxy class baggage you see in other languages. of the proxy class baggage you see in other languages.
</p>
<h2>Enumerations</h2> <H2><a name="R_nn7"></a>32.6 Enumerations</H2>
<p>
enumerations are characters which are then converted back and forth to enumerations are characters which are then converted back and forth to
ints before calling the C routines. All of the enumeration code is ints before calling the C routines. All of the enumeration code is
done in R. done in R.
</p>
</body> </body>
</html> </html>

View file

@ -14,6 +14,12 @@
<li><a href="#SWIGPlus_nn3">Approach</a> <li><a href="#SWIGPlus_nn3">Approach</a>
<li><a href="#SWIGPlus_nn4">Supported C++ features</a> <li><a href="#SWIGPlus_nn4">Supported C++ features</a>
<li><a href="#SWIGPlus_nn5">Command line options and compilation</a> <li><a href="#SWIGPlus_nn5">Command line options and compilation</a>
<li><a href="#SWIGPlus_nn38">Proxy classes</a>
<ul>
<li><a href="#SWIGPlus_nn39">Construction of proxy classes</a>
<li><a href="#SWIGPlus_nn40">Resource management in proxies</a>
<li><a href="#SWIGPlus_nn41">Language specific details</a>
</ul>
<li><a href="#SWIGPlus_nn6">Simple C++ wrapping</a> <li><a href="#SWIGPlus_nn6">Simple C++ wrapping</a>
<ul> <ul>
<li><a href="#SWIGPlus_nn7">Constructors and destructors</a> <li><a href="#SWIGPlus_nn7">Constructors and destructors</a>
@ -31,8 +37,10 @@
<li><a href="#SWIGPlus_nn18">References and pointers</a> <li><a href="#SWIGPlus_nn18">References and pointers</a>
<li><a href="#SWIGPlus_nn19">Pass and return by value</a> <li><a href="#SWIGPlus_nn19">Pass and return by value</a>
<li><a href="#SWIGPlus_nn20">Inheritance</a> <li><a href="#SWIGPlus_nn20">Inheritance</a>
<ul>
<li><a href="#SWIGPlus_explicitcall">Explicit base class method calls</a>
</ul>
<li><a href="#SWIGPlus_nn21">A brief discussion of multiple inheritance, pointers, and type checking</a> <li><a href="#SWIGPlus_nn21">A brief discussion of multiple inheritance, pointers, and type checking</a>
<li><a href="#SWIGPlus_nn22">Renaming</a>
<li><a href="#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a> <li><a href="#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a>
<ul> <ul>
<li><a href="#SWIGPlus_nn24">Dispatch function generation</a> <li><a href="#SWIGPlus_nn24">Dispatch function generation</a>
@ -51,12 +59,6 @@
<li><a href="#SWIGPlus_nn35">Using declarations and inheritance</a> <li><a href="#SWIGPlus_nn35">Using declarations and inheritance</a>
<li><a href="#SWIGPlus_nested_classes">Nested classes</a> <li><a href="#SWIGPlus_nested_classes">Nested classes</a>
<li><a href="#SWIGPlus_nn37">A brief rant about const-correctness</a> <li><a href="#SWIGPlus_nn37">A brief rant about const-correctness</a>
<li><a href="#SWIGPlus_nn38">Proxy classes</a>
<ul>
<li><a href="#SWIGPlus_nn39">Construction of proxy classes</a>
<li><a href="#SWIGPlus_nn40">Resource management in proxies</a>
<li><a href="#SWIGPlus_nn41">Language specific details</a>
</ul>
<li><a href="#SWIGPlus_nn42">Where to go for more information</a> <li><a href="#SWIGPlus_nn42">Where to go for more information</a>
</ul> </ul>
</div> </div>
@ -228,7 +230,7 @@ details. The SWIG Wiki also has further details.
The <tt>-noproxy</tt> commandline option is recognised by many target languages and will generate just this The <tt>-noproxy</tt> commandline option is recognised by many target languages and will generate just this
interface as in earlier versions. interface as in earlier versions.
<H2><a name="SWIGPlus_nn38"></a>6.27 Proxy classes</H2> <H2><a name="SWIGPlus_nn38"></a>6.5 Proxy classes</H2>
<p> <p>
@ -240,7 +242,7 @@ wrapped by a Python proxy class. Or if you're building a Java module, each
C++ class is wrapped by a Java proxy class. C++ class is wrapped by a Java proxy class.
</p> </p>
<H3><a name="SWIGPlus_nn39"></a>6.27.1 Construction of proxy classes</H3> <H3><a name="SWIGPlus_nn39"></a>6.5.1 Construction of proxy classes</H3>
<p> <p>
@ -322,7 +324,7 @@ Whenever possible, proxies try to take advantage of language features that are s
might include operator overloading, exception handling, and other features. might include operator overloading, exception handling, and other features.
</p> </p>
<H3><a name="SWIGPlus_nn40"></a>6.27.2 Resource management in proxies</H3> <H3><a name="SWIGPlus_nn40"></a>6.5.2 Resource management in proxies</H3>
<p> <p>
@ -476,7 +478,7 @@ every possible memory management problem. However, proxies do provide a mechani
can be used (if necessary) to address some of the more tricky memory management problems. can be used (if necessary) to address some of the more tricky memory management problems.
</p> </p>
<H3><a name="SWIGPlus_nn41"></a>6.27.3 Language specific details</H3> <H3><a name="SWIGPlus_nn41"></a>6.5.3 Language specific details</H3>
<p> <p>
@ -484,7 +486,7 @@ Language specific details on proxy classes are contained in the chapters describ
chapter has merely introduced the topic in a very general way. chapter has merely introduced the topic in a very general way.
</p> </p>
<H2><a name="SWIGPlus_nn6"></a>6.5 Simple C++ wrapping</H2> <H2><a name="SWIGPlus_nn6"></a>6.6 Simple C++ wrapping</H2>
<p> <p>
@ -517,7 +519,7 @@ To generate wrappers for this class, SWIG first reduces the class to a collectio
accessor functions which are then used by the proxy classes. accessor functions which are then used by the proxy classes.
</p> </p>
<H3><a name="SWIGPlus_nn7"></a>6.5.1 Constructors and destructors</H3> <H3><a name="SWIGPlus_nn7"></a>6.6.1 Constructors and destructors</H3>
<p> <p>
@ -534,7 +536,7 @@ void delete_List(List *l) {
</pre></div> </pre></div>
<H3><a name="SWIGPlus_nn8"></a>6.5.2 Default constructors, copy constructors and implicit destructors</H3> <H3><a name="SWIGPlus_nn8"></a>6.6.2 Default constructors, copy constructors and implicit destructors</H3>
<p> <p>
@ -683,7 +685,7 @@ leaks, and so it is strongly recommended to not use them.
</p> </p>
<H3><a name="SWIGPlus_nn9"></a>6.5.3 When constructor wrappers aren't created</H3> <H3><a name="SWIGPlus_nn9"></a>6.6.3 When constructor wrappers aren't created</H3>
<p> <p>
@ -760,7 +762,7 @@ public:
More information about <tt>%feature</tt> can be found in the <a href="Customization.html#Customization">Customization features</a> chapter. More information about <tt>%feature</tt> can be found in the <a href="Customization.html#Customization">Customization features</a> chapter.
</p> </p>
<H3><a name="SWIGPlus_nn10"></a>6.5.4 Copy constructors</H3> <H3><a name="SWIGPlus_nn10"></a>6.6.4 Copy constructors</H3>
<p> <p>
@ -862,7 +864,7 @@ constructor is set to <tt>new_CopyFoo()</tt>. This is the same as in
older versions. older versions.
</p> </p>
<H3><a name="SWIGPlus_nn11"></a>6.5.5 Member functions</H3> <H3><a name="SWIGPlus_nn11"></a>6.6.5 Member functions</H3>
<p> <p>
@ -888,7 +890,7 @@ wrapper functions. However, the name and calling convention of the
low-level procedural wrappers match the accessor function prototype described above. low-level procedural wrappers match the accessor function prototype described above.
</p> </p>
<H3><a name="SWIGPlus_nn12"></a>6.5.6 Static members</H3> <H3><a name="SWIGPlus_nn12"></a>6.6.6 Static members</H3>
<p> <p>
@ -898,7 +900,7 @@ transformations. For example, the static member function
in the generated wrapper code. in the generated wrapper code.
</p> </p>
<H3><a name="SWIGPlus_member_data"></a>6.5.7 Member data</H3> <H3><a name="SWIGPlus_member_data"></a>6.6.7 Member data</H3>
<p> <p>
@ -1082,7 +1084,7 @@ a few problems related to structure wrapping and some of SWIG's
customization features. customization features.
</p> </p>
<H2><a name="SWIGPlus_default_args"></a>6.6 Default arguments</H2> <H2><a name="SWIGPlus_default_args"></a>6.7 Default arguments</H2>
<p> <p>
@ -1185,7 +1187,7 @@ Keyword arguments are a language feature of some scripting languages, for exampl
SWIG is unable to support kwargs when wrapping overloaded methods, so the default approach cannot be used. SWIG is unable to support kwargs when wrapping overloaded methods, so the default approach cannot be used.
</p> </p>
<H2><a name="SWIGPlus_nn15"></a>6.7 Protection</H2> <H2><a name="SWIGPlus_nn15"></a>6.8 Protection</H2>
<p> <p>
@ -1205,7 +1207,7 @@ until you explicitly give a `<tt>public:</tt>' declaration (This is
the same convention used by C++). the same convention used by C++).
</p> </p>
<H2><a name="SWIGPlus_nn16"></a>6.8 Enums and constants</H2> <H2><a name="SWIGPlus_nn16"></a>6.9 Enums and constants</H2>
<p> <p>
@ -1235,7 +1237,7 @@ Swig_STOUT = Swig::STOUT
Members declared as <tt>const</tt> are wrapped as read-only members and do not create constants. Members declared as <tt>const</tt> are wrapped as read-only members and do not create constants.
</p> </p>
<H2><a name="SWIGPlus_nn17"></a>6.9 Friends</H2> <H2><a name="SWIGPlus_nn17"></a>6.10 Friends</H2>
<p> <p>
@ -1296,7 +1298,7 @@ namespace bar {
and a wrapper for the method 'blah' will not be generated. and a wrapper for the method 'blah' will not be generated.
</p> </p>
<H2><a name="SWIGPlus_nn18"></a>6.10 References and pointers</H2> <H2><a name="SWIGPlus_nn18"></a>6.11 References and pointers</H2>
<p> <p>
@ -1396,7 +1398,7 @@ templates and the STL. This was first added in SWIG-1.3.12.
</p> </p>
<H2><a name="SWIGPlus_nn19"></a>6.11 Pass and return by value</H2> <H2><a name="SWIGPlus_nn19"></a>6.12 Pass and return by value</H2>
<p> <p>
@ -1480,7 +1482,7 @@ It is not used for C++ pointers or references.
if possible (consider using references instead). if possible (consider using references instead).
</p> </p>
<H2><a name="SWIGPlus_nn20"></a>6.12 Inheritance</H2> <H2><a name="SWIGPlus_nn20"></a>6.13 Inheritance</H2>
<p> <p>
@ -1666,7 +1668,8 @@ functions for virtual members that are already defined in a base
class. class.
</p> </p>
<H3><a name="SWIGPlus_explicitcall"></a>Explicit base class method calls</H3> <H3><a name="SWIGPlus_explicitcall"></a>6.13.1 Explicit base class method calls</H3>
<p> <p>
SWIG uses standard C++ polymorphic behaviour to ensure the correct virtual method is called SWIG uses standard C++ polymorphic behaviour to ensure the correct virtual method is called
@ -1715,6 +1718,7 @@ Child
Person Person
&gt;&gt;&gt; print child.describeBambino() # explicit Child::describe call &gt;&gt;&gt; print child.describeBambino() # explicit Child::describe call
Child Child
</pre>
</div> </div>
<p> <p>
@ -1744,7 +1748,7 @@ If, as is often the case, your pure virtual methods do not have a body defined y
<tt>%noexplicitcall</tt> can then be used to turn this feature off for the problem methods. <tt>%noexplicitcall</tt> can then be used to turn this feature off for the problem methods.
</p> </p>
<H2><a name="SWIGPlus_nn21"></a>6.13 A brief discussion of multiple inheritance, pointers, and type checking</H2> <H2><a name="SWIGPlus_nn21"></a>6.14 A brief discussion of multiple inheritance, pointers, and type checking</H2>
<p> <p>
@ -4581,6 +4585,7 @@ public:
<H2><a name="SWIGPlus_nested_classes"></a>6.25 Nested classes</H2> <H2><a name="SWIGPlus_nested_classes"></a>6.25 Nested classes</H2>
<p> <p>
There is limited support for nested structs and unions when wrapping C code, see <a href="SWIG.html#SWIG_nested_structs">Nested structures</a> for further details. There is limited support for nested structs and unions when wrapping C code, see <a href="SWIG.html#SWIG_nested_structs">Nested structures</a> for further details.
However, there is no nested class/struct/union support when wrapping C++ code (using the -c++ commandline option). However, there is no nested class/struct/union support when wrapping C++ code (using the -c++ commandline option).
@ -4727,7 +4732,7 @@ using another tool if maintaining constness is the most important part
of your project. of your project.
</p> </p>
<H2><a name="SWIGPlus_nn42"></a>6.28 Where to go for more information</H2> <H2><a name="SWIGPlus_nn42"></a>6.27 Where to go for more information</H2>
<p> <p>