swig/Doc/Manual
Vadim Zeitlin 3d6880aad1 Start removing proxy layer, just use the wrapped functions directly
The proxy layer, and all the extra complexity associated with it, seemed to be
only necessary in order to try to allow using the same name for the wrapped
global functions as were used for them in the original C or C++ code being
wrapped. However this could simply never work in all cases, notably it didn't
work at all when using ELF shared libraries under Unix as the functions with
the same name defined in the main program were interposed and replaced the
functions defined in the shared library, meaning that the proxy function foo()
called wrapper function _wrap_foo() which called back into proxy function
foo() itself again, resulting in guaranteed stack overflow. The only possible
way to fix this would be to use "protected" ELF visibility for the original
functions, but this is not always possible (e.g. if the sources of the
original library are not available) and not simple even when it is and,
besides, protected visibility has its own problems -- notably by making it
impossible to hook the library functions when you actually want to do it.
Besides, proxy-based approach simply couldn't work at all when using static
linking as it resulted in two copies of the function with the same name

Most importantly, however, the main task of this module is to wrap C++
classes, not C functions, and renaming them in the wrapper is not necessary at
all in this case as there is no conflict with the original names in this case.
So simply drop the idea of generating a separate proxy header and generate a
header declaring the functions declared in the wrapper instead and, also, do
not give them "_wrap_" prefix whenever possible, i.e. only do it for the
global functions.

This simplifies SWIG code itself and makes it simpler to use its output as
it's not necessary to link both with the wrapper (dynamically) and with the
proxy (statically) and it's not enough to link with the wrapper only and it
can be done in any way (i.e. either statically or dynamically).

As a side effect of this change, Swig_name_proxy() is not necessary any more
and was removed, eliminating the only difference with the master branch in any
source file other than c.cxx itself.
2016-04-14 02:44:45 +02:00
..
Allegrocl.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
android-class.png Add Android docs - supporting screenshots 2011-12-10 17:03:50 +00:00
android-simple.png Add Android docs - supporting screenshots 2011-12-10 17:03:50 +00:00
Android.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Arguments.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
C.html Start removing proxy layer, just use the wrapped functions directly 2016-04-14 02:44:45 +02:00
CCache.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
ch2.1.png The great merge 2002-11-30 22:01:28 +00:00
chapters Merge branch 'master' into C 2016-04-08 17:29:16 +02:00
Chicken.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Contents.html Documentation and CHANGES entry for interface feature 2016-03-11 19:47:31 +00:00
Contract.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
CPlusPlus11.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
CSharp.html Documentation and CHANGES entry for interface feature 2016-03-11 19:47:31 +00:00
Customization.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
D.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
Extending.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
fixstyle.py HTML pdf doc generation fixes 2015-12-30 22:22:33 +00:00
Go.html Merge pull request #542 from Sajmani/master 2016-03-31 13:07:31 +13:00
Guile.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
index.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
Introduction.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Java.html Merge branch 'char-escaping' 2016-03-12 23:27:51 +00:00
Javascript.html html doc fixes 2016-04-02 13:47:23 +01:00
Library.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
linkchecker.config html links updates 2015-12-18 21:14:44 +00:00
Lisp.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Lua.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
makechap.py Correct html documentation linking generated by makechap.py script 2015-12-30 22:22:31 +00:00
Makefile HTML pdf doc generation fixes 2015-12-30 22:22:33 +00:00
maketoc.py HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
Modula3.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
Modules.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
Mzscheme.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Ocaml.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Octave.html octave: update manual and CHANGES.current 2016-02-07 20:22:39 +01:00
Perl5.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Php.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Pike.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
Preface.html html doc fixes 2016-04-02 13:47:23 +01:00
Preprocessor.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
Python.html html doc fixes 2016-04-02 13:47:23 +01:00
R.html HTML fixes for documentation - add meta tag and loose.dtd 2015-12-30 22:22:32 +00:00
README subject/verb agreement 2013-04-30 22:49:12 -03:00
Ruby.html fix typo 2016-01-12 19:52:40 +09:00
Scilab.html scilab: fix doc (pointer type tracking) 2016-04-06 13:22:59 +02:00
Scripting.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Sections.html Bump version to 3.0.9 2015-12-31 18:04:16 +00:00
style.css HTML pdf doc generation fixes 2015-12-30 22:22:33 +00:00
SWIG.html Add rstrip encoder for use in %rename. 2016-03-02 07:11:09 +00:00
swig16.png Revert rev 11187 "Merged with recent changes from trunk." 2012-05-06 01:13:16 +00:00
SWIGPlus.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Tcl.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Typemaps.html Improve documentation for multi-argument typemaps and overloading 2016-04-02 13:44:44 +01:00
Varargs.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00
Warnings.html Multiple inheritance warning wording tweak 2016-03-06 10:45:39 +00:00
Windows.html Replace tabs with spaces in html docs 2015-12-30 22:22:33 +00:00

This directory contains the HTML for the SWIG users manual.

All of this HTML is hand-written.  However, section numbering, indices,
and the table of contents are generated automatically by the 'maketoc.py'
script. The Makefile has further information on how the various alternative
forms of the documentation are generated from the hand-written HTML.

There are 4 types of boxes that code or whatever can be inside:
  - <div class="shell">...</div>
    This is for text that shows the output of running commands on the shell.
  - <div class="code">...</div>
    This is for either C, C++, or SWIG code
  - <div class="targetlang">...</div>
    This is for code in a target scripting language
  - <div class="diagram">...</div>
    This is for text that is not code or a shell

The general format is
<div class="foo"><pre>
whatever here
</pre></div>