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>
<li><a href="#csharp_directors_example">Directors example</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>
<li><a href="#csharp_typemap_examples">C# Typemap examples</a>
<ul>
@ -909,7 +909,7 @@ Essentially, it enables unmanaged C++ code to call back into managed code for vi
<p>
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>
<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_Callback1_t callback1) {
Base *obj = (Base *)objarg;
SwigDirector_Base *director = dynamic_cast<SwigDirector_Base *>(obj);
SwigDirector_Base *director = dynamic_cast&lt;SwigDirector_Base *&gt;(obj);
if (director) {
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);
return;
} else {
jb = (Base *) &b;
jb = (Base *) &amp;b;
jflag = flag;
swig_callbackBaseBoolMethod(jb, jflag);
}
@ -1215,7 +1215,7 @@ void SwigDirector_Base::BaseBoolMethod(Base const &amp;b, bool flag) {
</pre>
</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>

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_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_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>
</ul>
<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_nn4">Supported C++ features</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>
<ul>
<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_nn19">Pass and return by value</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_nn22">Renaming</a>
<li><a href="SWIGPlus.html#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a>
<ul>
<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_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_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_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>
</ul>
</div>
@ -409,6 +411,7 @@
<li><a href="Customization.html#ownership">Object ownership and %newobject</a>
<li><a href="Customization.html#features">Features and the %feature directive</a>
<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_clearing_features">Clearing features</a>
<li><a href="Customization.html#Customization_features_default_args">Features and default arguments</a>
@ -455,7 +458,7 @@
<div class="sectiontoc">
<ul>
<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_nn5">Issuing a warning message</a>
<li><a href="Warnings.html#Warnings_nn6">Commentary</a>
@ -592,7 +595,7 @@
<ul>
<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_typemap_examples">Director caveats</a>
<li><a href="CSharp.html#csharp_director_caveats">Director caveats</a>
</ul>
<li><a href="CSharp.html#csharp_typemap_examples">C# Typemap examples</a>
<ul>
@ -634,6 +637,9 @@
<li><a href="Chicken.html#collection">Garbage collection</a>
</ul>
<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>
</div>
<!-- INDEX -->
@ -752,6 +758,7 @@
<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_example">Simple directors example</a>
<li><a href="Java.html#java_directors_explicitcall">Director base method calls</a>
</ul>
<li><a href="Java.html#common_customization">Common customization features</a>
<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#typemap_attributes">Java typemap attributes</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_directors_typemaps">Director specific typemaps</a>
</ul>
@ -1345,7 +1352,22 @@
</div>
<!-- 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 -->
<div class="sectiontoc">

View file

@ -22,6 +22,7 @@
<li><a href="#ownership">Object ownership and %newobject</a>
<li><a href="#features">Features and the %feature directive</a>
<ul>
<li><a href="#Customization_feature_attributes">Feature attributes</a>
<li><a href="#Customization_feature_flags">Feature flags</a>
<li><a href="#Customization_clearing_features">Clearing features</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.
</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>
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.
</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>
@ -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.
</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>
@ -926,7 +928,7 @@ but this will:
</pre>
</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>
@ -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.
</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>

View file

@ -6,7 +6,7 @@
</head>
<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 -->
<div class="sectiontoc">
<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>
@ -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.
</p>
<H2><a name="Extending_nn3"></a>32.2 Prerequisites</H2>
<H2><a name="Extending_nn3"></a>33.2 Prerequisites</H2>
<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.
</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>
@ -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.
</p>
<H2><a name="Extending_nn5"></a>32.4 Execution Model</H2>
<H2><a name="Extending_nn5"></a>33.4 Execution Model</H2>
<p>
@ -200,7 +200,7 @@ latter stage of compilation.
The next few sections briefly describe some of these stages.
</p>
<H3><a name="Extending_nn6"></a>32.4.1 Preprocessing</H3>
<H3><a name="Extending_nn6"></a>33.4.1 Preprocessing</H3>
<p>
@ -280,7 +280,7 @@ been expanded as well as everything else that goes into the low-level
construction of the wrapper code.
</p>
<H3><a name="Extending_nn7"></a>32.4.2 Parsing</H3>
<H3><a name="Extending_nn7"></a>33.4.2 Parsing</H3>
<p>
@ -381,7 +381,7 @@ returning a <tt>foo</tt> and taking types <tt>a</tt> and <tt>b</tt> as
arguments).
</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>
@ -634,7 +634,7 @@ $ swig -c++ -python -dump_module example.i
</pre>
</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>
@ -653,7 +653,7 @@ that matches the name of the target language. For example, <tt>python:foo</tt>
<tt>perl:foo</tt>.
</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>
@ -741,7 +741,7 @@ example.i:5. Previous declaration is foo_i(int )
</pre>
</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>
@ -797,7 +797,7 @@ For example, the exception code above is simply
stored without any modifications.
</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>
@ -919,7 +919,7 @@ public :
The role of these functions is described shortly.
</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>
@ -932,7 +932,7 @@ internal data structures, it may be useful to keep XML in the back of
your mind as a model.
</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>
@ -978,7 +978,7 @@ typedef Hash Typetab;
</pre>
</div>
<H3><a name="Extending_nn15"></a>32.5.1 Strings</H3>
<H3><a name="Extending_nn15"></a>33.5.1 Strings</H3>
<p>
@ -1119,7 +1119,7 @@ Returns the number of replacements made (if any).
</div>
<H3><a name="Extending_nn16"></a>32.5.2 Hashes</H3>
<H3><a name="Extending_nn16"></a>33.5.2 Hashes</H3>
<p>
@ -1196,7 +1196,7 @@ Returns the list of hash table keys.
</div>
<H3><a name="Extending_nn17"></a>32.5.3 Lists</H3>
<H3><a name="Extending_nn17"></a>33.5.3 Lists</H3>
<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.
</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.
@ -1340,7 +1340,7 @@ objects and report errors.
Gets the line number associated with <tt>x</tt>.
</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:
@ -1385,7 +1385,7 @@ for (j = First(j); j.item; j= Next(j)) {
</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
@ -1521,7 +1521,7 @@ Similarly, the preprocessor and parser all operate on string-files.
</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
@ -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.
</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>
@ -1772,7 +1772,7 @@ the attribute is optional. <tt>Swig_restore()</tt> must always be called after
function.
</div>
<H2><a name="Extending_nn23"></a>32.8 Type system</H2>
<H2><a name="Extending_nn23"></a>33.8 Type system</H2>
<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.
</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>
@ -1882,7 +1882,7 @@ make the final type, the two parts are just joined together using
string concatenation.
</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>
@ -2051,7 +2051,7 @@ Returns the prefix of a type. For example, if <tt>ty</tt> is
<tt>ty</tt> is unmodified.
</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>
@ -2138,7 +2138,7 @@ Checks if <tt>ty</tt> is a varargs type.
Checks if <tt>ty</tt> is a templatized type.
</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>
@ -2240,7 +2240,7 @@ Fully reduces <tt>ty</tt> according to typedef rules. Resulting datatype
will consist only of primitive typenames.
</div>
<H3><a name="Extending_nn28"></a>32.8.5 Lvalues</H3>
<H3><a name="Extending_nn28"></a>33.8.5 Lvalues</H3>
<p>
@ -2277,7 +2277,7 @@ Literal y; // type = 'Literal', ltype='p.char'
</pre>
</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>
@ -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>).
</div>
<H2><a name="Extending_nn30"></a>32.9 Parameters</H2>
<H2><a name="Extending_nn30"></a>33.9 Parameters</H2>
<p>
@ -2438,7 +2438,7 @@ included. Used to emit prototypes.
Returns the number of required (non-optional) arguments in <tt>p</tt>.
</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>
@ -2453,7 +2453,7 @@ describes the creation of a minimal Python module. You should be able to extra
this to other languages.
</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>
@ -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.
</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>
@ -2571,7 +2571,7 @@ that activates your module. For example, <tt>swig -python foo.i</tt>. The
messages from your new module should appear.
</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>
@ -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.
</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>
@ -2679,7 +2679,7 @@ an implementation file <tt>python.cxx</tt> and a configuration file
<tt>python.swg</tt>.
</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>
@ -2737,7 +2737,7 @@ int Python::top(Node *n) {
</pre>
</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 -->
@ -2879,7 +2879,7 @@ functionWrapper : void Shape_y_set(Shape *self,double y)
</pre>
</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 -->
@ -3033,7 +3033,7 @@ but without the typemaps, there is still work to do.
</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 -->
@ -3183,7 +3183,7 @@ politely displays the ignoring language message.
</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>
@ -3192,7 +3192,7 @@ Discuss the kinds of functions typically needed for SWIG runtime support (e.g.
the SWIG files that implement those functions.
</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>
@ -3211,7 +3211,7 @@ The following are the minimum that are usually supported:
Please copy these and modify for any new language.
</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>
@ -3240,7 +3240,7 @@ during this process, see the section on <a href="#n37a">configuration
files</a>.
</p>
<H3><a name="Extending_nn43"></a>32.10.12 Documentation</H3>
<H3><a name="Extending_nn43"></a>33.10.12 Documentation</H3>
<p>
@ -3272,7 +3272,7 @@ Some topics that you'll want to be sure to address include:
if available.
</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>
@ -3327,13 +3327,13 @@ the existing tests.
</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>

View file

@ -83,6 +83,7 @@
<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_example">Simple directors example</a>
<li><a href="#java_directors_explicitcall">Director base method calls</a>
</ul>
<li><a href="#common_customization">Common customization features</a>
<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="#typemap_attributes">Java typemap attributes</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_directors_typemaps">Director specific typemaps</a>
</ul>
@ -3203,7 +3204,9 @@ directorDerived::upcall_method() invoked.
</pre>
</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>
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
@ -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>.
</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>

View file

@ -6,7 +6,21 @@
</head>
<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>
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.
</p>
<H2>Bugs</H2>
<H2><a name="R_nn2"></a>32.1 Bugs</H2>
<p>
Currently the following features are not implemented or broken:
</p>
<ul>
<li>Garbage collection of created objects
<li>C Array wrappings
<li>tested on UNIX only, how well or badly it works on windows is not known
</ul>
<H2>Using R and SWIG</H2>
<H2><a name="R_nn3"></a>32.2 Using R and SWIG</H2>
<p>
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
</p>
<div class="shell">
<pre>
swig -r -o example,c example.i
@ -39,7 +60,10 @@ PKG_LIBS="example_func.c" R CMD SHLIB example.c
</pre>
</div>
<p>
The corresponding comments for C++ mode are
</p>
<div class="shell">
<pre>
swig -c++ -r -o example.cpp example.i
@ -47,6 +71,7 @@ PKG_LIBS="example_func.cxx" R CMD SHLIB example.cpp
</pre>
</div>
<p>
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
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
example.so and an R wrapper file called example_wrap.S. To load these
files, start up R and type in the following commands
</p>
<div class="shell">
<pre>
dyn.load('example.so')
source('example_wrap.S')
</pre>
</div>
<p>
These two files can be loaded in any order
</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
wrapping over the underlying functions and rely on the R type system
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). [<-
and [ are overloaded to allow for R syntax (one based indices and
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
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
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
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
ints before calling the C routines. All of the enumeration code is
done in R.
</p>
</body>
</html>

View file

@ -14,6 +14,12 @@
<li><a href="#SWIGPlus_nn3">Approach</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_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>
<ul>
<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_nn19">Pass and return by value</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_nn22">Renaming</a>
<li><a href="#SWIGPlus_overloaded_methods">Wrapping Overloaded Functions and Methods</a>
<ul>
<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_nested_classes">Nested classes</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>
</ul>
</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
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>
@ -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.
</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>
@ -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.
</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>
@ -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.
</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>
@ -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.
</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>
@ -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.
</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>
@ -534,7 +536,7 @@ void delete_List(List *l) {
</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>
@ -683,7 +685,7 @@ leaks, and so it is strongly recommended to not use them.
</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>
@ -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.
</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>
@ -862,7 +864,7 @@ constructor is set to <tt>new_CopyFoo()</tt>. This is the same as in
older versions.
</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>
@ -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.
</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>
@ -898,7 +900,7 @@ transformations. For example, the static member function
in the generated wrapper code.
</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>
@ -1082,7 +1084,7 @@ a few problems related to structure wrapping and some of SWIG's
customization features.
</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>
@ -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.
</p>
<H2><a name="SWIGPlus_nn15"></a>6.7 Protection</H2>
<H2><a name="SWIGPlus_nn15"></a>6.8 Protection</H2>
<p>
@ -1205,7 +1207,7 @@ until you explicitly give a `<tt>public:</tt>' declaration (This is
the same convention used by C++).
</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>
@ -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.
</p>
<H2><a name="SWIGPlus_nn17"></a>6.9 Friends</H2>
<H2><a name="SWIGPlus_nn17"></a>6.10 Friends</H2>
<p>
@ -1296,7 +1298,7 @@ namespace bar {
and a wrapper for the method 'blah' will not be generated.
</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>
@ -1396,7 +1398,7 @@ templates and the STL. This was first added in SWIG-1.3.12.
</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>
@ -1480,7 +1482,7 @@ It is not used for C++ pointers or references.
if possible (consider using references instead).
</p>
<H2><a name="SWIGPlus_nn20"></a>6.12 Inheritance</H2>
<H2><a name="SWIGPlus_nn20"></a>6.13 Inheritance</H2>
<p>
@ -1666,7 +1668,8 @@ functions for virtual members that are already defined in a base
class.
</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>
SWIG uses standard C++ polymorphic behaviour to ensure the correct virtual method is called
@ -1715,6 +1718,7 @@ Child
Person
&gt;&gt;&gt; print child.describeBambino() # explicit Child::describe call
Child
</pre>
</div>
<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.
</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>
@ -4581,6 +4585,7 @@ public:
<H2><a name="SWIGPlus_nested_classes"></a>6.25 Nested classes</H2>
<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.
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.
</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>