Update manual section numbers

This commit is contained in:
Olly Betts 2025-04-01 14:02:45 +13:00
parent f3ea85af0b
commit c3b29f87ff
3 changed files with 89 additions and 89 deletions

View File

@ -1926,7 +1926,7 @@
</div>
<!-- INDEX -->
<h3><a href="Ocaml.html#Ocaml">40 SWIG and OCaml</a></h3>
<h3><a href="Ocaml.html#Ocaml">39 SWIG and OCaml</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
@ -1981,7 +1981,7 @@
</div>
<!-- INDEX -->
<h3><a href="Extending.html#Extending">41 Extending SWIG to support new languages</a></h3>
<h3><a href="Extending.html#Extending">40 Extending SWIG to support new languages</a></h3>
<!-- INDEX -->
<div class="sectiontoc">

View File

@ -7,7 +7,7 @@
</head>
<body bgcolor="#ffffff">
<H1><a name="Extending">41 Extending SWIG to support new languages</a></H1>
<H1><a name="Extending">40 Extending SWIG to support new languages</a></H1>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
@ -82,7 +82,7 @@
<H2><a name="Extending_nn2">41.1 Introduction</a></H2>
<H2><a name="Extending_nn2">40.1 Introduction</a></H2>
<p>
@ -101,7 +101,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">41.2 Prerequisites</a></H2>
<H2><a name="Extending_nn3">40.2 Prerequisites</a></H2>
<p>
@ -131,7 +131,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">41.3 The Big Picture</a></H2>
<H2><a name="Extending_nn4">40.3 The Big Picture</a></H2>
<p>
@ -168,7 +168,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">41.4 Execution Model</a></H2>
<H2><a name="Extending_nn5">40.4 Execution Model</a></H2>
<p>
@ -213,7 +213,7 @@ latter stage of compilation.
The next few sections briefly describe some of these stages.
</p>
<H3><a name="Extending_nn6">41.4.1 Preprocessing</a></H3>
<H3><a name="Extending_nn6">40.4.1 Preprocessing</a></H3>
<p>
@ -298,7 +298,7 @@ then fed back in with a second invocation.
This is the approach that the <a href="CCache.html#CCache">CCache</a> tool uses as part of its strategy to speed up repeated builds with the same inputs.
</p>
<H3><a name="Extending_nn7">41.4.2 Parsing</a></H3>
<H3><a name="Extending_nn7">40.4.2 Parsing</a></H3>
<p>
@ -399,7 +399,7 @@ returning a <tt>foo</tt> and taking types <tt>a</tt> and <tt>b</tt> as
arguments).
</p>
<H3><a name="Extending_nn8">41.4.3 Parse Trees</a></H3>
<H3><a name="Extending_nn8">40.4.3 Parse Trees</a></H3>
<p>
@ -688,7 +688,7 @@ debug-module stage 1
</pre>
</div>
<H3><a name="Extending_nn9">41.4.4 Attribute namespaces</a></H3>
<H3><a name="Extending_nn9">40.4.4 Attribute namespaces</a></H3>
<p>
@ -707,7 +707,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">41.4.5 Symbol Tables</a></H3>
<H3><a name="Extending_nn10">40.4.5 Symbol Tables</a></H3>
<p>
@ -795,7 +795,7 @@ example.i:5. Previous declaration is foo_i(int )
</pre>
</div>
<H3><a name="Extending_nn11">41.4.6 The %feature directive</a></H3>
<H3><a name="Extending_nn11">40.4.6 The %feature directive</a></H3>
<p>
@ -850,7 +850,7 @@ For example, the exception code above is simply
stored without any modifications.
</p>
<H3><a name="Extending_nn12">41.4.7 Code Generation</a></H3>
<H3><a name="Extending_nn12">40.4.7 Code Generation</a></H3>
<p>
@ -972,7 +972,7 @@ public :
The role of these functions is described shortly.
</p>
<H3><a name="Extending_nn13">41.4.8 SWIG and XML</a></H3>
<H3><a name="Extending_nn13">40.4.8 SWIG and XML</a></H3>
<p>
@ -1036,7 +1036,7 @@ The XML is a dump of SWIG's internal parse tree and as such it is subject to cha
time as and when SWIG's implementation changes.
</p>
<H2><a name="Extending_nn14">41.5 Primitive Data Structures</a></H2>
<H2><a name="Extending_nn14">40.5 Primitive Data Structures</a></H2>
<p>
@ -1082,7 +1082,7 @@ typedef Hash Typetab;
</pre>
</div>
<H3><a name="Extending_nn15">41.5.1 Strings</a></H3>
<H3><a name="Extending_nn15">40.5.1 Strings</a></H3>
<p>
@ -1228,7 +1228,7 @@ At most one of <tt>DOH_REPLACE_ANY</tt> and <tt>DOH_REPLACE_FIRST</tt> should be
</div>
<H3><a name="Extending_nn16">41.5.2 Hashes</a></H3>
<H3><a name="Extending_nn16">40.5.2 Hashes</a></H3>
<p>
@ -1313,7 +1313,7 @@ Returns the list of sorted hash table keys.
</div>
<H3><a name="Extending_nn17">41.5.3 Lists</a></H3>
<H3><a name="Extending_nn17">40.5.3 Lists</a></H3>
<p>
@ -1402,7 +1402,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">41.5.4 Common operations</a></H3>
<H3><a name="Extending_nn18">40.5.4 Common operations</a></H3>
The following operations are applicable to all datatypes.
@ -1457,7 +1457,7 @@ objects and report errors.
Gets the line number associated with <tt>x</tt>.
</div>
<H3><a name="Extending_nn19">41.5.5 Iterating over Lists and Hashes</a></H3>
<H3><a name="Extending_nn19">40.5.5 Iterating over Lists and Hashes</a></H3>
To iterate over the elements of a list or a hash table, the following functions are used:
@ -1502,7 +1502,7 @@ for (j = First(j); j.item; j= Next(j)) {
</div>
<H3><a name="Extending_nn20">41.5.6 I/O</a></H3>
<H3><a name="Extending_nn20">40.5.6 I/O</a></H3>
Special I/O functions are used for all internal I/O. These operations
@ -1636,7 +1636,7 @@ Printf(f, "%s\n", s);
Similarly, the preprocessor and parser all operate on string-files.
</p>
<H2><a name="Extending_nn21">41.6 Navigating and manipulating parse trees</a></H2>
<H2><a name="Extending_nn21">40.6 Navigating and manipulating parse trees</a></H2>
Parse trees are built as collections of hash tables. Each node is a hash table in which
@ -1770,7 +1770,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">41.7 Working with attributes</a></H2>
<H2><a name="Extending_nn22">40.7 Working with attributes</a></H2>
<p>
@ -1887,7 +1887,7 @@ the attribute is optional. <tt>Swig_restore()</tt> must always be called after
function.
</div>
<H2><a name="Extending_nn23">41.8 Type system</a></H2>
<H2><a name="Extending_nn23">40.8 Type system</a></H2>
<p>
@ -1896,7 +1896,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">41.8.1 String encoding of types</a></H3>
<H3><a name="Extending_nn24">40.8.1 String encoding of types</a></H3>
<p>
@ -1972,7 +1972,7 @@ make the final type, the two parts are just joined together using
string concatenation.
</p>
<H3><a name="Extending_nn25">41.8.2 Type construction</a></H3>
<H3><a name="Extending_nn25">40.8.2 Type construction</a></H3>
<p>
@ -2141,7 +2141,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">41.8.3 Type tests</a></H3>
<H3><a name="Extending_nn26">40.8.3 Type tests</a></H3>
<p>
@ -2228,7 +2228,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">41.8.4 Typedef and inheritance</a></H3>
<H3><a name="Extending_nn27">40.8.4 Typedef and inheritance</a></H3>
<p>
@ -2330,7 +2330,7 @@ Fully reduces <tt>ty</tt> according to typedef rules. Resulting datatype
will consist only of primitive typenames.
</div>
<H3><a name="Extending_nn28">41.8.5 Lvalues</a></H3>
<H3><a name="Extending_nn28">40.8.5 Lvalues</a></H3>
<p>
@ -2367,7 +2367,7 @@ Literal y; // type = 'Literal', ltype='p.char'
</pre>
</div>
<H3><a name="Extending_nn29">41.8.6 Output functions</a></H3>
<H3><a name="Extending_nn29">40.8.6 Output functions</a></H3>
<p>
@ -2429,7 +2429,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">41.9 Parameters</a></H2>
<H2><a name="Extending_nn30">40.9 Parameters</a></H2>
<p>
@ -2528,7 +2528,7 @@ included. Used to emit prototypes.
Returns the number of required (non-optional) arguments in <tt>p</tt>.
</div>
<H2><a name="Extending_nn31">41.10 Writing a Language Module</a></H2>
<H2><a name="Extending_nn31">40.10 Writing a Language Module</a></H2>
<p>
@ -2543,7 +2543,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">41.10.1 Execution model</a></H3>
<H3><a name="Extending_nn32">40.10.1 Execution model</a></H3>
<p>
@ -2553,7 +2553,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_starting_out">41.10.2 Starting out</a></H3>
<H3><a name="Extending_starting_out">40.10.2 Starting out</a></H3>
<p>
@ -2661,7 +2661,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">41.10.3 Command line options</a></H3>
<H3><a name="Extending_nn34">40.10.3 Command line options</a></H3>
<p>
@ -2720,7 +2720,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">41.10.4 Configuration and preprocessing</a></H3>
<H3><a name="Extending_nn35">40.10.4 Configuration and preprocessing</a></H3>
<p>
@ -2769,7 +2769,7 @@ an implementation file <tt>python.cxx</tt> and a configuration file
<tt>python.swg</tt>.
</p>
<H3><a name="Extending_nn36">41.10.5 Entry point to code generation</a></H3>
<H3><a name="Extending_nn36">40.10.5 Entry point to code generation</a></H3>
<p>
@ -2827,7 +2827,7 @@ int Python::top(Node *n) {
</pre>
</div>
<H3><a name="Extending_nn37">41.10.6 Module I/O and wrapper skeleton</a></H3>
<H3><a name="Extending_nn37">40.10.6 Module I/O and wrapper skeleton</a></H3>
<!-- please report bugs in this section to mgossage -->
@ -2975,7 +2975,7 @@ functionWrapper : void Shape_y_set(Shape *self, double y)
</pre>
</div>
<H3><a name="Extending_nn38">41.10.7 Low-level code generators</a></H3>
<H3><a name="Extending_nn38">40.10.7 Low-level code generators</a></H3>
<!-- please report bugs in this section to mgossage -->
@ -3129,7 +3129,7 @@ but without the typemaps, there is still work to do.
</p>
<H3><a name="Extending_configuration_files">41.10.8 Configuration files</a></H3>
<H3><a name="Extending_configuration_files">40.10.8 Configuration files</a></H3>
<!-- please report bugs in this section to ttn -->
@ -3273,7 +3273,7 @@ politely displays the ignoring language message.
</dl>
<H3><a name="Extending_nn40">41.10.9 Runtime support</a></H3>
<H3><a name="Extending_nn40">40.10.9 Runtime support</a></H3>
<p>
@ -3282,7 +3282,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">41.10.10 Standard library files</a></H3>
<H3><a name="Extending_nn41">40.10.10 Standard library files</a></H3>
<p>
@ -3301,7 +3301,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">41.10.11 User examples</a></H3>
<H3><a name="Extending_nn42">40.10.11 User examples</a></H3>
<p>
@ -3330,7 +3330,7 @@ during this process, see the section on <a href="#Extending_configuration_files"
files</a>.
</p>
<H3><a name="Extending_test_suite">41.10.12 Test driven development and the test-suite</a></H3>
<H3><a name="Extending_test_suite">40.10.12 Test driven development and the test-suite</a></H3>
<p>
@ -3389,7 +3389,7 @@ It is therefore essential that the runtime tests are written in a manner that di
but error/exception out with an error message on stderr on failure.
</p>
<H4><a name="Extending_running_test_suite">41.10.12.1 Running the test-suite</a></H4>
<H4><a name="Extending_running_test_suite">40.10.12.1 Running the test-suite</a></H4>
<p>
@ -3583,7 +3583,7 @@ It can be run in the same way as the other language test-suites, replacing [lang
The test cases used and the way it works is described in <tt>Examples/test-suite/errors/Makefile.in</tt>.
</p>
<H3><a name="Extending_nn43">41.10.13 Documentation</a></H3>
<H3><a name="Extending_nn43">40.10.13 Documentation</a></H3>
<p>
@ -3615,7 +3615,7 @@ Some topics that you'll want to be sure to address include:
if available.
</ul>
<H3><a name="Extending_coding_style_guidelines">41.10.14 Coding style guidelines</a></H3>
<H3><a name="Extending_coding_style_guidelines">40.10.14 Coding style guidelines</a></H3>
<p>
@ -3640,7 +3640,7 @@ should be avoided as unlike the SWIG developers, users will never have consisten
</p>
<H3><a name="Extending_language_status">41.10.15 Target language status</a></H3>
<H3><a name="Extending_language_status">40.10.15 Target language status</a></H3>
<p>
@ -3649,7 +3649,7 @@ the <a href="Introduction.html#Introduction_target_languages">Target language in
This section provides more details on how this status is given.
</p>
<H4><a name="Extending_supported_status">41.10.15.1 Supported status</a></H4>
<H4><a name="Extending_supported_status">40.10.15.1 Supported status</a></H4>
<p>
@ -3696,7 +3696,7 @@ A target language is given the 'Supported' status when
</li>
</ul>
<H4><a name="Extending_experimental_status">41.10.15.2 Experimental status</a></H4>
<H4><a name="Extending_experimental_status">40.10.15.2 Experimental status</a></H4>
<p>
@ -3761,7 +3761,7 @@ Some minimum requirements and notes about languages with the 'Experimental' stat
</li>
</ul>
<H4><a name="Extending_deprecated_status">41.10.15.3 Deprecated status</a></H4>
<H4><a name="Extending_deprecated_status">40.10.15.3 Deprecated status</a></H4>
<p>
@ -3786,7 +3786,7 @@ The language will need updating by an interested community member to meet the re
If you are a user of a 'Deprecated' target language and would like to keep it available in future releases, please contact the SWIG developers for details of how you can help.
</p>
<H3><a name="Extending_prerequisites">41.10.16 Prerequisites for adding a new language module to the SWIG distribution</a></H3>
<H3><a name="Extending_prerequisites">40.10.16 Prerequisites for adding a new language module to the SWIG distribution</a></H3>
<p>
@ -3850,7 +3850,7 @@ the existing tests.
</p>
<H2><a name="Extending_debugging_options">41.11 Debugging Options</a></H2>
<H2><a name="Extending_debugging_options">40.11 Debugging Options</a></H2>
<p>
@ -3878,7 +3878,7 @@ There are various command line options which can aid debugging a SWIG interface
The complete list of command line options for SWIG are available by running <tt>swig -help</tt>.
</p>
<H2><a name="Extending_nn46">41.12 Guide to parse tree nodes</a></H2>
<H2><a name="Extending_nn46">40.12 Guide to parse tree nodes</a></H2>
<p>
@ -4286,7 +4286,7 @@ extern "X" { ... } declaration.
</pre>
</div>
<H2><a name="Extending_further_info">41.13 Further Development Information</a></H2>
<H2><a name="Extending_further_info">40.13 Further Development Information</a></H2>
<p>

View File

@ -7,7 +7,7 @@
</head>
<body bgcolor="#ffffff">
<H1><a name="Ocaml">40 SWIG and OCaml</a></H1>
<H1><a name="Ocaml">39 SWIG and OCaml</a></H1>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
@ -86,7 +86,7 @@ If you're not familiar with the Objective Caml language, you can visit
<a href="https://ocaml.org/">The Ocaml Website</a>.
</p>
<H2><a name="Ocaml_nn2">40.1 Preliminaries</a></H2>
<H2><a name="Ocaml_nn2">39.1 Preliminaries</a></H2>
<p>
@ -105,7 +105,7 @@ file Examples/Makefile illustrate how to compile and link SWIG modules that
will be loaded dynamically. This has only been tested on Linux so far.
</p>
<H3><a name="Ocaml_nn3">40.1.1 Running SWIG</a></H3>
<H3><a name="Ocaml_nn3">39.1.1 Running SWIG</a></H3>
<p>
@ -128,7 +128,7 @@ you will compile the file <tt>example_wrap.c</tt> with <tt>ocamlc</tt> or
the resulting .ml and .mli files as well, and do the final link with -custom
(not needed for native link).</p>
<H3><a name="Ocaml_nn4">40.1.2 Compiling the code</a></H3>
<H3><a name="Ocaml_nn4">39.1.2 Compiling the code</a></H3>
<p>
@ -165,7 +165,7 @@ in C++ mode, you must:</p>
</pre>
</div>
<H3><a name="Ocaml_nn5">40.1.3 The camlp4 module</a></H3>
<H3><a name="Ocaml_nn5">39.1.3 The camlp4 module</a></H3>
<p>
@ -241,7 +241,7 @@ let b = C_string (getenv "PATH")
</td></tr>
</table>
<H3><a name="Ocaml_nn6">40.1.4 Using your module</a></H3>
<H3><a name="Ocaml_nn6">39.1.4 Using your module</a></H3>
<p>
@ -255,7 +255,7 @@ option to build your functions into the primitive list. This
option is not needed when you build native code.
</p>
<H3><a name="Ocaml_nn7">40.1.5 Compilation problems and compiling with C++</a></H3>
<H3><a name="Ocaml_nn7">39.1.5 Compilation problems and compiling with C++</a></H3>
<p>
@ -275,7 +275,7 @@ liberal with pointer types may not compile under the C++ compiler.
Most code meant to be compiled as C++ will not have problems.
</p>
<H2><a name="Ocaml_nn8">40.2 The low-level Ocaml/C interface</a></H2>
<H2><a name="Ocaml_nn8">39.2 The low-level Ocaml/C interface</a></H2>
<p>
@ -375,7 +375,7 @@ value items pass through directly, but you must make your own type
signature for a function that uses value in this way.
</p>
<H3><a name="Ocaml_nn9">40.2.1 The generated module</a></H3>
<H3><a name="Ocaml_nn9">39.2.1 The generated module</a></H3>
<p>
@ -409,7 +409,7 @@ it describes the output SWIG will generate for class definitions.
</td></tr>
</table>
<H3><a name="Ocaml_nn10">40.2.2 Enums</a></H3>
<H3><a name="Ocaml_nn10">39.2.2 Enums</a></H3>
<p>
@ -472,7 +472,7 @@ val x : Enum_test.c_obj = C_enum `a
</pre>
</div>
<H4><a name="Ocaml_nn11">40.2.2.1 Enum typing in Ocaml</a></H4>
<H4><a name="Ocaml_nn11">39.2.2.1 Enum typing in Ocaml</a></H4>
<p>
@ -485,10 +485,10 @@ functions imported from different modules. You must convert values to master
values using the swig_val function before sharing them with another module.
</p>
<H3><a name="Ocaml_nn12">40.2.3 Arrays</a></H3>
<H3><a name="Ocaml_nn12">39.2.3 Arrays</a></H3>
<H4><a name="Ocaml_nn13">40.2.3.1 Simple types of bounded arrays</a></H4>
<H4><a name="Ocaml_nn13">39.2.3.1 Simple types of bounded arrays</a></H4>
<p>
@ -509,7 +509,7 @@ arrays of simple types with known bounds in your code, but this only works
for arrays whose bounds are completely specified.
</p>
<H4><a name="Ocaml_nn14">40.2.3.2 Complex and unbounded arrays</a></H4>
<H4><a name="Ocaml_nn14">39.2.3.2 Complex and unbounded arrays</a></H4>
<p>
@ -522,7 +522,7 @@ SWIG can't predict which of these methods will be used in the array,
so you have to specify it for yourself in the form of a typemap.
</p>
<H4><a name="Ocaml_nn15">40.2.3.3 Using an object</a></H4>
<H4><a name="Ocaml_nn15">39.2.3.3 Using an object</a></H4>
<p>
@ -536,7 +536,7 @@ Consider writing an object when the ending condition of your array is complex,
such as using a required sentinel, etc.
</p>
<H4><a name="Ocaml_nn16">40.2.3.4 Example typemap for a function taking float * and int</a></H4>
<H4><a name="Ocaml_nn16">39.2.3.4 Example typemap for a function taking float * and int</a></H4>
<p>
@ -587,7 +587,7 @@ void printfloats( float *tab, int len );
</pre></td></tr></table>
<H3><a name="Ocaml_nn17">40.2.4 C++ Classes</a></H3>
<H3><a name="Ocaml_nn17">39.2.4 C++ Classes</a></H3>
<p>
@ -630,7 +630,7 @@ the underlying pointer, so using create_[x]_from_ptr alters the
returned value for the same object.
</p>
<H4><a name="Ocaml_nn18">40.2.4.1 STL vector and string Example</a></H4>
<H4><a name="Ocaml_nn18">39.2.4.1 STL vector and string Example</a></H4>
<p>
@ -710,7 +710,7 @@ baz
#
</pre></div>
<H4><a name="Ocaml_nn19">40.2.4.2 C++ Class Example</a></H4>
<H4><a name="Ocaml_nn19">39.2.4.2 C++ Class Example</a></H4>
<p>
@ -739,7 +739,7 @@ public:
};
</pre></td></tr></table>
<H4><a name="Ocaml_nn20">40.2.4.3 Compiling the example</a></H4>
<H4><a name="Ocaml_nn20">39.2.4.3 Compiling the example</a></H4>
<div class="code"><pre>
@ -756,7 +756,7 @@ $ ocamlmktop -custom swig.cmo -I `camlp4 -where` \
-L$QTPATH/lib -cclib -lqt
</pre></div>
<H4><a name="Ocaml_nn21">40.2.4.4 Sample Session</a></H4>
<H4><a name="Ocaml_nn21">39.2.4.4 Sample Session</a></H4>
<div class="code"><pre>
@ -783,10 +783,10 @@ Assuming you have a working installation of QT, you will see a window
containing the string "hi" in a button.
</p>
<H3><a name="Ocaml_nn22">40.2.5 Director Classes</a></H3>
<H3><a name="Ocaml_nn22">39.2.5 Director Classes</a></H3>
<H4><a name="Ocaml_nn23">40.2.5.1 Director Introduction</a></H4>
<H4><a name="Ocaml_nn23">39.2.5.1 Director Introduction</a></H4>
<p>
@ -813,7 +813,7 @@ class foo {
};
</pre></div>
<H4><a name="Ocaml_nn24">40.2.5.2 Overriding Methods in Ocaml</a></H4>
<H4><a name="Ocaml_nn24">39.2.5.2 Overriding Methods in Ocaml</a></H4>
<p>
@ -841,7 +841,7 @@ In this example, I'll examine the objective caml code involved in providing
an overloaded class. This example is contained in Examples/ocaml/shapes.
</p>
<H4><a name="Ocaml_nn25">40.2.5.3 Director Usage Example</a></H4>
<H4><a name="Ocaml_nn25">39.2.5.3 Director Usage Example</a></H4>
<table border="1" bgcolor="#dddddd" summary="Director usage example">
@ -902,7 +902,7 @@ in a more effortless style in ocaml, while leaving the "engine" part of the
program in C++.
</p>
<H4><a name="Ocaml_nn26">40.2.5.4 Creating director objects</a></H4>
<H4><a name="Ocaml_nn26">39.2.5.4 Creating director objects</a></H4>
<p>
@ -943,7 +943,7 @@ object from causing a core dump, as long as the object is destroyed
properly.
</p>
<H4><a name="Ocaml_nn27">40.2.5.5 Typemaps for directors, directorin, directorout, directorargout</a></H4>
<H4><a name="Ocaml_nn27">39.2.5.5 Typemaps for directors, directorin, directorout, directorargout</a></H4>
<p>
@ -954,7 +954,7 @@ well as a function return value in the same way you provide function arguments,
and to receive arguments the same way you normally receive function returns.
</p>
<H4><a name="Ocaml_nn28">40.2.5.6 directorin typemap</a></H4>
<H4><a name="Ocaml_nn28">39.2.5.6 directorin typemap</a></H4>
<p>
@ -965,7 +965,7 @@ code receives when you are called. In general, a simple <tt>directorin</tt> typ
can use the same body as a simple <tt>out</tt> typemap.
</p>
<H4><a name="Ocaml_nn29">40.2.5.7 directorout typemap</a></H4>
<H4><a name="Ocaml_nn29">39.2.5.7 directorout typemap</a></H4>
<p>
@ -976,7 +976,7 @@ for the same type, except when there are special requirements for object
ownership, etc.
</p>
<H4><a name="Ocaml_nn30">40.2.5.8 directorargout typemap</a></H4>
<H4><a name="Ocaml_nn30">39.2.5.8 directorargout typemap</a></H4>
<p>
@ -993,7 +993,7 @@ In the event that you don't specify all of the necessary values, integral
values will read zero, and struct or object returns have undefined results.
</p>
<H3><a name="Ocaml_nn31">40.2.6 Exceptions</a></H3>
<H3><a name="Ocaml_nn31">39.2.6 Exceptions</a></H3>
<p>
@ -1081,7 +1081,7 @@ The language-independent <tt>exception.i</tt> library file can also be used
to raise exceptions. See the <a href="Library.html#Library">SWIG Library</a> chapter.
</p>
<H2><a name="Ocaml_nn32">40.3 Documentation Features</a></H2>
<H2><a name="Ocaml_nn32">39.3 Documentation Features</a></H2>
<p>
@ -1090,7 +1090,7 @@ comments (colloquially referred to as "docstrings") that can be read by
<a href="https://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html">OCamldoc</a>.
</p>
<H3><a name="Ocaml_nn33">40.3.1 Module docstring</a></H3>
<H3><a name="Ocaml_nn33">39.3.1 Module docstring</a></H3>
<p>