swig/Doc/Manual/Contents.html
Vadim Zeitlin 300ccce46c Another merge with master.
Change Doxygen error codes to start at 740 instead of at 720 as the latter was
taken by Scilab in the meanwhile.

Resolve conflicts in autodoc_runme.py once again.
2015-02-16 23:46:39 +01:00

1972 lines
90 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>SWIG Users Manual</TITLE>
</HEAD>
<BODY BGCOLOR="#ffffff">
<H1><a name="Contents"></a>SWIG Users Manual</H1>
<p>
<h3><a href="Preface.html#Preface">1 Preface</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Preface.html#Preface_nn2">Introduction</a>
<li><a href="Preface.html#Preface_nn4">SWIG Versions</a>
<li><a href="Preface.html#Preface_license">SWIG License</a>
<li><a href="Preface.html#Preface_nn5">SWIG resources</a>
<li><a href="Preface.html#Preface_nn6">Prerequisites</a>
<li><a href="Preface.html#Preface_nn7">Organization of this manual</a>
<li><a href="Preface.html#Preface_nn8">How to avoid reading the manual</a>
<li><a href="Preface.html#Preface_nn9">Backwards compatibility</a>
<li><a href="Preface.html#Preface_release_notes">Release notes</a>
<li><a href="Preface.html#Preface_nn10">Credits</a>
<li><a href="Preface.html#Preface_nn11">Bug reports</a>
<li><a href="Preface.html#Preface_installation">Installation</a>
<ul>
<li><a href="Preface.html#Preface_windows_installation">Windows installation</a>
<li><a href="Preface.html#Preface_unix_installation">Unix installation</a>
<li><a href="Preface.html#Preface_osx_installation">Macintosh OS X installation</a>
<li><a href="Preface.html#Preface_testing">Testing</a>
<li><a href="Preface.html#Preface_examples">Examples</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Introduction.html#Introduction">2 Introduction</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Introduction.html#Introduction_nn2">What is SWIG?</a>
<li><a href="Introduction.html#Introduction_nn3">Why use SWIG?</a>
<li><a href="Introduction.html#Introduction_nn4">A SWIG example</a>
<ul>
<li><a href="Introduction.html#Introduction_nn5">SWIG interface file</a>
<li><a href="Introduction.html#Introduction_nn6">The swig command</a>
<li><a href="Introduction.html#Introduction_nn7">Building a Perl5 module</a>
<li><a href="Introduction.html#Introduction_nn8">Building a Python module</a>
<li><a href="Introduction.html#Introduction_nn9">Shortcuts</a>
</ul>
<li><a href="Introduction.html#Introduction_nn10">Supported C/C++ language features</a>
<li><a href="Introduction.html#Introduction_nn11">Non-intrusive interface building</a>
<li><a href="Introduction.html#Introduction_build_system">Incorporating SWIG into a build system</a>
<li><a href="Introduction.html#Introduction_nn12">Hands off code generation</a>
<li><a href="Introduction.html#Introduction_nn13">SWIG and freedom</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Windows.html#Windows">3 Getting started on Windows </a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Windows.html#Windows_installation">Installation on Windows</a>
<ul>
<li><a href="Windows.html#Windows_executable">Windows Executable</a>
</ul>
<li><a href="Windows.html#Windows_examples">SWIG Windows Examples</a>
<ul>
<li><a href="Windows.html#Windows_visual_studio">Instructions for using the Examples with Visual Studio</a>
<ul>
<li><a href="Windows.html#Windows_csharp">C#</a>
<li><a href="Windows.html#Windows_java">Java</a>
<li><a href="Windows.html#Windows_perl">Perl</a>
<li><a href="Windows.html#Windows_python">Python</a>
<li><a href="Windows.html#Windows_tcl">TCL</a>
<li><a href="Windows.html#Windows_r">R</a>
<li><a href="Windows.html#Windows_ruby">Ruby</a>
</ul>
<li><a href="Windows.html#Windows_other_compilers">Instructions for using the Examples with other compilers</a>
</ul>
<li><a href="Windows.html#Windows_cygwin_mingw">SWIG on Cygwin and MinGW</a>
<ul>
<li><a href="Windows.html#Windows_swig_exe">Building swig.exe on Windows</a>
<ul>
<li><a href="Windows.html#Windows_mingw_msys">Building swig.exe using MinGW and MSYS</a>
<li><a href="Windows.html#Windows_cygwin">Building swig.exe using Cygwin</a>
<li><a href="Windows.html#Windows_building_alternatives">Building swig.exe alternatives</a>
</ul>
<li><a href="Windows.html#Windows_examples_cygwin">Running the examples on Windows using Cygwin</a>
</ul>
<li><a href="Windows.html#Windows_interface_file">Microsoft extensions and other Windows quirks</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Scripting.html#Scripting">4 Scripting Languages</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Scripting.html#Scripting_nn2">The two language view of the world</a>
<li><a href="Scripting.html#Scripting_nn3">How does a scripting language talk to C?</a>
<ul>
<li><a href="Scripting.html#Scripting_nn4">Wrapper functions</a>
<li><a href="Scripting.html#Scripting_nn5">Variable linking</a>
<li><a href="Scripting.html#Scripting_nn6">Constants</a>
<li><a href="Scripting.html#Scripting_nn7">Structures and classes</a>
<li><a href="Scripting.html#Scripting_nn8">Proxy classes</a>
</ul>
<li><a href="Scripting.html#Scripting_nn9">Building scripting language extensions</a>
<ul>
<li><a href="Scripting.html#Scripting_nn10">Shared libraries and dynamic loading</a>
<li><a href="Scripting.html#Scripting_nn11">Linking with shared libraries</a>
<li><a href="Scripting.html#Scripting_nn12">Static linking</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="SWIG.html#SWIG">5 SWIG Basics</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="SWIG.html#SWIG_nn2">Running SWIG</a>
<ul>
<li><a href="SWIG.html#SWIG_nn3">Input format</a>
<li><a href="SWIG.html#SWIG_output">SWIG Output</a>
<li><a href="SWIG.html#SWIG_nn5">Comments</a>
<li><a href="SWIG.html#SWIG_nn6">C Preprocessor</a>
<li><a href="SWIG.html#SWIG_nn7">SWIG Directives</a>
<li><a href="SWIG.html#SWIG_nn8">Parser Limitations</a>
</ul>
<li><a href="SWIG.html#SWIG_nn9">Wrapping Simple C Declarations</a>
<ul>
<li><a href="SWIG.html#SWIG_nn10">Basic Type Handling</a>
<li><a href="SWIG.html#SWIG_nn11">Global Variables</a>
<li><a href="SWIG.html#SWIG_nn12">Constants</a>
<li><a href="SWIG.html#SWIG_nn13">A brief word about <tt>const</tt></a>
<li><a href="SWIG.html#SWIG_nn14">A cautionary tale of <tt>char *</tt></a>
</ul>
<li><a href="SWIG.html#SWIG_nn15">Pointers and complex objects</a>
<ul>
<li><a href="SWIG.html#SWIG_nn16">Simple pointers</a>
<li><a href="SWIG.html#SWIG_nn17">Run time pointer type checking</a>
<li><a href="SWIG.html#SWIG_nn18">Derived types, structs, and classes</a>
<li><a href="SWIG.html#SWIG_nn19">Undefined datatypes</a>
<li><a href="SWIG.html#SWIG_nn20">Typedef</a>
</ul>
<li><a href="SWIG.html#SWIG_nn21">Other Practicalities</a>
<ul>
<li><a href="SWIG.html#SWIG_nn22">Passing structures by value</a>
<li><a href="SWIG.html#SWIG_nn23">Return by value</a>
<li><a href="SWIG.html#SWIG_nn24">Linking to structure variables</a>
<li><a href="SWIG.html#SWIG_nn25">Linking to <tt>char *</tt></a>
<li><a href="SWIG.html#SWIG_nn26">Arrays</a>
<li><a href="SWIG.html#SWIG_readonly_variables">Creating read-only variables</a>
<li><a href="SWIG.html#SWIG_rename_ignore">Renaming and ignoring declarations</a>
<ul>
<li><a href="SWIG.html#SWIG_nn29">Simple renaming of specific identifiers</a>
<li><a href="SWIG.html#SWIG_advanced_renaming">Advanced renaming support</a>
<li><a href="SWIG.html#SWIG_limiting_renaming">Limiting global renaming rules</a>
<li><a href="SWIG.html#SWIG_chosen_unignore">Ignoring everything then wrapping a few selected symbols</a>
</ul>
<li><a href="SWIG.html#SWIG_default_args">Default/optional arguments</a>
<li><a href="SWIG.html#SWIG_nn30">Pointers to functions and callbacks</a>
</ul>
<li><a href="SWIG.html#SWIG_nn31">Structures and unions</a>
<ul>
<li><a href="SWIG.html#SWIG_nn32">Typedef and structures</a>
<li><a href="SWIG.html#SWIG_nn33">Character strings and structures</a>
<li><a href="SWIG.html#SWIG_nn34">Array 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_adding_member_functions">Adding member functions to C 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>
<ul>
<li><a href="SWIG.html#SWIG_nn41">The output of SWIG</a>
<li><a href="SWIG.html#SWIG_nn42">Code insertion blocks</a>
<li><a href="SWIG.html#SWIG_nn43">Inlined code blocks</a>
<li><a href="SWIG.html#SWIG_nn44">Initialization blocks</a>
</ul>
<li><a href="SWIG.html#SWIG_nn45">An Interface Building Strategy</a>
<ul>
<li><a href="SWIG.html#SWIG_nn46">Preparing a C program for SWIG</a>
<li><a href="SWIG.html#SWIG_nn47">The SWIG interface file</a>
<li><a href="SWIG.html#SWIG_nn48">Why use separate interface files?</a>
<li><a href="SWIG.html#SWIG_nn49">Getting the right header files</a>
<li><a href="SWIG.html#SWIG_nn50">What to do with main()</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="SWIGPlus.html#SWIGPlus">6 SWIG and C++</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn2">Comments on C++ Wrapping</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_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>
<li><a href="SWIGPlus.html#SWIGPlus_nn8">Default constructors, copy constructors and implicit destructors</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn9">When constructor wrappers aren't created</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn10">Copy constructors</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn11">Member functions</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn12">Static members</a>
<li><a href="SWIGPlus.html#SWIGPlus_member_data">Member data</a>
</ul>
<li><a href="SWIGPlus.html#SWIGPlus_default_args">Default arguments</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn15">Protection</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn16">Enums and constants</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn17">Friends</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_nn20">Inheritance</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_overloaded_methods">Wrapping Overloaded Functions and Methods</a>
<ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn24">Dispatch function generation</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn25">Ambiguity in Overloading</a>
<li><a href="SWIGPlus.html#SWIGPlus_ambiguity_resolution_renaming">Ambiguity resolution and renaming</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn27">Comments on overloading</a>
</ul>
<li><a href="SWIGPlus.html#SWIGPlus_nn28">Wrapping overloaded operators</a>
<li><a href="SWIGPlus.html#SWIGPlus_class_extension">Class extension</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn30">Templates</a>
<li><a href="SWIGPlus.html#SWIGPlus_namespaces">Namespaces</a>
<ul>
<li><a href="SWIGPlus.html#SWIGPlus_nspace">The nspace feature for namespaces</a>
</ul>
<li><a href="SWIGPlus.html#SWIGPlus_renaming_templated_types_namespaces">Renaming templated types in namespaces</a>
<li><a href="SWIGPlus.html#SWIGPlus_exception_specifications">Exception specifications</a>
<li><a href="SWIGPlus.html#SWIGPlus_catches">Exception handling with %catches</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn33">Pointers to Members</a>
<li><a href="SWIGPlus.html#SWIGPlus_smart_pointers">Smart pointers and operator-&gt;()</a>
<li><a href="SWIGPlus.html#SWIGPlus_ref_unref">C++ reference counted objects - ref/unref feature</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn35">Using declarations and inheritance</a>
<li><a href="SWIGPlus.html#SWIGPlus_nested_classes">Nested classes</a>
<li><a href="SWIGPlus.html#SWIGPlus_const">A brief rant about const-correctness</a>
<li><a href="SWIGPlus.html#SWIGPlus_nn42">Where to go for more information</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="CPlusPlus11.html#CPlusPlus11">7 SWIG and C++11</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="CPlusPlus11.html#CPlusPlus11_introduction">Introduction</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_core_language_changes">Core language changes</a>
<ul>
<li><a href="CPlusPlus11.html#CPlusPlus11_rvalue_reference_and_move_semantics">Rvalue reference and move semantics</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_generalized_constant_expressions">Generalized constant expressions</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_extern_template">Extern template</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_initializer_lists">Initializer lists</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_uniform_initialization">Uniform initialization</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_type_inference">Type inference</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_range_based_for_loop">Range-based for-loop</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_lambda_functions_and_expressions">Lambda functions and expressions</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_alternate_function_syntax">Alternate function syntax</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_object_construction_improvement">Object construction improvement</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_explicit_overrides_final">Explicit overrides and final</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_null_pointer_constant">Null pointer constant</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_strongly_typed_enumerations">Strongly typed enumerations</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_double_angle_brackets">Double angle brackets</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_explicit_conversion_operators">Explicit conversion operators</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_alias_templates">Alias templates</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_unrestricted_unions">Unrestricted unions</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_variadic_templates">Variadic templates</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_new_string_literals">New string literals</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_user_defined_literals">User-defined literals</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_thread_local_storage">Thread-local storage</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_defaulted_deleted">Explicitly defaulted functions and deleted functions</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_type_long_long_int">Type long long int</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_static_assertions">Static assertions</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_sizeof">Allow sizeof to work on members of classes without an explicit object</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_noexcept">Exception specifications and noexcept</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_alignment">Control and query object alignment</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_attributes">Attributes</a>
</ul>
<li><a href="CPlusPlus11.html#CPlusPlus11_standard_library_changes">Standard library changes</a>
<ul>
<li><a href="CPlusPlus11.html#CPlusPlus11_threading_facilities">Threading facilities</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_tuple_types">Tuple types</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_hash_tables">Hash tables</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_regular_expressions">Regular expressions</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_general_purpose_smart_pointers">General-purpose smart pointers</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_extensible_random_number_facility">Extensible random number facility</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_wrapper_reference">Wrapper reference</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_polymorphous_wrappers_for_function_objects">Polymorphous wrappers for function objects</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_type_traits_for_metaprogramming">Type traits for metaprogramming</a>
<li><a href="CPlusPlus11.html#CPlusPlus11_uniform_method_for_computing_return_type_of_function_objects">Uniform method for computing return type of function objects</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Preprocessor.html#Preprocessor">8 Preprocessing</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Preprocessor.html#Preprocessor_nn2">File inclusion</a>
<li><a href="Preprocessor.html#Preprocessor_nn3">File imports</a>
<li><a href="Preprocessor.html#Preprocessor_condition_compilation">Conditional Compilation</a>
<li><a href="Preprocessor.html#Preprocessor_nn5">Macro Expansion</a>
<li><a href="Preprocessor.html#Preprocessor_nn6">SWIG Macros</a>
<li><a href="Preprocessor.html#Preprocessor_nn7">C99 and GNU Extensions</a>
<li><a href="Preprocessor.html#Preprocessor_delimiters">Preprocessing and delimiters</a>
<ul>
<li><a href="Preprocessor.html#Preprocessor_nn8">Preprocessing and %{ ... %} &amp; " ... " delimiters</a>
<li><a href="Preprocessor.html#Preprocessor_nn9">Preprocessing and { ... } delimiters</a>
</ul>
<li><a href="Preprocessor.html#Preprocessor_typemap_delimiters">Preprocessor and Typemaps</a>
<li><a href="Preprocessor.html#Preprocessor_nn10">Viewing preprocessor output</a>
<li><a href="Preprocessor.html#Preprocessor_warning_error">The #error and #warning directives</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Library.html#Library">9 SWIG library</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Library.html#Library_nn2">The %include directive and library search path</a>
<li><a href="Library.html#Library_nn3">C Arrays and Pointers</a>
<ul>
<li><a href="Library.html#Library_nn4">cpointer.i</a>
<li><a href="Library.html#Library_carrays">carrays.i</a>
<li><a href="Library.html#Library_nn6">cmalloc.i</a>
<li><a href="Library.html#Library_nn7">cdata.i</a>
</ul>
<li><a href="Library.html#Library_nn8">C String Handling</a>
<ul>
<li><a href="Library.html#Library_nn9">Default string handling</a>
<li><a href="Library.html#Library_nn10">Passing binary data</a>
<li><a href="Library.html#Library_nn11">Using %newobject to release memory</a>
<li><a href="Library.html#Library_nn12">cstring.i</a>
</ul>
<li><a href="Library.html#Library_stl_cpp_library">STL/C++ Library</a>
<ul>
<li><a href="Library.html#Library_std_string">std::string</a>
<li><a href="Library.html#Library_std_vector">std::vector</a>
<li><a href="Library.html#Library_stl_exceptions">STL exceptions</a>
<li><a href="Library.html#Library_std_shared_ptr">shared_ptr smart pointer</a>
<li><a href="Library.html#Library_std_auto_ptr">auto_ptr smart pointer</a>
</ul>
<li><a href="Library.html#Library_nn16">Utility Libraries</a>
<ul>
<li><a href="Library.html#Library_nn17">exception.i</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Arguments.html#Arguments">10 Argument Handling</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Arguments.html#Arguments_nn2">The typemaps.i library</a>
<ul>
<li><a href="Arguments.html#Arguments_nn3">Introduction</a>
<li><a href="Arguments.html#Arguments_nn4">Input parameters</a>
<li><a href="Arguments.html#Arguments_nn5">Output parameters</a>
<li><a href="Arguments.html#Arguments_nn6">Input/Output parameters</a>
<li><a href="Arguments.html#Arguments_nn7">Using different names</a>
</ul>
<li><a href="Arguments.html#Arguments_nn8">Applying constraints to input values</a>
<ul>
<li><a href="Arguments.html#Arguments_nn9">Simple constraint example</a>
<li><a href="Arguments.html#Arguments_nn10">Constraint methods</a>
<li><a href="Arguments.html#Arguments_nn11">Applying constraints to new datatypes</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Typemaps.html#Typemaps">11 Typemaps</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Typemaps.html#Typemaps_nn2">Introduction</a>
<ul>
<li><a href="Typemaps.html#Typemaps_nn3">Type conversion</a>
<li><a href="Typemaps.html#Typemaps_nn4">Typemaps</a>
<li><a href="Typemaps.html#Typemaps_nn5">Pattern matching</a>
<li><a href="Typemaps.html#Typemaps_nn6">Reusing typemaps</a>
<li><a href="Typemaps.html#Typemaps_nn7">What can be done with typemaps?</a>
<li><a href="Typemaps.html#Typemaps_nn8">What can't be done with typemaps?</a>
<li><a href="Typemaps.html#Typemaps_aspects">Similarities to Aspect Oriented Programming</a>
<li><a href="Typemaps.html#Typemaps_nn9">The rest of this chapter</a>
</ul>
<li><a href="Typemaps.html#Typemaps_nn10">Typemap specifications</a>
<ul>
<li><a href="Typemaps.html#Typemaps_defining">Defining a typemap</a>
<li><a href="Typemaps.html#Typemaps_nn12">Typemap scope</a>
<li><a href="Typemaps.html#Typemaps_nn13">Copying a typemap</a>
<li><a href="Typemaps.html#Typemaps_nn14">Deleting a typemap</a>
<li><a href="Typemaps.html#Typemaps_nn15">Placement of typemaps</a>
</ul>
<li><a href="Typemaps.html#Typemaps_pattern_matching">Pattern matching rules</a>
<ul>
<li><a href="Typemaps.html#Typemaps_nn17">Basic matching rules</a>
<li><a href="Typemaps.html#Typemaps_typedef_reductions">Typedef reductions matching</a>
<li><a href="Typemaps.html#Typemaps_nn19">Default typemap matching rules</a>
<li><a href="Typemaps.html#Typemaps_multi_argument_typemaps_patterns">Multi-arguments typemaps</a>
<li><a href="Typemaps.html#Typemaps_matching_template_comparison">Matching rules compared to C++ templates</a>
<li><a href="Typemaps.html#Typemaps_debugging_search">Debugging typemap pattern matching</a>
</ul>
<li><a href="Typemaps.html#Typemaps_nn21">Code generation rules</a>
<ul>
<li><a href="Typemaps.html#Typemaps_nn22">Scope</a>
<li><a href="Typemaps.html#Typemaps_nn23">Declaring new local variables</a>
<li><a href="Typemaps.html#Typemaps_special_variables">Special variables</a>
<li><a href="Typemaps.html#Typemaps_special_variable_macros">Special variable macros</a>
<ul>
<li><a href="Typemaps.html#Typemaps_special_macro_descriptor">$descriptor(type)</a>
<li><a href="Typemaps.html#Typemaps_special_macro_typemap">$typemap(method, typepattern)</a>
</ul>
</ul>
<li><a href="Typemaps.html#Typemaps_nn25">Common typemap methods</a>
<ul>
<li><a href="Typemaps.html#Typemaps_nn26">"in" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn27">"typecheck" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn28">"out" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn29">"arginit" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn30">"default" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn31">"check" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn32">"argout" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn33">"freearg" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn34">"newfree" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn35">"memberin" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn36">"varin" typemap</a>
<li><a href="Typemaps.html#Typemaps_nn37">"varout" typemap</a>
<li><a href="Typemaps.html#throws_typemap">"throws" typemap</a>
</ul>
<li><a href="Typemaps.html#Typemaps_nn39">Some typemap examples</a>
<ul>
<li><a href="Typemaps.html#Typemaps_nn40">Typemaps for arrays</a>
<li><a href="Typemaps.html#Typemaps_nn41">Implementing constraints with typemaps</a>
</ul>
<li><a href="Typemaps.html#Typemaps_nn43">Typemaps for multiple target languages</a>
<li><a href="Typemaps.html#Typemaps_optimal">Optimal code generation when returning by value</a>
<li><a href="Typemaps.html#Typemaps_multi_argument_typemaps">Multi-argument typemaps</a>
<li><a href="Typemaps.html#Typemaps_warnings">Typemap warnings</a>
<li><a href="Typemaps.html#Typemaps_fragments">Typemap fragments</a>
<ul>
<li><a href="Typemaps.html#Typemaps_fragment_type_specialization">Fragment type specialization</a>
<li><a href="Typemaps.html#Typemaps_automatic_specialization">Fragments and automatic typemap specialization</a>
</ul>
<li><a href="Typemaps.html#Typemaps_runtime_type_checker">The run-time type checker</a>
<ul>
<li><a href="Typemaps.html#Typemaps_nn45">Implementation</a>
<li><a href="Typemaps.html#Typemaps_runtime_type_checker_usage">Usage</a>
</ul>
<li><a href="Typemaps.html#Typemaps_overloading">Typemaps and overloading</a>
<li><a href="Typemaps.html#Typemaps_nn48">More about <tt>%apply</tt> and <tt>%clear</tt></a>
<li><a href="Typemaps.html#Typemaps_nn47">Passing data between typemaps</a>
<li><a href="Typemaps.html#Typemaps_nn52">C++ "this" pointer</a>
<li><a href="Typemaps.html#Typemaps_nn51">Where to go for more information?</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Customization.html#Customization">12 Customization Features</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Customization.html#Customization_exception">Exception handling with %exception</a>
<ul>
<li><a href="Customization.html#Customization_nn3">Handling exceptions in C code</a>
<li><a href="Customization.html#Customization_nn4">Exception handling with longjmp()</a>
<li><a href="Customization.html#Customization_nn5">Handling C++ exceptions</a>
<li><a href="Customization.html#Customization_allowexcept">Exception handlers for variables</a>
<li><a href="Customization.html#Customization_nn6">Defining different exception handlers</a>
<li><a href="Customization.html#Customization_exception_special_variables">Special variables for %exception</a>
<li><a href="Customization.html#Customization_nn7">Using The SWIG exception library</a>
</ul>
<li><a href="Customization.html#Customization_ownership">Object ownership and %newobject</a>
<li><a href="Customization.html#Customization_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>
<li><a href="Customization.html#Customization_features_example">Feature example</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Contract.html#Contract">13 Contracts</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Contract.html#Contract_nn2">The %contract directive</a>
<li><a href="Contract.html#Contract_nn3">%contract and classes</a>
<li><a href="Contract.html#Contract_nn4">Constant aggregation and %aggregate_check</a>
<li><a href="Contract.html#Contract_nn5">Notes</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Varargs.html#Varargs">14 Variable Length Arguments</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Varargs.html#Varargs_nn2">Introduction</a>
<li><a href="Varargs.html#Varargs_nn3">The Problem</a>
<li><a href="Varargs.html#Varargs_nn4">Default varargs support</a>
<li><a href="Varargs.html#Varargs_nn5">Argument replacement using %varargs</a>
<li><a href="Varargs.html#Varargs_nn6">Varargs and typemaps</a>
<li><a href="Varargs.html#Varargs_nn7">Varargs wrapping with libffi</a>
<li><a href="Varargs.html#Varargs_nn8">Wrapping of va_list</a>
<li><a href="Varargs.html#Varargs_nn9">C++ Issues</a>
<li><a href="Varargs.html#Varargs_nn10">Discussion</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Warnings.html#Warnings">15 Warning Messages</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Warnings.html#Warnings_nn2">Introduction</a>
<li><a href="Warnings.html#Warnings_suppression">Warning message suppression</a>
<li><a href="Warnings.html#Warnings_nn4">Enabling extra warnings</a>
<li><a href="Warnings.html#Warnings_nn5">Issuing a warning message</a>
<li><a href="Warnings.html#Warnings_symbolic_symbols">Symbolic symbols</a>
<li><a href="Warnings.html#Warnings_nn6">Commentary</a>
<li><a href="Warnings.html#Warnings_nn7">Warnings as errors</a>
<li><a href="Warnings.html#Warnings_nn8">Message output format</a>
<li><a href="Warnings.html#Warnings_nn9">Warning number reference</a>
<ul>
<li><a href="Warnings.html#Warnings_nn10">Deprecated features (100-199)</a>
<li><a href="Warnings.html#Warnings_nn11">Preprocessor (200-299)</a>
<li><a href="Warnings.html#Warnings_nn12">C/C++ Parser (300-399)</a>
<li><a href="Warnings.html#Warnings_nn13">Types and typemaps (400-499) </a>
<li><a href="Warnings.html#Warnings_nn14">Code generation (500-599)</a>
<li><a href="Warnings.html#Warnings_nn15">Language module specific (700-899) </a>
<li><a href="Warnings.html#Warnings_nn16">User defined (900-999)</a>
</ul>
<li><a href="Warnings.html#Warnings_nn17">History</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Modules.html#Modules">16 Working with Modules</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Modules.html#Modules_introduction">Modules Introduction</a>
<li><a href="Modules.html#Modules_nn1">Basics</a>
<li><a href="Modules.html#Modules_nn2">The SWIG runtime code</a>
<li><a href="Modules.html#Modules_external_run_time">External access to the runtime</a>
<li><a href="Modules.html#Modules_nn4">A word of caution about static libraries</a>
<li><a href="Modules.html#Modules_nn5">References</a>
<li><a href="Modules.html#Modules_nn6">Reducing the wrapper file size</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="CCache.html#CCache">17 Using SWIG with ccache - ccache-swig(1) manpage</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="CCache.html#CCache_nn2">NAME</a>
<li><a href="CCache.html#CCache_nn3">SYNOPSIS</a>
<li><a href="CCache.html#CCache_nn4">DESCRIPTION</a>
<li><a href="CCache.html#CCache_nn5">OPTIONS SUMMARY</a>
<li><a href="CCache.html#CCache_nn6">OPTIONS</a>
<li><a href="CCache.html#CCache_nn7">INSTALLATION</a>
<li><a href="CCache.html#CCache_nn8">EXTRA OPTIONS</a>
<li><a href="CCache.html#CCache_nn9">ENVIRONMENT VARIABLES</a>
<li><a href="CCache.html#CCache_nn10">CACHE SIZE MANAGEMENT</a>
<li><a href="CCache.html#CCache_nn11">CACHE COMPRESSION</a>
<li><a href="CCache.html#CCache_nn12">HOW IT WORKS</a>
<li><a href="CCache.html#CCache_nn13">USING CCACHE WITH DISTCC</a>
<li><a href="CCache.html#CCache_nn14">SHARING A CACHE</a>
<li><a href="CCache.html#CCache_nn15">HISTORY</a>
<li><a href="CCache.html#CCache_nn16">DIFFERENCES FROM COMPILERCACHE</a>
<li><a href="CCache.html#CCache_nn17">CREDITS</a>
<li><a href="CCache.html#CCache_nn18">AUTHOR</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Allegrocl.html#Allegrocl">18 SWIG and Allegro Common Lisp</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn2">Basics</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn3">Running SWIG</a>
<li><a href="Allegrocl.html#Allegrocl_nn4">Command Line Options</a>
<li><a href="Allegrocl.html#Allegrocl_nn5">Inserting user code into generated files</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn6">Wrapping Overview</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn7">Function Wrapping</a>
<li><a href="Allegrocl.html#Allegrocl_nn8">Foreign Wrappers</a>
<li><a href="Allegrocl.html#Allegrocl_nn9">FFI Wrappers</a>
<li><a href="Allegrocl.html#Allegrocl_nn10">Non-overloaded Defuns</a>
<li><a href="Allegrocl.html#Allegrocl_nn11">Overloaded Defuns</a>
<li><a href="Allegrocl.html#Allegrocl_nn12">What about constant and variable access?</a>
<li><a href="Allegrocl.html#Allegrocl_nn13">Object Wrapping</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn14">Wrapping Details</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn15">Namespaces</a>
<li><a href="Allegrocl.html#Allegrocl_nn16">Constants</a>
<li><a href="Allegrocl.html#Allegrocl_nn17">Variables</a>
<li><a href="Allegrocl.html#Allegrocl_nn18">Enumerations</a>
<li><a href="Allegrocl.html#Allegrocl_nn19">Arrays</a>
<li><a href="Allegrocl.html#Allegrocl_nn20">Classes and Structs and Unions (oh my!)</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn21">CLOS wrapping of</a>
<li><a href="Allegrocl.html#Allegrocl_nn22">CLOS Inheritance</a>
<li><a href="Allegrocl.html#Allegrocl_nn23">Member fields and functions</a>
<li><a href="Allegrocl.html#Allegrocl_nn24">Why not directly access C++ classes using foreign types?</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn25">Templates</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn26">Generating wrapper code for templates</a>
<li><a href="Allegrocl.html#Allegrocl_nn27">Implicit Template instantiation</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn28">Typedef, Templates, and Synonym Types</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn29">Choosing a primary type</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn30">Function overloading/Parameter defaulting</a>
<li><a href="Allegrocl.html#Allegrocl_nn31">Operator wrapping and Operator overloading</a>
<li><a href="Allegrocl.html#Allegrocl_nn32">Varargs</a>
<li><a href="Allegrocl.html#Allegrocl_nn33">C++ Exceptions</a>
<li><a href="Allegrocl.html#Allegrocl_nn34">Pass by value, pass by reference</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn35">Typemaps</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn36">Code Generation in the C++ Wrapper</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn37">IN Typemap</a>
<li><a href="Allegrocl.html#Allegrocl_nn38">OUT Typemap</a>
<li><a href="Allegrocl.html#Allegrocl_nn39">CTYPE Typemap</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn40">Code generation in Lisp wrappers</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn41">LIN Typemap</a>
<li><a href="Allegrocl.html#Allegrocl_nn42">LOUT Typemap</a>
<li><a href="Allegrocl.html#Allegrocl_nn43">FFITYPE Typemap</a>
<li><a href="Allegrocl.html#Allegrocl_nn44">LISPTYPE Typemap</a>
<li><a href="Allegrocl.html#Allegrocl_nn45">LISPCLASS Typemap</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn46">Modifying SWIG behavior using typemaps</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn47">Identifier Converter functions</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn48">Creating symbols in the lisp environment</a>
<li><a href="Allegrocl.html#Allegrocl_nn49">Existing identifier-converter functions</a>
<ul>
<li><a href="Allegrocl.html#Allegrocl_nn50">identifier-convert-null</a>
<li><a href="Allegrocl.html#Allegrocl_nn51">identifier-convert-lispify</a>
<li><a href="Allegrocl.html#Allegrocl_nn52">Default identifier to symbol conversions</a>
</ul>
<li><a href="Allegrocl.html#Allegrocl_nn53">Defining your own identifier-converter</a>
<li><a href="Allegrocl.html#Allegrocl_nn54">Instructing SWIG to use a particular identifier-converter</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Android.html#Android">19 SWIG and Android</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Android.html#Android_overview">Overview</a>
<li><a href="Android.html#Android_examples">Android examples</a>
<ul>
<li><a href="Android.html#Android_examples_intro">Examples introduction</a>
<li><a href="Android.html#Android_example_simple">Simple C example</a>
<li><a href="Android.html#Android_example_class">C++ class example</a>
<li><a href="Android.html#Android_examples_other">Other examples</a>
</ul>
<li><a href="Android.html#Android_stl">C++ STL</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="CSharp.html#CSharp">20 SWIG and C#</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="CSharp.html#CSharp_introduction">Introduction</a>
<ul>
<li><a href="CSharp.html#CSharp_introduction_swig2_compatibility">SWIG 2 Compatibility</a>
</ul>
<li><a href="CSharp.html#CSharp_differences_java">Differences to the Java module</a>
<li><a href="CSharp.html#CSharp_void_pointers">Void pointers</a>
<li><a href="CSharp.html#CSharp_arrays">C# Arrays</a>
<ul>
<li><a href="CSharp.html#CSharp_arrays_swig_library">The SWIG C arrays library</a>
<li><a href="CSharp.html#CSharp_arrays_pinvoke_default_array_marshalling">Managed arrays using P/Invoke default array marshalling</a>
<li><a href="CSharp.html#CSharp_arrays_pinning">Managed arrays using pinning</a>
</ul>
<li><a href="CSharp.html#CSharp_exceptions">C# Exceptions</a>
<ul>
<li><a href="CSharp.html#CSharp_exception_example_check_typemap">C# exception example using "check" typemap</a>
<li><a href="CSharp.html#CSharp_exception_example_percent_exception">C# exception example using %exception</a>
<li><a href="CSharp.html#CSharp_exception_example_exception_specifications">C# exception example using exception specifications</a>
<li><a href="CSharp.html#CSharp_custom_application_exception">Custom C# ApplicationException example</a>
</ul>
<li><a href="CSharp.html#CSharp_directors">C# Directors</a>
<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_director_caveats">Director caveats</a>
</ul>
<li><a href="CSharp.html#CSharp_multiple_modules">Multiples modules</a>
<li><a href="CSharp.html#CSharp_typemap_examples">C# Typemap examples</a>
<ul>
<li><a href="CSharp.html#CSharp_memory_management_member_variables">Memory management when returning references to member variables</a>
<li><a href="CSharp.html#CSharp_memory_management_objects">Memory management for objects passed to the C++ layer</a>
<li><a href="CSharp.html#CSharp_date_marshalling">Date marshalling using the csin typemap and associated attributes</a>
<li><a href="CSharp.html#CSharp_date_properties">A date example demonstrating marshalling of C# properties</a>
<li><a href="CSharp.html#CSharp_date_pre_post_directors">Date example demonstrating the 'pre' and 'post' typemap attributes for directors</a>
<li><a href="CSharp.html#CSharp_partial_classes">Turning wrapped classes into partial classes</a>
<li><a href="CSharp.html#CSharp_extending_proxy_class">Extending proxy classes with additional C# code</a>
<li><a href="CSharp.html#CSharp_enum_underlying_type">Underlying type for enums</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Chicken.html#Chicken">21 SWIG and Chicken</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Chicken.html#Chicken_nn2">Preliminaries</a>
<ul>
<li><a href="Chicken.html#Chicken_nn3">Running SWIG in C mode</a>
<li><a href="Chicken.html#Chicken_nn4">Running SWIG in C++ mode</a>
</ul>
<li><a href="Chicken.html#Chicken_nn5">Code Generation</a>
<ul>
<li><a href="Chicken.html#Chicken_nn6">Naming Conventions</a>
<li><a href="Chicken.html#Chicken_nn7">Modules</a>
<li><a href="Chicken.html#Chicken_nn8">Constants and Variables</a>
<li><a href="Chicken.html#Chicken_nn9">Functions</a>
<li><a href="Chicken.html#Chicken_nn10">Exceptions</a>
</ul>
<li><a href="Chicken.html#Chicken_nn11">TinyCLOS</a>
<li><a href="Chicken.html#Chicken_nn12">Linkage</a>
<ul>
<li><a href="Chicken.html#Chicken_nn13">Static binary or shared library linked at compile time</a>
<li><a href="Chicken.html#Chicken_nn14">Building chicken extension libraries</a>
<li><a href="Chicken.html#Chicken_nn15">Linking multiple SWIG modules with TinyCLOS</a>
</ul>
<li><a href="Chicken.html#Chicken_nn16">Typemaps</a>
<li><a href="Chicken.html#Chicken_nn17">Pointers</a>
<ul>
<li><a href="Chicken.html#Chicken_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 -->
<h3><a href="D.html#D">22 SWIG and D</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="D.html#D_introduction">Introduction</a>
<li><a href="D.html#D_command_line_invocation">Command line invocation</a>
<li><a href="D.html#D_typemaps">Typemaps</a>
<ul>
<li><a href="D.html#D_typemap_name_comparison">C# &lt;-&gt; D name comparison</a>
<li><a href="D.html#D_ctype_imtype_dtype">ctype, imtype, dtype</a>
<li><a href="D.html#D_in_out_directorin_direcetorout">in, out, directorin, directorout</a>
<li><a href="D.html#D_din_dout_ddirectorin_ddirectorout">din, dout, ddirectorin, ddirectorout</a>
<li><a href="D.html#D_typecheck_typemaps">typecheck typemaps</a>
<li><a href="D.html#D_code_injection_typemaps">Code injection typemaps</a>
<li><a href="D.html#D_special_variables">Special variable macros</a>
</ul>
<li><a href="D.html#D_features"><tt>%feature</tt>s</a>
<li><a href="D.html#D_pragmas">Pragmas</a>
<li><a href="D.html#D_exceptions">D Exceptions</a>
<li><a href="D.html#D_directors">D Directors</a>
<li><a href="D.html#D_other_features">Other features</a>
<ul>
<li><a href="D.html#D_nspace">Extended namespace support (<tt>nspace</tt>)</a>
<li><a href="D.html#D_native_pointer_support">Native pointer support</a>
<li><a href="D.html#D_operator_overloading">Operator overloading</a>
<li><a href="D.html#D_test_suite">Running the test-suite</a>
</ul>
<li><a href="D.html#D_typemap_examples">D Typemap examples</a>
<li><a href="D.html#D_planned_features">Work in progress and planned features</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Go.html#Go">23 SWIG and Go</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Go.html#Go_overview">Overview</a>
<li><a href="Go.html#Go_examples">Examples</a>
<li><a href="Go.html#Go_running_swig">Running SWIG with Go</a>
<ul>
<li><a href="Go.html#Go_commandline">Additional Commandline Options</a>
<li><a href="Go.html#Go_outputs">Go Output Files</a>
</ul>
<li><a href="Go.html#Go_basic_tour">A tour of basic C/C++ wrapping</a>
<ul>
<li><a href="Go.html#Go_package">Go Package Name</a>
<li><a href="Go.html#Go_names">Go Names</a>
<li><a href="Go.html#Go_constants">Go Constants</a>
<li><a href="Go.html#Go_enumerations">Go Enumerations</a>
<li><a href="Go.html#Go_classes">Go Classes</a>
<ul>
<li><a href="Go.html#Go_class_memory">Go Class Memory Management</a>
<li><a href="Go.html#Go_class_inheritance">Go Class Inheritance</a>
</ul>
<li><a href="Go.html#Go_templates">Go Templates</a>
<li><a href="Go.html#Go_director_classes">Go Director Classes</a>
<li><a href="Go.html#Go_primitive_type_mappings">Default Go primitive type mappings</a>
<li><a href="Go.html#Go_output_arguments">Output arguments</a>
<li><a href="Go.html#Go_adding_additional_code">Adding additional go code</a>
<li><a href="Go.html#Go_typemaps">Go typemaps</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Guile.html#Guile">24 SWIG and Guile</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Guile.html#Guile_nn1">Supported Guile Versions</a>
<li><a href="Guile.html#Guile_nn2">Meaning of "Module"</a>
<li><a href="Guile.html#Guile_nn3">Old GH Guile API</a>
<li><a href="Guile.html#Guile_nn4">Linkage</a>
<ul>
<li><a href="Guile.html#Guile_nn5">Simple Linkage</a>
<li><a href="Guile.html#Guile_nn6">Passive Linkage</a>
<li><a href="Guile.html#Guile_nn7">Native Guile Module Linkage</a>
<li><a href="Guile.html#Guile_nn8">Old Auto-Loading Guile Module Linkage</a>
<li><a href="Guile.html#Guile_nn9">Hobbit4D Linkage</a>
</ul>
<li><a href="Guile.html#Guile_nn10">Underscore Folding</a>
<li><a href="Guile.html#Guile_nn11">Typemaps</a>
<li><a href="Guile.html#Guile_nn12">Representation of pointers as smobs</a>
<ul>
<li><a href="Guile.html#Guile_nn14">Smobs</a>
<li><a href="Guile.html#Guile_nn15">Garbage Collection</a>
</ul>
<li><a href="Guile.html#Guile_nn16">Exception Handling</a>
<li><a href="Guile.html#Guile_nn17">Procedure documentation</a>
<li><a href="Guile.html#Guile_nn18">Procedures with setters</a>
<li><a href="Guile.html#Guile_nn19">GOOPS Proxy Classes</a>
<ul>
<li><a href="Guile.html#Guile_nn20">Naming Issues</a>
<li><a href="Guile.html#Guile_nn21">Linking</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Java.html#Java">25 SWIG and Java</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Java.html#Java_overview">Overview</a>
<li><a href="Java.html#Java_preliminaries">Preliminaries</a>
<ul>
<li><a href="Java.html#Java_running_swig">Running SWIG</a>
<li><a href="Java.html#Java_commandline">Additional Commandline Options</a>
<li><a href="Java.html#Java_getting_right_headers">Getting the right header files</a>
<li><a href="Java.html#Java_compiling_dynamic">Compiling a dynamic module</a>
<li><a href="Java.html#Java_using_module">Using your module</a>
<li><a href="Java.html#Java_dynamic_linking_problems">Dynamic linking problems</a>
<li><a href="Java.html#Java_compilation_problems_cpp">Compilation problems and compiling with C++</a>
<li><a href="Java.html#Java_building_windows">Building on Windows</a>
<ul>
<li><a href="Java.html#Java_visual_studio">Running SWIG from Visual Studio</a>
<li><a href="Java.html#Java_nmake">Using NMAKE</a>
</ul>
</ul>
<li><a href="Java.html#Java_basic_tour">A tour of basic C/C++ wrapping</a>
<ul>
<li><a href="Java.html#Java_module_packages_classes">Modules, packages and generated Java classes</a>
<li><a href="Java.html#Java_functions">Functions</a>
<li><a href="Java.html#Java_global_variables">Global variables</a>
<li><a href="Java.html#Java_constants">Constants</a>
<li><a href="Java.html#Java_enumerations">Enumerations</a>
<ul>
<li><a href="Java.html#Java_anonymous_enums">Anonymous enums</a>
<li><a href="Java.html#Java_typesafe_enums">Typesafe enums</a>
<li><a href="Java.html#Java_proper_enums">Proper Java enums</a>
<li><a href="Java.html#Java_typeunsafe_enums">Type unsafe enums</a>
<li><a href="Java.html#Java_simple_enums">Simple enums</a>
</ul>
<li><a href="Java.html#Java_pointers">Pointers</a>
<li><a href="Java.html#Java_structures">Structures</a>
<li><a href="Java.html#Java_classes">C++ classes</a>
<li><a href="Java.html#Java_inheritance">C++ inheritance</a>
<li><a href="Java.html#Java_pointers_refs_arrays">Pointers, references, arrays and pass by value</a>
<ul>
<li><a href="Java.html#Java_null_pointers">Null pointers</a>
</ul>
<li><a href="Java.html#Java_overloaded_functions">C++ overloaded functions</a>
<li><a href="Java.html#Java_default_arguments">C++ default arguments</a>
<li><a href="Java.html#Java_namespaces">C++ namespaces</a>
<li><a href="Java.html#Java_templates">C++ templates</a>
<li><a href="Java.html#Java_smart_pointers">C++ Smart Pointers</a>
</ul>
<li><a href="Java.html#Java_further_details">Further details on the generated Java classes</a>
<ul>
<li><a href="Java.html#Java_imclass">The intermediary JNI class</a>
<ul>
<li><a href="Java.html#Java_imclass_pragmas">The intermediary JNI class pragmas</a>
</ul>
<li><a href="Java.html#Java_module_class">The Java module class</a>
<ul>
<li><a href="Java.html#Java_module_class_pragmas">The Java module class pragmas</a>
</ul>
<li><a href="Java.html#Java_proxy_classes">Java proxy classes</a>
<ul>
<li><a href="Java.html#Java_memory_management">Memory management</a>
<li><a href="Java.html#Java_inheritance_mirroring">Inheritance</a>
<li><a href="Java.html#Java_proxy_classes_gc">Proxy classes and garbage collection</a>
<li><a href="Java.html#Java_pgcpp">The premature garbage collection prevention parameter for proxy class marshalling</a>
<li><a href="Java.html#Java_multithread_libraries">Single threaded applications and thread safety</a>
</ul>
<li><a href="Java.html#Java_type_wrapper_classes">Type wrapper classes</a>
<li><a href="Java.html#Java_enum_classes">Enum classes</a>
<ul>
<li><a href="Java.html#Java_typesafe_enums_classes">Typesafe enum classes</a>
<li><a href="Java.html#Java_proper_enums_classes">Proper Java enum classes</a>
<li><a href="Java.html#Java_typeunsafe_enums_classes">Type unsafe enum classes</a>
</ul>
</ul>
<li><a href="Java.html#Java_directors">Cross language polymorphism using directors</a>
<ul>
<li><a href="Java.html#Java_enabling_directors">Enabling directors</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_example">Simple directors example</a>
<li><a href="Java.html#Java_directors_threading">Director threading issues</a>
<li><a href="Java.html#Java_directors_performance">Director performance tuning</a>
<li><a href="Java.html#Java_exceptions_from_directors">Java exceptions from directors</a>
</ul>
<li><a href="Java.html#Java_allprotected">Accessing protected members</a>
<li><a href="Java.html#Java_common_customization">Common customization features</a>
<ul>
<li><a href="Java.html#Java_helper_functions">C/C++ helper functions</a>
<li><a href="Java.html#Java_class_extension">Class extension with %extend</a>
<li><a href="Java.html#Java_exception_handling">Exception handling with %exception and %javaexception</a>
<li><a href="Java.html#Java_method_access">Method access with %javamethodmodifiers</a>
</ul>
<li><a href="Java.html#Java_tips_techniques">Tips and techniques</a>
<ul>
<li><a href="Java.html#Java_input_output_parameters">Input and output parameters using primitive pointers and references</a>
<li><a href="Java.html#Java_simple_pointers">Simple pointers</a>
<li><a href="Java.html#Java_c_arrays">Wrapping C arrays with Java arrays</a>
<li><a href="Java.html#Java_unbounded_c_arrays">Unbounded C Arrays</a>
<li><a href="Java.html#Java_binary_char">Binary data vs Strings</a>
<li><a href="Java.html#Java_heap_allocations">Overriding new and delete to allocate from Java heap</a>
</ul>
<li><a href="Java.html#Java_typemaps">Java typemaps</a>
<ul>
<li><a href="Java.html#Java_default_primitive_type_mappings">Default primitive type mappings</a>
<li><a href="Java.html#Java_default_non_primitive_typemaps">Default typemaps for non-primitive types</a>
<li><a href="Java.html#Java_jvm64">Sixty four bit JVMs</a>
<li><a href="Java.html#Java_what_is_typemap">What is a typemap?</a>
<li><a href="Java.html#Java_typemaps_c_to_java_types">Typemaps for mapping C/C++ types to Java types</a>
<li><a href="Java.html#Java_typemap_attributes">Java typemap attributes</a>
<li><a href="Java.html#Java_special_variables">Java special variables</a>
<li><a href="Java.html#Java_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>
<li><a href="Java.html#Java_typemap_examples">Typemap Examples</a>
<ul>
<li><a href="Java.html#Java_simpler_enum_classes">Simpler Java enums for enums without initializers</a>
<li><a href="Java.html#Java_exception_typemap">Handling C++ exception specifications as Java exceptions</a>
<li><a href="Java.html#Java_nan_exception_typemap">NaN Exception - exception handling for a particular type</a>
<li><a href="Java.html#Java_converting_java_string_arrays">Converting Java String arrays to char ** </a>
<li><a href="Java.html#Java_expanding_java_object">Expanding a Java object to multiple arguments</a>
<li><a href="Java.html#Java_using_typemaps_return_arguments">Using typemaps to return arguments</a>
<li><a href="Java.html#Java_adding_downcasts">Adding Java downcasts to polymorphic return types</a>
<li><a href="Java.html#Java_adding_equals_method">Adding an equals method to the Java classes</a>
<li><a href="Java.html#Java_void_pointers">Void pointers and a common Java base class</a>
<li><a href="Java.html#Java_struct_pointer_pointer">Struct pointer to pointer</a>
<li><a href="Java.html#Java_memory_management_member_variables">Memory management when returning references to member variables</a>
<li><a href="Java.html#Java_memory_management_objects">Memory management for objects passed to the C++ layer</a>
<li><a href="Java.html#Java_date_marshalling">Date marshalling using the javain typemap and associated attributes</a>
</ul>
<li><a href="Java.html#Java_directors_faq">Living with Java Directors</a>
<li><a href="Java.html#Java_odds_ends">Odds and ends</a>
<ul>
<li><a href="Java.html#Java_javadoc_comments">JavaDoc comments</a>
<li><a href="Java.html#Java_functional_interface">Functional interface without proxy classes</a>
<li><a href="Java.html#Java_using_own_jni_functions">Using your own JNI functions</a>
<li><a href="Java.html#Java_performance">Performance concerns and hints</a>
<li><a href="Java.html#Java_debugging">Debugging</a>
</ul>
<li><a href="Java.html#Java_examples">Java Examples</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Javascript.html#Javascript">26 SWIG and Javascript</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Javascript.html#Javascript_overview">Overview</a>
<li><a href="Javascript.html#Javascript_preliminaries">Preliminaries</a>
<ul>
<li><a href="Javascript.html#Javascript_running_swig">Running SWIG</a>
<li><a href="Javascript.html#Javascript_running_tests_examples">Running Tests and Examples</a>
<li><a href="Javascript.html#Javascript_known_issues">Known Issues</a>
</ul>
<li><a href="Javascript.html#Javascript_integration">Integration</a>
<ul>
<li><a href="Javascript.html#Javascript_node_extensions">Creating node.js Extensions</a>
<ul>
<li><a href="Javascript.html#Javascript_troubleshooting">Troubleshooting</a>
</ul>
<li><a href="Javascript.html#Javascript_embedded_webkit">Embedded Webkit</a>
<ul>
<li><a href="Javascript.html#Javascript_osx">OSX</a>
<li><a href="Javascript.html#Javascript_gtk">GTK</a>
</ul>
<li><a href="Javascript.html#Javascript_applications_webkit">Creating Applications with node-webkit</a>
</ul>
<li><a href="Javascript.html#Javascript_nn14">Examples</a>
<ul>
<li><a href="Javascript.html#Javascript_simple_example">Simple</a>
<li><a href="Javascript.html#Javascript_class_example">Class</a>
</ul>
<li><a href="Javascript.html#Javascript_implementation">Implementation</a>
<ul>
<li><a href="Javascript.html#Javascript_source_code">Source Code</a>
<li><a href="Javascript.html#Javascript_code_templates">Code Templates</a>
<li><a href="Javascript.html#Javascript_emitter">Emitter</a>
<li><a href="Javascript.html#Javascript_emitter_states">Emitter states</a>
<li><a href="Javascript.html#Javascript_jsc_exceptions">Handling Exceptions in JavascriptCore</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Lisp.html#Lisp">27 SWIG and Common Lisp</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Lisp.html#Lisp_nn2">Allegro Common Lisp</a>
<li><a href="Lisp.html#Lisp_nn3">Common Foreign Function Interface(CFFI)</a>
<ul>
<li><a href="Lisp.html#Lisp_nn4">Additional Commandline Options </a>
<li><a href="Lisp.html#Lisp_nn5">Generating CFFI bindings</a>
<li><a href="Lisp.html#Lisp_nn6">Generating CFFI bindings for C++ code</a>
<li><a href="Lisp.html#Lisp_nn7">Inserting user code into generated files</a>
</ul>
<li><a href="Lisp.html#Lisp_nn8">CLISP</a>
<ul>
<li><a href="Lisp.html#Lisp_nn9">Additional Commandline Options </a>
<li><a href="Lisp.html#Lisp_nn10">Details on CLISP bindings</a>
</ul>
<li><a href="Lisp.html#Lisp_nn11">UFFI </a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Lua.html#Lua">28 SWIG and Lua</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Lua.html#Lua_nn2">Preliminaries</a>
<li><a href="Lua.html#Lua_nn3">Running SWIG</a>
<ul>
<li><a href="Lua.html#Lua_commandline">Additional command line options</a>
<li><a href="Lua.html#Lua_nn4">Compiling and Linking and Interpreter</a>
<li><a href="Lua.html#Lua_nn5">Compiling a dynamic module</a>
<li><a href="Lua.html#Lua_nn6">Using your module</a>
</ul>
<li><a href="Lua.html#Lua_nn7">A tour of basic C/C++ wrapping</a>
<ul>
<li><a href="Lua.html#Lua_nn8">Modules</a>
<li><a href="Lua.html#Lua_nn9">Functions</a>
<li><a href="Lua.html#Lua_nn10">Global variables</a>
<li><a href="Lua.html#Lua_nn11">Constants and enums</a>
<ul>
<li><a href="Lua.html#Lua_nn13">Constants/enums and classes/structures</a>
</ul>
<li><a href="Lua.html#Lua_nn12">Pointers</a>
<li><a href="Lua.html#Lua_structures">Structures</a>
<li><a href="Lua.html#Lua_nn14">C++ classes</a>
<li><a href="Lua.html#Lua_nn15">C++ inheritance</a>
<li><a href="Lua.html#Lua_nn16">Pointers, references, values, and arrays</a>
<li><a href="Lua.html#Lua_nn17">C++ overloaded functions</a>
<li><a href="Lua.html#Lua_nn18">C++ operators</a>
<li><a href="Lua.html#Lua_nn19">Class extension with %extend</a>
<li><a href="Lua.html#Lua_nn20">Using %newobject to release memory</a>
<li><a href="Lua.html#Lua_nn21">C++ templates</a>
<li><a href="Lua.html#Lua_nn22">C++ Smart Pointers</a>
<li><a href="Lua.html#Lua_nn23">C++ Exceptions</a>
<li><a href="Lua.html#Lua_namespaces">Namespaces </a>
<ul>
<li><a href="Lua.html#Lua_nn27">Compatibility Note </a>
<li><a href="Lua.html#Lua_nn29">Names </a>
<li><a href="Lua.html#Lua_nn30">Inheritance </a>
</ul>
</ul>
<li><a href="Lua.html#Lua_nn24">Typemaps</a>
<ul>
<li><a href="Lua.html#Lua_nn25">What is a typemap?</a>
<li><a href="Lua.html#Lua_nn26">Using typemaps</a>
<li><a href="Lua.html#Lua_typemap_arrays">Typemaps and arrays</a>
<li><a href="Lua.html#Lua_typemaps_ptr_ptr_functions">Typemaps and pointer-pointer functions</a>
</ul>
<li><a href="Lua.html#Lua_writing_typemaps">Writing typemaps</a>
<ul>
<li><a href="Lua.html#Lua_typemaps_write">Typemaps you can write</a>
<li><a href="Lua.html#Lua_nn31">SWIG's Lua-C API</a>
</ul>
<li><a href="Lua.html#Lua_nn32">Customization of your Bindings</a>
<ul>
<li><a href="Lua.html#Lua_nn33">Writing your own custom wrappers</a>
<li><a href="Lua.html#Lua_nn34">Adding additional Lua code</a>
</ul>
<li><a href="Lua.html#Lua_nn35">Details on the Lua binding</a>
<ul>
<li><a href="Lua.html#Lua_nn36">Binding global data into the module.</a>
<li><a href="Lua.html#Lua_nn37">Userdata and Metatables</a>
<li><a href="Lua.html#Lua_nn38">Memory management</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Modula3.html#Modula3">29 SWIG and Modula-3</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Modula3.html#Modula3_modula3_overview">Overview</a>
<ul>
<li><a href="Modula3.html#Modula3_motivation">Motivation</a>
</ul>
<li><a href="Modula3.html#Modula3_conception">Conception</a>
<ul>
<li><a href="Modula3.html#Modula3_cinterface">Interfaces to C libraries</a>
<li><a href="Modula3.html#Modula3_cppinterface">Interfaces to C++ libraries</a>
</ul>
<li><a href="Modula3.html#Modula3_preliminaries">Preliminaries</a>
<ul>
<li><a href="Modula3.html#Modula3_compilers">Compilers</a>
<li><a href="Modula3.html#Modula3_commandline">Additional Commandline Options</a>
</ul>
<li><a href="Modula3.html#Modula3_typemaps">Modula-3 typemaps</a>
<ul>
<li><a href="Modula3.html#Modula3_inoutparam">Inputs and outputs</a>
<li><a href="Modula3.html#Modula3_ordinals">Subranges, Enumerations, Sets</a>
<li><a href="Modula3.html#Modula3_class">Objects</a>
<li><a href="Modula3.html#Modula3_imports">Imports</a>
<li><a href="Modula3.html#Modula3_exceptions">Exceptions</a>
<li><a href="Modula3.html#Modula3_typemap_example">Example</a>
</ul>
<li><a href="Modula3.html#Modula3_hints">More hints to the generator</a>
<ul>
<li><a href="Modula3.html#Modula3_features">Features</a>
<li><a href="Modula3.html#Modula3_pragmas">Pragmas</a>
</ul>
<li><a href="Modula3.html#Modula3_remarks">Remarks</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Mzscheme.html#Mzscheme">30 SWIG and MzScheme/Racket</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Mzscheme.html#MzScheme_nn2">Creating native structures</a>
<li><a href="Mzscheme.html#MzScheme_simple">Simple example</a>
<li><a href="Mzscheme.html#MzScheme_external_docs">External documentation</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Ocaml.html#Ocaml">31 SWIG and Ocaml</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Ocaml.html#Ocaml_nn2">Preliminaries</a>
<ul>
<li><a href="Ocaml.html#Ocaml_nn3">Running SWIG</a>
<li><a href="Ocaml.html#Ocaml_nn4">Compiling the code</a>
<li><a href="Ocaml.html#Ocaml_nn5">The camlp4 module</a>
<li><a href="Ocaml.html#Ocaml_nn6">Using your module</a>
<li><a href="Ocaml.html#Ocaml_nn7">Compilation problems and compiling with C++</a>
</ul>
<li><a href="Ocaml.html#Ocaml_nn8">The low-level Ocaml/C interface</a>
<ul>
<li><a href="Ocaml.html#Ocaml_nn9">The generated module</a>
<li><a href="Ocaml.html#Ocaml_nn10">Enums</a>
<ul>
<li><a href="Ocaml.html#Ocaml_nn11">Enum typing in Ocaml</a>
</ul>
<li><a href="Ocaml.html#Ocaml_nn12">Arrays</a>
<ul>
<li><a href="Ocaml.html#Ocaml_nn13">Simple types of bounded arrays</a>
<li><a href="Ocaml.html#Ocaml_nn14">Complex and unbounded arrays</a>
<li><a href="Ocaml.html#Ocaml_nn15">Using an object</a>
<li><a href="Ocaml.html#Ocaml_nn16">Example typemap for a function taking float * and int</a>
</ul>
<li><a href="Ocaml.html#Ocaml_nn17">C++ Classes</a>
<ul>
<li><a href="Ocaml.html#Ocaml_nn18">STL vector and string Example</a>
<li><a href="Ocaml.html#Ocaml_nn19">C++ Class Example</a>
<li><a href="Ocaml.html#Ocaml_nn20">Compiling the example</a>
<li><a href="Ocaml.html#Ocaml_nn21">Sample Session</a>
</ul>
<li><a href="Ocaml.html#Ocaml_nn22">Director Classes</a>
<ul>
<li><a href="Ocaml.html#Ocaml_nn23">Director Introduction</a>
<li><a href="Ocaml.html#Ocaml_nn24">Overriding Methods in Ocaml</a>
<li><a href="Ocaml.html#Ocaml_nn25">Director Usage Example</a>
<li><a href="Ocaml.html#Ocaml_nn26">Creating director objects</a>
<li><a href="Ocaml.html#Ocaml_nn27">Typemaps for directors, <tt>directorin, directorout, directorargout</tt></a>
<li><a href="Ocaml.html#Ocaml_nn28"><tt>directorin</tt> typemap</a>
<li><a href="Ocaml.html#Ocaml_nn29"><tt>directorout</tt> typemap</a>
<li><a href="Ocaml.html#Ocaml_nn30"><tt>directorargout</tt> typemap</a>
</ul>
<li><a href="Ocaml.html#Ocaml_nn31">Exceptions</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Octave.html#Octave">32 SWIG and Octave</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Octave.html#Octave_nn2">Preliminaries</a>
<li><a href="Octave.html#Octave_nn3">Running SWIG</a>
<ul>
<li><a href="Octave.html#Octave_nn4">Command-line options</a>
<li><a href="Octave.html#Octave_nn5">Compiling a dynamic module</a>
<li><a href="Octave.html#Octave_nn6">Using your module</a>
</ul>
<li><a href="Octave.html#Octave_nn7">A tour of basic C/C++ wrapping</a>
<ul>
<li><a href="Octave.html#Octave_nn8">Modules</a>
<li><a href="Octave.html#Octave_nn9">Functions</a>
<li><a href="Octave.html#Octave_nn10">Global variables</a>
<li><a href="Octave.html#Octave_nn11">Constants and enums</a>
<li><a href="Octave.html#Octave_nn12">Pointers</a>
<li><a href="Octave.html#Octave_nn13">Structures and C++ classes</a>
<li><a href="Octave.html#Octave_nn15">C++ inheritance</a>
<li><a href="Octave.html#Octave_nn17">C++ overloaded functions</a>
<li><a href="Octave.html#Octave_nn18">C++ operators</a>
<li><a href="Octave.html#Octave_nn19">Class extension with %extend</a>
<li><a href="Octave.html#Octave_nn20">C++ templates</a>
<li><a href="Octave.html#Octave_nn21">C++ Smart Pointers</a>
<li><a href="Octave.html#Octave_nn22">Directors (calling Octave from C++ code)</a>
<li><a href="Octave.html#Octave_nn23">Threads</a>
<li><a href="Octave.html#Octave_nn24">Memory management</a>
<li><a href="Octave.html#Octave_nn25">STL support</a>
<li><a href="Octave.html#Octave_nn26">Matrix typemaps</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Perl5.html#Perl5">33 SWIG and Perl5</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Perl5.html#Perl5_nn2">Overview</a>
<li><a href="Perl5.html#Perl5_nn3">Preliminaries</a>
<ul>
<li><a href="Perl5.html#Perl5_nn4">Getting the right header files</a>
<li><a href="Perl5.html#Perl5_nn5">Compiling a dynamic module</a>
<li><a href="Perl5.html#Perl5_nn6">Building a dynamic module with MakeMaker</a>
<li><a href="Perl5.html#Perl5_nn7">Building a static version of Perl</a>
<li><a href="Perl5.html#Perl5_nn8">Using the module</a>
<li><a href="Perl5.html#Perl5_nn9">Compilation problems and compiling with C++</a>
<li><a href="Perl5.html#Perl5_nn10">Compiling for 64-bit platforms</a>
</ul>
<li><a href="Perl5.html#Perl5_nn11">Building Perl Extensions under Windows</a>
<ul>
<li><a href="Perl5.html#Perl5_nn12">Running SWIG from Developer Studio</a>
<li><a href="Perl5.html#Perl5_nn13">Using other compilers</a>
</ul>
<li><a href="Perl5.html#Perl5_nn14">The low-level interface</a>
<ul>
<li><a href="Perl5.html#Perl5_nn15">Functions</a>
<li><a href="Perl5.html#Perl5_nn16">Global variables</a>
<li><a href="Perl5.html#Perl5_nn17">Constants</a>
<li><a href="Perl5.html#Perl5_nn18">Pointers</a>
<li><a href="Perl5.html#Perl5_nn19">Structures</a>
<li><a href="Perl5.html#Perl5_nn20">C++ classes</a>
<li><a href="Perl5.html#Perl5_nn21">C++ classes and type-checking</a>
<li><a href="Perl5.html#Perl5_nn22">C++ overloaded functions</a>
<li><a href="Perl5.html#Perl5_nn23">Operators</a>
<li><a href="Perl5.html#Perl5_nn24">Modules and packages</a>
</ul>
<li><a href="Perl5.html#Perl5_nn25">Input and output parameters</a>
<li><a href="Perl5.html#Perl5_nn26">Exception handling</a>
<li><a href="Perl5.html#Perl5_nn27">Remapping datatypes with typemaps</a>
<ul>
<li><a href="Perl5.html#Perl5_nn28">A simple typemap example</a>
<li><a href="Perl5.html#Perl5_nn29">Perl5 typemaps</a>
<li><a href="Perl5.html#Perl5_nn30">Typemap variables</a>
<li><a href="Perl5.html#Perl5_nn31">Useful functions</a>
</ul>
<li><a href="Perl5.html#Perl5_nn32">Typemap Examples</a>
<ul>
<li><a href="Perl5.html#Perl5_nn33">Converting a Perl5 array to a char **</a>
<li><a href="Perl5.html#Perl5_nn34">Return values</a>
<li><a href="Perl5.html#Perl5_nn35">Returning values from arguments</a>
<li><a href="Perl5.html#Perl5_nn36">Accessing array structure members</a>
<li><a href="Perl5.html#Perl5_nn37">Turning Perl references into C pointers</a>
<li><a href="Perl5.html#Perl5_nn38">Pointer handling</a>
</ul>
<li><a href="Perl5.html#Perl5_nn39">Proxy classes</a>
<ul>
<li><a href="Perl5.html#Perl5_nn40">Preliminaries</a>
<li><a href="Perl5.html#Perl5_nn41">Structure and class wrappers</a>
<li><a href="Perl5.html#Perl5_nn42">Object Ownership</a>
<li><a href="Perl5.html#Perl5_nn43">Nested Objects</a>
<li><a href="Perl5.html#Perl5_nn44">Proxy Functions</a>
<li><a href="Perl5.html#Perl5_nn45">Inheritance</a>
<li><a href="Perl5.html#Perl5_nn46">Modifying the proxy methods</a>
</ul>
<li><a href="Perl5.html#Perl5_nn47">Adding additional Perl code</a>
<li><a href="Perl5.html#Perl5_directors">Cross language polymorphism</a>
<ul>
<li><a href="Perl5.html#Perl5_nn48">Enabling directors</a>
<li><a href="Perl5.html#Perl5_nn49">Director classes</a>
<li><a href="Perl5.html#Perl5_nn50">Ownership and object destruction</a>
<li><a href="Perl5.html#Perl5_nn51">Exception unrolling</a>
<li><a href="Perl5.html#Perl5_nn52">Overhead and code bloat</a>
<li><a href="Perl5.html#Perl5_nn53">Typemaps</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Php.html#Php">34 SWIG and PHP</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Php.html#Php_nn1">Generating PHP Extensions</a>
<ul>
<li><a href="Php.html#Php_nn1_1">Building a loadable extension</a>
<li><a href="Php.html#Php_nn1_3">Using PHP Extensions</a>
</ul>
<li><a href="Php.html#Php_nn2">Basic PHP interface</a>
<ul>
<li><a href="Php.html#Php_nn2_1">Constants</a>
<li><a href="Php.html#Php_nn2_2">Global Variables</a>
<li><a href="Php.html#Php_nn2_3">Functions</a>
<li><a href="Php.html#Php_nn2_4">Overloading</a>
<li><a href="Php.html#Php_nn2_5">Pointers and References</a>
<li><a href="Php.html#Php_nn2_6">Structures and C++ classes</a>
<ul>
<li><a href="Php.html#Php_nn2_6_1">Using <tt>-noproxy</tt></a>
<li><a href="Php.html#Php_nn2_6_2">Constructors and Destructors</a>
<li><a href="Php.html#Php_nn2_6_3">Static Member Variables</a>
<li><a href="Php.html#Php_nn2_6_4">Static Member Functions</a>
<li><a href="Php.html#Php_nn2_6_5">Specifying Implemented Interfaces</a>
</ul>
<li><a href="Php.html#Php_nn2_7">PHP Pragmas, Startup and Shutdown code</a>
</ul>
<li><a href="Php.html#Php_nn3">Cross language polymorphism</a>
<ul>
<li><a href="Php.html#Php_nn3_1">Enabling directors</a>
<li><a href="Php.html#Php_nn3_2">Director classes</a>
<li><a href="Php.html#Php_nn3_3">Ownership and object destruction</a>
<li><a href="Php.html#Php_nn3_4">Exception unrolling</a>
<li><a href="Php.html#Php_nn3_5">Overhead and code bloat</a>
<li><a href="Php.html#Php_nn3_6">Typemaps</a>
<li><a href="Php.html#Php_nn3_7">Miscellaneous</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Pike.html#Pike">35 SWIG and Pike</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Pike.html#Pike_nn2">Preliminaries</a>
<ul>
<li><a href="Pike.html#Pike_nn3">Running SWIG</a>
<li><a href="Pike.html#Pike_nn4">Getting the right header files</a>
<li><a href="Pike.html#Pike_nn5">Using your module</a>
</ul>
<li><a href="Pike.html#Pike_nn6">Basic C/C++ Mapping</a>
<ul>
<li><a href="Pike.html#Pike_nn7">Modules</a>
<li><a href="Pike.html#Pike_nn8">Functions</a>
<li><a href="Pike.html#Pike_nn9">Global variables</a>
<li><a href="Pike.html#Pike_nn10">Constants and enumerated types</a>
<li><a href="Pike.html#Pike_nn11">Constructors and Destructors</a>
<li><a href="Pike.html#Pike_nn12">Static Members</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Python.html#Python">36 SWIG and Python</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Python.html#Python_nn2">Overview</a>
<li><a href="Python.html#Python_nn3">Preliminaries</a>
<ul>
<li><a href="Python.html#Python_nn4">Running SWIG</a>
<li><a href="Python.html#Python_nn6">Using distutils</a>
<li><a href="Python.html#Python_nn7">Hand compiling a dynamic module</a>
<li><a href="Python.html#Python_nn8">Static linking</a>
<li><a href="Python.html#Python_nn9">Using your module</a>
<li><a href="Python.html#Python_nn10">Compilation of C++ extensions</a>
<li><a href="Python.html#Python_nn11">Compiling for 64-bit platforms</a>
<li><a href="Python.html#Python_nn12">Building Python Extensions under Windows</a>
</ul>
<li><a href="Python.html#Python_nn13">A tour of basic C/C++ wrapping</a>
<ul>
<li><a href="Python.html#Python_nn14">Modules</a>
<li><a href="Python.html#Python_nn15">Functions</a>
<li><a href="Python.html#Python_nn16">Global variables</a>
<li><a href="Python.html#Python_nn17">Constants and enums</a>
<li><a href="Python.html#Python_nn18">Pointers</a>
<li><a href="Python.html#Python_nn19">Structures</a>
<li><a href="Python.html#Python_nn20">C++ classes</a>
<li><a href="Python.html#Python_nn21">C++ inheritance</a>
<li><a href="Python.html#Python_nn22">Pointers, references, values, and arrays</a>
<li><a href="Python.html#Python_nn23">C++ overloaded functions</a>
<li><a href="Python.html#Python_nn24">C++ operators</a>
<li><a href="Python.html#Python_nn25">C++ namespaces</a>
<li><a href="Python.html#Python_nn26">C++ templates</a>
<li><a href="Python.html#Python_nn27">C++ Smart Pointers</a>
<li><a href="Python.html#Python_nn27a">C++ reference counted objects</a>
</ul>
<li><a href="Python.html#Python_nn28">Further details on the Python class interface</a>
<ul>
<li><a href="Python.html#Python_nn29">Proxy classes</a>
<li><a href="Python.html#Python_builtin_types">Built-in Types</a>
<ul>
<li><a href="Python.html#Python_builtin_limitations">Limitations</a>
<li><a href="Python.html#Python_builtin_overloads">Operator overloads -- use them!</a>
</ul>
<li><a href="Python.html#Python_nn30">Memory management</a>
<li><a href="Python.html#Python_nn31">Python 2.2 and classic classes</a>
</ul>
<li><a href="Python.html#Python_directors">Cross language polymorphism</a>
<ul>
<li><a href="Python.html#Python_nn33">Enabling directors</a>
<li><a href="Python.html#Python_nn34">Director classes</a>
<li><a href="Python.html#Python_nn35">Ownership and object destruction</a>
<li><a href="Python.html#Python_nn36">Exception unrolling</a>
<li><a href="Python.html#Python_nn37">Overhead and code bloat</a>
<li><a href="Python.html#Python_nn38">Typemaps</a>
<li><a href="Python.html#Python_nn39">Miscellaneous</a>
</ul>
<li><a href="Python.html#Python_nn40">Common customization features</a>
<ul>
<li><a href="Python.html#Python_nn41">C/C++ helper functions</a>
<li><a href="Python.html#Python_nn42">Adding additional Python code</a>
<li><a href="Python.html#Python_nn43">Class extension with %extend</a>
<li><a href="Python.html#Python_nn44">Exception handling with %exception</a>
</ul>
<li><a href="Python.html#Python_nn45">Tips and techniques</a>
<ul>
<li><a href="Python.html#Python_nn46">Input and output parameters</a>
<li><a href="Python.html#Python_nn47">Simple pointers</a>
<li><a href="Python.html#Python_nn48">Unbounded C Arrays</a>
<li><a href="Python.html#Python_nn49">String handling</a>
</ul>
<li><a href="Python.html#Python_nn53">Typemaps</a>
<ul>
<li><a href="Python.html#Python_nn54">What is a typemap?</a>
<li><a href="Python.html#Python_nn55">Python typemaps</a>
<li><a href="Python.html#Python_nn56">Typemap variables</a>
<li><a href="Python.html#Python_nn57">Useful Python Functions</a>
</ul>
<li><a href="Python.html#Python_nn58">Typemap Examples</a>
<ul>
<li><a href="Python.html#Python_nn59">Converting Python list to a char ** </a>
<li><a href="Python.html#Python_nn60">Expanding a Python object into multiple arguments</a>
<li><a href="Python.html#Python_nn61">Using typemaps to return arguments</a>
<li><a href="Python.html#Python_nn62">Mapping Python tuples into small arrays</a>
<li><a href="Python.html#Python_nn63">Mapping sequences to C arrays</a>
<li><a href="Python.html#Python_nn64">Pointer handling</a>
</ul>
<li><a href="Python.html#Python_nn65">Docstring Features</a>
<ul>
<li><a href="Python.html#Python_nn66">Module docstring</a>
<li><a href="Python.html#Python_nn67">%feature("autodoc")</a>
<ul>
<li><a href="Python.html#Python_nn68">%feature("autodoc", "0")</a>
<li><a href="Python.html#Python_nn69">%feature("autodoc", "1")</a>
<li><a href="Python.html#Python_autodoc2">%feature("autodoc", "2")</a>
<li><a href="Python.html#Python_autodoc3">%feature("autodoc", "3")</a>
<li><a href="Python.html#Python_nn70">%feature("autodoc", "docstring")</a>
</ul>
<li><a href="Python.html#Python_nn71">%feature("docstring")</a>
</ul>
<li><a href="Python.html#Python_nn72">Python Packages</a>
<ul>
<li><a href="Python.html#Python_modulepackage">Setting the Python package</a>
<li><a href="Python.html#Python_absrelimports">Absolute and relative imports</a>
<li><a href="Python.html#Python_absimport">Enforcing absolute import semantics</a>
<li><a href="Python.html#Python_importfrominit">Importing from __init__.py</a>
</ul>
<li><a href="Python.html#Python_python3support">Python 3 Support</a>
<ul>
<li><a href="Python.html#Python_nn74">Function annotation</a>
<li><a href="Python.html#Python_nn75">Buffer interface</a>
<li><a href="Python.html#Python_nn76">Abstract base classes</a>
<li><a href="Python.html#Python_nn77">Byte string output conversion</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="R.html#R">37 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">Precompiling large R files</a>
<li><a href="R.html#R_nn5">General policy</a>
<li><a href="R.html#R_language_conventions">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="Ruby.html#Ruby">38 SWIG and Ruby</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Ruby.html#Ruby_nn2">Preliminaries</a>
<ul>
<li><a href="Ruby.html#Ruby_nn3">Running SWIG</a>
<li><a href="Ruby.html#Ruby_nn4">Getting the right header files</a>
<li><a href="Ruby.html#Ruby_nn5">Compiling a dynamic module</a>
<li><a href="Ruby.html#Ruby_nn6">Using your module</a>
<li><a href="Ruby.html#Ruby_nn7">Static linking</a>
<li><a href="Ruby.html#Ruby_nn8">Compilation of C++ extensions</a>
</ul>
<li><a href="Ruby.html#Ruby_nn9">Building Ruby Extensions under Windows 95/NT</a>
<ul>
<li><a href="Ruby.html#Ruby_nn10">Running SWIG from Developer Studio</a>
</ul>
<li><a href="Ruby.html#Ruby_nn11">The Ruby-to-C/C++ Mapping</a>
<ul>
<li><a href="Ruby.html#Ruby_nn12">Modules</a>
<li><a href="Ruby.html#Ruby_nn13">Functions</a>
<li><a href="Ruby.html#Ruby_nn14">Variable Linking</a>
<li><a href="Ruby.html#Ruby_nn15">Constants</a>
<li><a href="Ruby.html#Ruby_nn16">Pointers</a>
<li><a href="Ruby.html#Ruby_nn17">Structures</a>
<li><a href="Ruby.html#Ruby_nn18">C++ classes</a>
<li><a href="Ruby.html#Ruby_nn19">C++ Inheritance</a>
<li><a href="Ruby.html#Ruby_nn20">C++ Overloaded Functions</a>
<li><a href="Ruby.html#Ruby_nn21">C++ Operators</a>
<li><a href="Ruby.html#Ruby_nn22">C++ namespaces</a>
<li><a href="Ruby.html#Ruby_nn23">C++ templates</a>
<li><a href="Ruby.html#Ruby_nn23_1">C++ Standard Template Library (STL)</a>
<li><a href="Ruby.html#Ruby_C_STL_Functors">C++ STL Functors</a>
<li><a href="Ruby.html#Ruby_C_Iterators">C++ STL Iterators</a>
<li><a href="Ruby.html#Ruby_nn24">C++ Smart Pointers</a>
<li><a href="Ruby.html#Ruby_nn25">Cross-Language Polymorphism</a>
<ul>
<li><a href="Ruby.html#Ruby_nn26">Exception Unrolling</a>
</ul>
</ul>
<li><a href="Ruby.html#Ruby_nn27">Naming</a>
<ul>
<li><a href="Ruby.html#Ruby_nn28">Defining Aliases</a>
<li><a href="Ruby.html#Ruby_nn29">Predicate Methods</a>
<li><a href="Ruby.html#Ruby_nn30">Bang Methods</a>
<li><a href="Ruby.html#Ruby_nn31">Getters and Setters</a>
</ul>
<li><a href="Ruby.html#Ruby_nn32">Input and output parameters</a>
<li><a href="Ruby.html#Ruby_nn33">Exception handling </a>
<ul>
<li><a href="Ruby.html#Ruby_nn34">Using the %exception directive </a>
<li><a href="Ruby.html#Ruby_nn34_2">Handling Ruby Blocks </a>
<li><a href="Ruby.html#Ruby_nn35">Raising exceptions </a>
<li><a href="Ruby.html#Ruby_nn36">Exception classes </a>
</ul>
<li><a href="Ruby.html#Ruby_nn37">Typemaps</a>
<ul>
<li><a href="Ruby.html#Ruby_nn38">What is a typemap?</a>
<li><a href="Ruby.html#Ruby_Typemap_scope">Typemap scope</a>
<li><a href="Ruby.html#Ruby_Copying_a_typemap">Copying a typemap</a>
<li><a href="Ruby.html#Ruby_Deleting_a_typemap">Deleting a typemap</a>
<li><a href="Ruby.html#Ruby_Placement_of_typemaps">Placement of typemaps</a>
<li><a href="Ruby.html#Ruby_nn39">Ruby typemaps</a>
<ul>
<li><a href="Ruby.html#Ruby_in_typemap">"in" typemap</a>
<li><a href="Ruby.html#Ruby_typecheck_typemap">"typecheck" typemap</a>
<li><a href="Ruby.html#Ruby_out_typemap">"out" typemap</a>
<li><a href="Ruby.html#Ruby_arginit_typemap">"arginit" typemap</a>
<li><a href="Ruby.html#Ruby_default_typemap">"default" typemap</a>
<li><a href="Ruby.html#Ruby_check_typemap">"check" typemap</a>
<li><a href="Ruby.html#Ruby_argout_typemap_">"argout" typemap</a>
<li><a href="Ruby.html#Ruby_freearg_typemap_">"freearg" typemap</a>
<li><a href="Ruby.html#Ruby_newfree_typemap">"newfree" typemap</a>
<li><a href="Ruby.html#Ruby_memberin_typemap">"memberin" typemap</a>
<li><a href="Ruby.html#Ruby_varin_typemap">"varin" typemap</a>
<li><a href="Ruby.html#Ruby_varout_typemap_">"varout" typemap</a>
<li><a href="Ruby.html#Ruby_throws_typemap">"throws" typemap</a>
<li><a href="Ruby.html#Ruby_directorin_typemap">directorin typemap</a>
<li><a href="Ruby.html#Ruby_directorout_typemap">directorout typemap</a>
<li><a href="Ruby.html#Ruby_directorargout_typemap">directorargout typemap</a>
<li><a href="Ruby.html#Ruby_ret_typemap">ret typemap</a>
<li><a href="Ruby.html#Ruby_globalin_typemap">globalin typemap</a>
</ul>
<li><a href="Ruby.html#Ruby_nn40">Typemap variables</a>
<li><a href="Ruby.html#Ruby_nn41">Useful Functions</a>
<ul>
<li><a href="Ruby.html#Ruby_nn42">C Datatypes to Ruby Objects</a>
<li><a href="Ruby.html#Ruby_nn43">Ruby Objects to C Datatypes</a>
<li><a href="Ruby.html#Ruby_nn44">Macros for VALUE</a>
<li><a href="Ruby.html#Ruby_nn45">Exceptions</a>
<li><a href="Ruby.html#Ruby_nn46">Iterators</a>
</ul>
<li><a href="Ruby.html#Ruby_nn47">Typemap Examples</a>
<li><a href="Ruby.html#Ruby_nn48">Converting a Ruby array to a char **</a>
<li><a href="Ruby.html#Ruby_nn49">Collecting arguments in a hash</a>
<li><a href="Ruby.html#Ruby_nn50">Pointer handling</a>
<ul>
<li><a href="Ruby.html#Ruby_nn51">Ruby Datatype Wrapping</a>
</ul>
<li><a href="Ruby.html#Ruby_nn52">Example: STL Vector to Ruby Array</a>
</ul>
<li><a href="Ruby.html#Ruby_nn65">Docstring Features</a>
<ul>
<li><a href="Ruby.html#Ruby_nn66">Module docstring</a>
<li><a href="Ruby.html#Ruby_nn67">%feature("autodoc")</a>
<ul>
<li><a href="Ruby.html#Ruby_nn68">%feature("autodoc", "0")</a>
<li><a href="Ruby.html#Ruby_autodoc1">%feature("autodoc", "1")</a>
<li><a href="Ruby.html#Ruby_autodoc2">%feature("autodoc", "2")</a>
<li><a href="Ruby.html#Ruby_feature_autodoc3">%feature("autodoc", "3")</a>
<li><a href="Ruby.html#Ruby_nn70">%feature("autodoc", "docstring")</a>
</ul>
<li><a href="Ruby.html#Ruby_nn71">%feature("docstring")</a>
</ul>
<li><a href="Ruby.html#Ruby_nn53">Advanced Topics</a>
<ul>
<li><a href="Ruby.html#Ruby_operator_overloading">Operator overloading</a>
<li><a href="Ruby.html#Ruby_nn55">Creating Multi-Module Packages</a>
<li><a href="Ruby.html#Ruby_nn56">Specifying Mixin Modules</a>
</ul>
<li><a href="Ruby.html#Ruby_nn57">Memory Management</a>
<ul>
<li><a href="Ruby.html#Ruby_nn58">Mark and Sweep Garbage Collector </a>
<li><a href="Ruby.html#Ruby_nn59">Object Ownership</a>
<li><a href="Ruby.html#Ruby_nn60">Object Tracking</a>
<li><a href="Ruby.html#Ruby_nn61">Mark Functions</a>
<li><a href="Ruby.html#Ruby_nn62">Free Functions</a>
<li><a href="Ruby.html#Ruby_nn63">Embedded Ruby and the C++ Stack</a>
</ul>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Scilab.html#Scilab">39 SWIG and Scilab</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Scilab.html#Scilab_preliminaries">Preliminaries</a>
<li><a href="Scilab.html#Scilab_running_swig">Running SWIG</a>
<ul>
<li><a href="Scilab.html#Scilab_running_swig_generating_module">Generating the module</a>
<li><a href="Scilab.html#Scilab_running_swig_building_module">Building the module</a>
<li><a href="Scilab.html#Scilab_running_swig_loading_module">Loading the module</a>
<li><a href="Scilab.html#Scilab_running_swig_using_module">Using the module</a>
<li><a href="Scilab.html#Scilab_running_swig_options">Scilab command line options</a>
</ul>
<li><a href="Scilab.html#Scilab_wrapping">A basic tour of C/C++ wrapping</a>
<ul>
<li><a href="Scilab.html#Scilab_wrapping_overview">Overview</a>
<li><a href="Scilab.html#Scilab_wrapping_identifiers">Identifiers</a>
<li><a href="Scilab.html#Scilab_wrapping_functions">Functions</a>
<ul>
<li><a href="Scilab.html#Scilab_nn13">Argument passing</a>
<li><a href="Scilab.html#Scilab_nn14">Multiple output arguments</a>
</ul>
<li><a href="Scilab.html#Scilab_wrapping_global_variables">Global variables</a>
<li><a href="Scilab.html#Scilab_wrapping_constants_and_enums">Constants and enumerations</a>
<ul>
<li><a href="Scilab.html#Scilab_wrapping_constants">Constants</a>
<li><a href="Scilab.html#Scilab_wrapping_enums">Enumerations</a>
</ul>
<li><a href="Scilab.html#Scilab_wrapping_pointers">Pointers</a>
<ul>
<li><a href="Scilab.html#Scilab_wrapping_pointers_pointer_adresses">Utility functions</a>
<li><a href="Scilab.html#Scilab_wrapping_pointers_null_pointers">Null pointers</a>
</ul>
<li><a href="Scilab.html#Scilab_wrapping_structs">Structures</a>
<li><a href="Scilab.html#Scilab_wrapping_cpp_classes">C++ Classes</a>
<li><a href="Scilab.html#Scilab_wrapping_cpp_inheritance">C++ inheritance</a>
<li><a href="Scilab.html#Scilab_wrapping_pointers_references_values_arrays">Pointers, references, values, and arrays</a>
<li><a href="Scilab.html#Scilab_wrapping_cpp_templates">C++ templates</a>
<li><a href="Scilab.html#Scilab_wrapping_cpp_operators">C++ operators</a>
<li><a href="Scilab.html#Scilab_wrapping_cpp_namespaces">C++ namespaces</a>
<li><a href="Scilab.html#Scilab_wrapping_cpp_exceptions">C++ exceptions</a>
<li><a href="Scilab.html#Scilab_wrapping_cpp_stl">C++ STL</a>
</ul>
<li><a href="Scilab.html#Scilab_typemaps">Type mappings and libraries</a>
<ul>
<li><a href="Scilab.html#Scilab_typemaps_primitive_types">Default primitive type mappings</a>
<li><a href="Scilab.html#Scilab_typemaps_non-primitive_types">Default type mappings for non-primitive types</a>
<li><a href="Scilab.html#Scilab_typemaps_arrays">Arrays</a>
<li><a href="Scilab.html#Scilab_typemaps_pointer-to-pointers">Pointer-to-pointers</a>
<li><a href="Scilab.html#Scilab_typemaps_matrices">Matrices</a>
<li><a href="Scilab.html#Scilab_typemaps_stl">STL</a>
</ul>
<li><a href="Scilab.html#Scilab_module_initialization">Module initialization</a>
<li><a href="Scilab.html#Scilab_building_modes">Building modes</a>
<ul>
<li><a href="Scilab.html#Scilab_building_modes_nobuilder_mode">No-builder mode</a>
<li><a href="Scilab.html#Scilab_building_modes_builder_mode">Builder mode</a>
</ul>
<li><a href="Scilab.html#Scilab_generated_scripts">Generated scripts</a>
<ul>
<li><a href="Scilab.html#Scilab_generated_scripts_builder_script">Builder script</a>
<li><a href="Scilab.html#Scilab_generated_scripts_loader_script">Loader script</a>
</ul>
<li><a href="Scilab.html#Scilab_other_resources">Other resources</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Tcl.html#Tcl">40 SWIG and Tcl</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Tcl.html#Tcl_nn2">Preliminaries</a>
<ul>
<li><a href="Tcl.html#Tcl_nn3">Getting the right header files</a>
<li><a href="Tcl.html#Tcl_nn4">Compiling a dynamic module</a>
<li><a href="Tcl.html#Tcl_nn5">Static linking</a>
<li><a href="Tcl.html#Tcl_nn6">Using your module</a>
<li><a href="Tcl.html#Tcl_nn7">Compilation of C++ extensions</a>
<li><a href="Tcl.html#Tcl_nn8">Compiling for 64-bit platforms</a>
<li><a href="Tcl.html#Tcl_nn9">Setting a package prefix</a>
<li><a href="Tcl.html#Tcl_nn10">Using namespaces</a>
</ul>
<li><a href="Tcl.html#Tcl_nn11">Building Tcl/Tk Extensions under Windows 95/NT</a>
<ul>
<li><a href="Tcl.html#Tcl_nn12">Running SWIG from Developer Studio</a>
<li><a href="Tcl.html#Tcl_nn13">Using NMAKE</a>
</ul>
<li><a href="Tcl.html#Tcl_nn14">A tour of basic C/C++ wrapping</a>
<ul>
<li><a href="Tcl.html#Tcl_nn15">Modules</a>
<li><a href="Tcl.html#Tcl_nn16">Functions</a>
<li><a href="Tcl.html#Tcl_nn17">Global variables</a>
<li><a href="Tcl.html#Tcl_nn18">Constants and enums</a>
<li><a href="Tcl.html#Tcl_nn19">Pointers</a>
<li><a href="Tcl.html#Tcl_nn20">Structures</a>
<li><a href="Tcl.html#Tcl_nn21">C++ classes</a>
<li><a href="Tcl.html#Tcl_nn22">C++ inheritance</a>
<li><a href="Tcl.html#Tcl_nn23">Pointers, references, values, and arrays</a>
<li><a href="Tcl.html#Tcl_nn24">C++ overloaded functions</a>
<li><a href="Tcl.html#Tcl_nn25">C++ operators</a>
<li><a href="Tcl.html#Tcl_nn26">C++ namespaces</a>
<li><a href="Tcl.html#Tcl_nn27">C++ templates</a>
<li><a href="Tcl.html#Tcl_nn28">C++ Smart Pointers</a>
</ul>
<li><a href="Tcl.html#Tcl_nn29">Further details on the Tcl class interface</a>
<ul>
<li><a href="Tcl.html#Tcl_nn30">Proxy classes</a>
<li><a href="Tcl.html#Tcl_nn31">Memory management</a>
</ul>
<li><a href="Tcl.html#Tcl_nn32">Input and output parameters</a>
<li><a href="Tcl.html#Tcl_nn33">Exception handling </a>
<li><a href="Tcl.html#Tcl_nn34">Typemaps</a>
<ul>
<li><a href="Tcl.html#Tcl_nn35">What is a typemap?</a>
<li><a href="Tcl.html#Tcl_nn36">Tcl typemaps</a>
<li><a href="Tcl.html#Tcl_nn37">Typemap variables</a>
<li><a href="Tcl.html#Tcl_nn38">Converting a Tcl list to a char ** </a>
<li><a href="Tcl.html#Tcl_nn39">Returning values in arguments</a>
<li><a href="Tcl.html#Tcl_nn40">Useful functions</a>
<li><a href="Tcl.html#Tcl_nn41">Standard typemaps</a>
<li><a href="Tcl.html#Tcl_nn42">Pointer handling</a>
</ul>
<li><a href="Tcl.html#Tcl_nn43">Turning a SWIG module into a Tcl Package.</a>
<li><a href="Tcl.html#Tcl_nn44">Building new kinds of Tcl interfaces (in Tcl)</a>
<ul>
<li><a href="Tcl.html#Tcl_nn45">Proxy classes</a>
</ul>
<li><a href="Tcl.html#Tcl_nn46">Tcl/Tk Stubs</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Extending.html#Extending">41 Extending SWIG to support new languages</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Extending.html#Extending_nn2">Introduction</a>
<li><a href="Extending.html#Extending_nn3">Prerequisites</a>
<li><a href="Extending.html#Extending_nn4">The Big Picture</a>
<li><a href="Extending.html#Extending_nn5">Execution Model</a>
<ul>
<li><a href="Extending.html#Extending_nn6">Preprocessing</a>
<li><a href="Extending.html#Extending_nn7">Parsing</a>
<li><a href="Extending.html#Extending_nn8">Parse Trees</a>
<li><a href="Extending.html#Extending_nn9">Attribute namespaces</a>
<li><a href="Extending.html#Extending_nn10">Symbol Tables</a>
<li><a href="Extending.html#Extending_nn11">The %feature directive</a>
<li><a href="Extending.html#Extending_nn12">Code Generation</a>
<li><a href="Extending.html#Extending_nn13">SWIG and XML</a>
</ul>
<li><a href="Extending.html#Extending_nn14">Primitive Data Structures</a>
<ul>
<li><a href="Extending.html#Extending_nn15">Strings</a>
<li><a href="Extending.html#Extending_nn16">Hashes</a>
<li><a href="Extending.html#Extending_nn17">Lists</a>
<li><a href="Extending.html#Extending_nn18">Common operations</a>
<li><a href="Extending.html#Extending_nn19">Iterating over Lists and Hashes</a>
<li><a href="Extending.html#Extending_nn20">I/O</a>
</ul>
<li><a href="Extending.html#Extending_nn21">Navigating and manipulating parse trees</a>
<li><a href="Extending.html#Extending_nn22">Working with attributes</a>
<li><a href="Extending.html#Extending_nn23">Type system</a>
<ul>
<li><a href="Extending.html#Extending_nn24">String encoding of types</a>
<li><a href="Extending.html#Extending_nn25">Type construction</a>
<li><a href="Extending.html#Extending_nn26">Type tests</a>
<li><a href="Extending.html#Extending_nn27">Typedef and inheritance</a>
<li><a href="Extending.html#Extending_nn28">Lvalues</a>
<li><a href="Extending.html#Extending_nn29">Output functions</a>
</ul>
<li><a href="Extending.html#Extending_nn30">Parameters</a>
<li><a href="Extending.html#Extending_nn31">Writing a Language Module</a>
<ul>
<li><a href="Extending.html#Extending_nn32">Execution model</a>
<li><a href="Extending.html#Extending_starting_out">Starting out</a>
<li><a href="Extending.html#Extending_nn34">Command line options</a>
<li><a href="Extending.html#Extending_nn35">Configuration and preprocessing</a>
<li><a href="Extending.html#Extending_nn36">Entry point to code generation</a>
<li><a href="Extending.html#Extending_nn37">Module I/O and wrapper skeleton</a>
<li><a href="Extending.html#Extending_nn38">Low-level code generators</a>
<li><a href="Extending.html#Extending_configuration_files">Configuration files</a>
<li><a href="Extending.html#Extending_nn40">Runtime support</a>
<li><a href="Extending.html#Extending_nn41">Standard library files</a>
<li><a href="Extending.html#Extending_nn42">User examples</a>
<li><a href="Extending.html#Extending_test_suite">Test driven development and the test-suite</a>
<ul>
<li><a href="Extending.html#Extending_running_test_suite">Running the test-suite</a>
</ul>
<li><a href="Extending.html#Extending_nn43">Documentation</a>
<li><a href="Extending.html#Extending_prerequisites">Prerequisites for adding a new language module to the SWIG distribution</a>
<li><a href="Extending.html#Extending_coding_style_guidelines">Coding style guidelines</a>
</ul>
<li><a href="Extending.html#Extending_debugging_options">Debugging Options</a>
<li><a href="Extending.html#Extending_nn46">Guide to parse tree nodes</a>
<li><a href="Extending.html#Extending_further_info">Further Development Information</a>
</ul>
</div>
<!-- INDEX -->
<h3><a href="Doxygen.html#Doxygen">40 SWIG and Doxygen Translation</a></h3>
<!-- INDEX -->
<div class="sectiontoc">
<ul>
<li><a href="Doxygen.html#Doxygen_translation_overview">Doxygen Translation Overview</a>
<li><a href="Doxygen.html#Doxygen_file_preparation">Preparations</a>
<ul>
<li><a href="Doxygen.html#Doxygen_running_swig">Enabling Doxygen Translation</a>
<li><a href="Doxygen.html#Doxygen_additional_options">Additional Commandline Options</a>
</ul>
<li><a href="Doxygen.html#Doxygen_to_javadoc">Doxygen To JavaDoc</a>
<ul>
<li><a href="Doxygen.html#Doxygen_basic_example">Basic Example</a>
<li><a href="Doxygen.html#Doxygen_javadoc_tags">JavaDoc Tags</a>
<li><a href="Doxygen.html#Doxygen_unsupported_tags">Unsupported tags</a>
<li><a href="Doxygen.html#Doxygen_further_details">Further Details</a>
</ul>
<li><a href="Doxygen.html#Doxygen_to_pydoc">Doxygen To PythonDoc</a>
<ul>
<li><a href="Doxygen.html#Doxygen_python_basic_example">Basic Example</a>
<li><a href="Doxygen.html#Doxygen_pydoc_tags">PyDoc translator</a>
<li><a href="Doxygen.html#Doxygen_python_unsupported_tags">Unsupported tags</a>
<li><a href="Doxygen.html#Doxygen_python_further_details">Further Details</a>
</ul>
<li><a href="Doxygen.html#Doxygen_developer_details">Developer Information</a>
<ul>
<li><a href="Doxygen.html#Doxygen_module_design">Module Design</a>
<li><a href="Doxygen.html#Doxygen_debugging_commands">Debugging Doxygen parser and translator</a>
<li><a href="Doxygen.html#Doxygen_debugging_commands">Tests</a>
</ul>
<li><a href="Doxygen.html#Doxygen_language_extension">Extending to Other Languages</a>
</ul>
</div>
<!-- INDEX -->
</BODY>
</HTML>