summaryrefslogtreecommitdiff
path: root/NEW
diff options
context:
space:
mode:
Diffstat (limited to 'NEW')
-rw-r--r--NEW267
1 files changed, 0 insertions, 267 deletions
diff --git a/NEW b/NEW
deleted file mode 100644
index b329eb89a..000000000
--- a/NEW
+++ /dev/null
@@ -1,267 +0,0 @@
-New Features and Important Changes, v1.3
-
-Author(s) : David Beazley
-
-March 21, 2003
-
-1. Introduction
----------------
-This document briefly explains some of the most important changes made
-since the release of SWIG1.1. The goal is to provide information for
-people who want to upgrade an older SWIG interface to the new version.
-
-Most changes pertain to the internal implementation of SWIG and the
-organization of the core, parser, and language modules. As a SWIG
-user, almost all of these changes are hidden from view except for a
-few important cases where changes to the core have dramatically
-altered SWIG's old behavior.
-
-2. Types and typemaps
----------------------
-2.1 Variables of the form 'const type *' are no longer wrapped as
- constants, but as C global variables. The earlier SWIG behavior
- was incorrect due to Dave's misinterpretation of 'const' in the C
- language specification.
-
- If you have written an interface that expects to create
- constants using 'const type *' you will need to rewrite those
- specifications using a new %constant directive like this:
-
- %constant(type *) name = value;
-
-2.2 SWIG generally has better support for pointers, 'const',
- arrays, and pointers to functions.
-
-2.3 Typemaps are now applied to a more precisely defined set
- of datatypes. For example, consider the following
- typemap:
-
- %typemap(in) foo * {
- ... get a foo ...
- }
-
- In SWIG1.1, this typemap would get applied to 'foo *',
- 'foo &', 'foo []', 'foo[][]', and so forth.
-
- In SWIG1.3, this typemap *only* gets applied to 'foo *' and
- 'const foo *'. It does *NOT* get mapped to the other
- variants listed above.
-
-2.4 Bug fix. SWIG now correctly handles typemaps of the form
-
- %typemap(in) Object {
- ... get an object ...
- }
-
-2.5 The memberout typemap is no longer available and is withdrawn.
- The old implementation was essentially useless because of the
- way in which code was generated.
-
-2.6 The memberin typemap is now inserted inline in the generated
- wrapper code. This provides access to scripting-specific
- variables in the wrapper function.
-
-2.7 SWIG-1.3.10 features a total rewrite of the typemap system.
- Typemaps now use a different variable naming scheme. Typemaps
- for arguments look like this:
-
- %typemap(in) sometype {
- $1 = convert value ($input);
- }
-
- The variable $1 replaces $target and the variable $input replaces
- $source.
-
- For output values, typemaps look like this:
-
- %typemap(out) sometype {
- $result = create result ($1);
- }
-
- The variable $1 replaces $source and the variable $result replaces
- $target.
-
- See Doc/Manual/Typemaps.html for a full description of the new
- typemap system.
-
-2.8 Multi-argument typemaps are now supported. This solves a common
- problem that occurs with functions like this
-
- void foo(char *buffer, int len);
-
- where you would like to make the two arguments operate as a single
- object in the target language.
-
-2.9 Types such as 'const int &', 'const double &', are passed as
- values instead of pointers.
-
-2.10 C++ namespaces are now supported.
-
-3. Type checking
-----------------
-
-SWIG no longer uses the functions SWIG_GetPtr() and SWIG_MakePtr() to
-parse datatypes in wrapper code. This is because the type of a
-pointer is no longer associated with a string, but with a special
-"swig_type_info *" object. If you are not using typemaps, this change
-should cause no noticable effects. However, if you have written
-typemaps to handle pointers, here are the essential details:
-
-3.1 Type name mangling is different in SWIG1.3. For a type of
- "int **", SWIG1.1 used to produce a name of the form
- "_int_pp". SWIG1.3 on the other hand, produces a name
- of the form "_p_p_int". There are a number of reasons for
- changing the format, but I'd rather not go into it here. You'll
- just have to learn to live with it :-).
-
-3.2 Types are described by a special "swig_type_info *" object. Everywhere
- a string was used before, an object of this type will be used.
- The "swig_type_info *" for a given type can always be obtained
- using macros involving the mangled typename in 3.1. For example,
- the type object of of 'int **' is 'SWIGTYPE_p_p_int'.
-
-3.3 Instead of SWIG_GetPtr, a function of the following form is used:
-
- int SWIG_ConvertPtr(ScriptObj *o, void **ptr, swig_type_info *ty, int flags);
-
- Note: the function name may differ in certain implementations (read
- the source). For example:
-
- int SWIG_ConvertPtr(ScriptObj *o, void **ptr, SWIGTYPE_p_p_int,0);
-
- Passing a value of '0' for the type will accept any pointer. This
- works kind of like 'void *'. The flags argument is reserved for
- future expansion.
-
-3.4. To create a pointer object, one uses a function similar to
-
- ScriptObj *SWIG_NewPointer(void *ptr, swig_type_info *ty, int flags);
-
- It works in a similar manner:
-
- p = SWIG_NewPointer(ptr, SWIGTYPE_p_p_int, 0);
-
- You will have to read the source to get the exact function name
- used. The flags argument is implementation specific and reserved
- for future expansion.
-
-3.5. If, for whatever reason, you need to obtain the 'swig_type_info *'
- outside the context of a wrapper file, you can use the
- SWIG_TypeQuery() function. For example:
-
- swig_type_info *ty = SWIG_TypeQuery("int **");
-
- this function returns an appropriate type_info structure or NULL
- if no such type is registered.
-
-3.6 SWIG does not generate swig_type_info structures for types that are
- not actually used in an interface file. As a result, the type
- checking tables for SWIG1.3 tend to be much smaller than for SWIG1.1.
-
-*** Note: The old string-based type checking scheme is not going to
-return to SWIG so do not ask for backwards compatibility. The new
-scheme is substantially faster, it is less error-prone, it requires no
-dynamic memory allocation, it works better with the runtime libraries,
-and it is simpler to implement than the old string based approach.
-
-4. Deprecated Features (incomplete list)
-----------------------------------------
-
-4.1 Documentation system. The old documentation system has been removed
- entirely. I expect it to return someday, but it will have a much
- different form (probably influenced by XML).
-
-4.2 The %val and %out directives. These directives used to attach
- properties to function parameters such as
-
- void foo(%val int *ptr);
-
- The same effect can now be achieved with typemaps:
-
- void foo(int *INPUT);
-
-
-4.3 Extensions to the %module and %init directive are no longer
- supported. For example:
-
- %module example, foo, bar
-
- This used to perform a special kind of multi-module
- initialization for static linking. If you really
- need to do this, you will have to manually insert
- code into the module initialization function.
-
-4.4 %ifdef, %ifndef, %endif, %if, %elif, %else directives are
- withdrawn. SWIG now has a real preprocessor.
-
-4.5 %checkout directive removed.
-
-4.6 %except and %new are deprecated.
-
-4.7 %readonly and %readwrite are deprecated. Use %immutable instead.
-
-4.8 The %addmethods directive has been renamed to %extend.
-
-5. Language specific changes
-----------------------------
-
-5.1 Python shadow classes are much more efficient and pass the shadow objects
- directly to the C wrappers.
-
-5.2 Tcl code generation is substantially improved--especially for C++.
-
-5.3 Tcl module can now link to global variables of any type.
-
-5.4 Perl shadow classes improved and optimized somewhat.
-
-5.5 The Guile module represents pointers as smobs. (They used to be
- mangled into strings.) Memory leaks and type conversion bugs have been
- fixed. The Guile module system, including dynamic loading, and
- exceptions are supported. A typemap-driven procedure-documentation
- system has been added (requires Guile 1.4). Procedures-with-setters
- can be generated.
-
-5.6 The Python module now automatically creates shadow class objects from the
- C wrappers. This fixes a bunch of hard problems related to typemaps,
- exception handling, and more.
-
-6. New Features
----------------
-
-6.1 Java module added
-
-6.2 Ruby module added
-
-6.3 Mzscheme module added.
-
-6.4 Integrated preprocessor. You can now use C macros in SWIG interface files.
-
-6.5 PHP module added.
-
-6.6 %rename directive is greatly enhanced to deal with overloaded functions.
-
-6.7 Support for simple templates
-
-6.8 Support for overloaded operators.
-
-6.9 %feature directive.
-
-6.10 Ocaml module added.
-
-6.11 XML module added.
-
-6.12 CHICKEN module added.
-
-6.13 C# module added.
-
-
-
-
-
-
-
-
-
-
-
-