SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages.
http://www.swig.org
Closes #1977 Fixes #1603 Squashed commit of the following: commit 61f794184e127e4a4b46fb306b2dfea71f7cd7bb Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 15:20:25 2021 +0100 added python version for second part of testcase commit bb80e236b8a7033d1ee45e392352ec0539730db3 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 15:10:14 2021 +0100 reworked comment in fixed code commit 5a94bcc481ea1c068b62a3dbc6cbc2032c9896db Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 15:07:34 2021 +0100 removed new unittests; I switched to the official test cases commit 36603f3c8dd27ee7b27d4a40804a844e1964b5aa Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 15:05:33 2021 +0100 removed new unittests; I switched to the official test cases commit 1f20ea00d22e6c59edb9ae69d6bb31aacab09c4b Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 14:39:19 2021 +0100 adapted testcase commit ab492794c0f26a27761b205fe1d67e2e9aa1f5b6 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 14:29:10 2021 +0100 fixed test commit 9b5dd0c8f9b110a3492753b466e707d7f786c909 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 13:04:06 2021 +0100 C99 compatible comments commit 1a89425ac8c85d68c6af1974e07573b9468d421e Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 20 11:41:48 2021 +0100 added extra checks to prevent accidental partial matches commit 20e76f511ac139c8ea2a9a7fd89c29391579665f Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:42:56 2021 +0100 minor commit 0e383bbb764f9a019f62b9f620f80908dead50d2 Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:41:45 2021 +0100 cleanup commit b644767121440c77f4caeb45f672e3c698ee9d78 Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:39:43 2021 +0100 cleanup commit 2574468c0f9352040759e680214b40ee59b03650 Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:38:35 2021 +0100 cleanup commit 9dc7f1ed30171649e8a70b12ff4f76d93e545074 Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:35:28 2021 +0100 removed ide files commit a442a9df460c52d4dbf7adf8e4f0c5bc5ad3b0cf Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:32:36 2021 +0100 removed printf commit da4c6e91e3b70e72e89cf09dfabfef7416274637 Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:29:02 2021 +0100 possible fix found commit 6fad8d40e36195be422d5822e6f49d610e3ab693 Author: goto40 <pierre.bayerl@googlemail.com> Date: Thu Mar 18 21:01:11 2021 +0100 found difference between good/bad case... next: analyze why replacement did not work here... commit 72a7693340358d2067e63c5489191917ccb818dd Author: goto40 <pierre.bayerl@googlemail.com> Date: Wed Mar 17 22:43:08 2021 +0100 ideintified location where the template-template type is inserted in the final type (with the missing specialization). commit 1b53312c07ab0696d9cade144bdbad1c84ebf6a3 Author: goto40 <pierre.bayerl@googlemail.com> Date: Wed Mar 17 22:28:19 2021 +0100 more notes (to be reverted) commit a9a0b589389784e0e95dc6f9edd27c78a16b481d Author: goto40 <pierre.bayerl@googlemail.com> Date: Wed Mar 17 22:19:16 2021 +0100 some experiments (to be reverted) commit 0e7a24bbd5944d6e4f5c96ffd03003465f6d80f5 Author: goto40 <pierre.bayerl@googlemail.com> Date: Wed Mar 17 21:46:20 2021 +0100 added some notes commit 2f77911a12a38735cadeb93223981f3a6d9e7450 Author: goto40 <pierre.bayerl@googlemail.com> Date: Tue Mar 16 22:01:01 2021 +0100 comment changed commit 2cb7213b06f9b912c0ba56350ec6c318edba1ffb Author: goto40 <pierre.bayerl@googlemail.com> Date: Tue Mar 16 21:55:47 2021 +0100 renamed example template parameters to easily distinguish them. commit ff457d73977e05adf84b095bcfa1dccd21203c48 Author: goto40 <pierre.bayerl@googlemail.com> Date: Tue Mar 16 21:21:10 2021 +0100 added reset parser functionality (required for unittests, to reset parser) commit 617bbde3b4b3d9dd16d3a2d85041fc78a87ae81f Author: goto40 <pierre.bayerl@googlemail.com> Date: Tue Mar 16 20:47:41 2021 +0100 adjusted test for simple templates commit beb7e7f77cedd4ecfa4165534781d417710aff7e Author: goto40 <pierre.bayerl@googlemail.com> Date: Mon Mar 15 07:41:17 2021 +0100 added note how it should be... commit 7b3328431ce41f7ec05657c69d3cb1a886cb8437 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 17:07:24 2021 +0100 found a place which is maybe problematic for the template_template problem (#1603) commit 46c2443d15a6288318723b7e730687791475cf7b Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 16:11:56 2021 +0100 unitests: reset parser for each testcase commit b3a0f1516ffdbf9f0fbb2d8362e2375fd1893c3f Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 15:30:47 2021 +0100 first experiment with templates commit 32a11c6c77b840f11b9e926edd465e6a7108267f Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 14:31:17 2021 +0100 wip commit 37b805ba6eaadb4a34a929204d539f555f8313be Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 14:21:05 2021 +0100 integrated unittests in ctest commit 79f7bee168ecfbd2f2f5feeb9ca43fb7113bc2a4 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 14:18:26 2021 +0100 wip: new test created; problem: not in c++ mode commit 345d503d557d67fa431f528e637bac5816f50ab1 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 14:08:09 2021 +0100 cleanup test code commit 0a26adec10435af36bfad4e1f6a073460c63fbc6 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 14:05:24 2021 +0100 some more tests (first steps with c++ code) commit 6f628e0fa9e2659f5a7ca08b9954e81d4cd4f012 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sun Mar 14 12:56:41 2021 +0100 experiments commit c4a13bf3e12cd83886cbc54e32194bf916a643d3 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 13 18:18:01 2021 +0100 first experiment commit 7d265861052f205d48b1ccec8ab0fe053de19858 Author: goto40 <pierre.bayerl@googlemail.com> Date: Sat Mar 13 17:23:13 2021 +0100 setup catch2 framework (w/o tests) |
||
|---|---|---|
| CCache | ||
| Doc | ||
| Examples | ||
| Lib | ||
| Source | ||
| Tools | ||
| Win | ||
| .gitattributes | ||
| .gitignore | ||
| .travis.yml | ||
| ANNOUNCE | ||
| appveyor.yml | ||
| autogen.sh | ||
| CHANGES | ||
| CHANGES.current | ||
| CMakeLists.txt | ||
| configure.ac | ||
| COPYRIGHT | ||
| INSTALL | ||
| LICENSE | ||
| LICENSE-GPL | ||
| LICENSE-UNIVERSITIES | ||
| Makefile.in | ||
| preinst-swig.in | ||
| README | ||
| RELEASENOTES | ||
| swig.spec.in | ||
| TODO | ||
SWIG (Simplified Wrapper and Interface Generator)
Version: 4.1.0 (in progress)
Tagline: SWIG is a compiler that integrates C and C++ with languages
including Perl, Python, Tcl, Ruby, PHP, Java, C#, D, Go, Lua,
Octave, R, Scheme (Guile, MzScheme/Racket), Scilab, Ocaml.
SWIG can also export its parse tree into XML.
SWIG reads annotated C/C++ header files and creates wrapper code (glue
code) in order to make the corresponding C/C++ libraries available to
the listed languages, or to extend C/C++ programs with a scripting
language.
Up-to-date SWIG related information can be found at
http://www.swig.org
A SWIG FAQ and other hints can be found on the SWIG Wiki:
https://github.com/swig/swig/wiki
License
=======
Please see the LICENSE file for details of the SWIG license. For
further insight into the license including the license of SWIG's
output code, please visit
http://www.swig.org/legal.html
Release Notes
=============
Please see the CHANGES.current file for a detailed list of bug fixes and
new features for the current release. The CHANGES file contains bug fixes
and new features for older versions. A summary of changes in each release
can be found in the RELEASENOTES file.
Documentation
=============
The Doc/Manual directory contains the most recent set of updated
documentation for this release. The documentation is available in
three different formats, each of which contains identical content.
These format are, pdf (Doc/Manual/SWIGDocumentation.pdf), single
page html (Doc/Manual/SWIGDocumentation.html) or multiple page html
(other files in Doc/Manual). Please select your chosen format and
copy/install to wherever takes your fancy.
There is some technical developer documentation available in the
Doc/Devel subdirectory. This is not necessarily up-to-date, but it
has some information on SWIG internals.
Documentation is also online at http://www.swig.org/doc.html.
Backwards Compatibility
=======================
The developers strive their best to preserve backwards compatibility
between releases, but this is not always possible as the overriding
aim is to provide the best wrapping experience. Where backwards
compatibility is known to be broken, it is clearly marked as an
incompatibility in the CHANGES and CHANGES.current files.
See the documentation for details of the SWIG_VERSION preprocessor
symbol if you have backward compatibility issues and need to use more
than one version of SWIG.
Installation
============
Please read the Doc/Manual/Preface.html#Preface_installation for
full installation instructions for Windows, Unix and Mac OS X
using the release tarball/zip file. The INSTALL file has generic
build and installation instructions for Unix users.
Users wishing to build and install code from Github should
visit http://swig.org/svn.html to obtain the more detailed
instructions required for building code obtained from Github - extra
steps are required compared to building from the release tarball.
Testing
=======
The typical 'make -k check' can be performed on Unix operating systems.
Please read Doc/Manual/Preface.html#Preface_testing for details.
Examples
========
The Examples directory contains a variety of examples of using SWIG
and it has some browsable documentation. Simply point your browser to
the file "Example/index.html".
The Examples directory also includes Visual C++ project 6 (.dsp) files for
building some of the examples on Windows. Later versions of Visual Studio
will convert these old style project files into a current solution file.
Known Issues
============
There are minor known bugs, details of which are in the bug tracker, see
http://www.swig.org/bugs.html.
Troubleshooting
===============
In order to operate correctly, SWIG relies upon a set of library
files. If after building SWIG, you get error messages like this,
$ swig foo.i
:1. Unable to find 'swig.swg'
:3. Unable to find 'tcl8.swg'
it means that SWIG has either been incorrectly configured or
installed. To fix this:
1. Make sure you remembered to do a 'make install' and that
the installation actually worked. Make sure you have
write permission on the install directory.
2. If that doesn't work, type 'swig -swiglib' to find out
where SWIG thinks its library is located.
3. If the location is not where you expect, perhaps
you supplied a bad option to configure. Use
./configure --prefix=pathname to set the SWIG install
location. Also, make sure you don't include a shell
escape character such as ~ when you specify the path.
4. The SWIG library can be changed by setting the SWIG_LIB
environment variable. However, you really shouldn't
have to do this.
If you are having other troubles, you might look at the SWIG Wiki at
https://github.com/swig/swig/wiki.
Participate!
============
Please report any errors and submit patches (if possible)! We only
have access to a limited variety of hardware (Linux, Solaris, OS-X,
and Windows). All contributions help.
If you would like to join the SWIG development team or contribute a
language module to the distribution, please contact the swig-devel
mailing list, details at http://www.swig.org/mail.html.
-- The SWIG Maintainers