Merge branch 'master' of github.com:swig/swig
This commit is contained in:
commit
f19592acf4
8 changed files with 41 additions and 29 deletions
12
ANNOUNCE
12
ANNOUNCE
|
|
@ -1,4 +1,4 @@
|
|||
*** ANNOUNCE: SWIG 3.0.1 (in progress) ***
|
||||
*** ANNOUNCE: SWIG 3.0.1 (27 May 2014) ***
|
||||
|
||||
http://www.swig.org
|
||||
|
||||
|
|
@ -10,11 +10,11 @@ What is SWIG?
|
|||
SWIG is a software development tool that reads C/C++ header files and
|
||||
generates the wrapper code needed to make C and C++ code accessible
|
||||
from other programming languages including Perl, Python, Tcl, Ruby,
|
||||
PHP, C#, Go, Java, Lua, Scheme (Guile, MzScheme, CHICKEN), D, Ocaml,
|
||||
Pike, Modula-3, Octave, R, Common Lisp (CLISP, Allegro CL, CFFI, UFFI).
|
||||
SWIG can also export its parse tree in the form of XML and Lisp
|
||||
s-expressions. Major applications of SWIG include generation of
|
||||
scripting language extension modules, rapid prototyping, testing,
|
||||
PHP, C#, Go, Java, Javascript, Lua, Scheme (Guile, MzScheme, CHICKEN),
|
||||
D, Ocaml, Pike, Modula-3, Octave, R, Common Lisp (CLISP, Allegro CL,
|
||||
CFFI, UFFI). SWIG can also export its parse tree in the form of XML
|
||||
and Lisp s-expressions. Major applications of SWIG include generation
|
||||
of scripting language extension modules, rapid prototyping, testing,
|
||||
and user interface development for large C/C++ systems.
|
||||
|
||||
Availability
|
||||
|
|
|
|||
|
|
@ -2,9 +2,18 @@ Below are the changes for the current release.
|
|||
See the CHANGES file for changes in older releases.
|
||||
See the RELEASENOTES file for a summary of changes in each release.
|
||||
|
||||
Version 3.0.1 (in progress)
|
||||
Version 3.0.1 (27 May 2014)
|
||||
===========================
|
||||
|
||||
2014-05-25: hfalcic
|
||||
[Python] Python 3 byte string output: use errors="surrogateescape"
|
||||
if available on the version of Python that's in use. This allows
|
||||
obtaining the original byte string (and potentially trying a fallback
|
||||
encoding) if the bytes can't be decoded as UTF-8.
|
||||
|
||||
Previously, a UnicodeDecodeError would be raised with no way to treat
|
||||
the data as bytes or try another codec.
|
||||
|
||||
2014-05-18: vkalinin
|
||||
Bug #175 - Restore %extend to work for unnamed nested structures by using a C
|
||||
symbol comprising the outer structure name and unnamed variable instance name.
|
||||
|
|
|
|||
|
|
@ -1056,7 +1056,7 @@
|
|||
<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_future_work">Future work</a>
|
||||
<li><a href="Javascript.html#Javascript_known_issues">Known Issues</a>
|
||||
</ul>
|
||||
<li><a href="Javascript.html#Javascript_integration">Integration</a>
|
||||
<ul>
|
||||
|
|
@ -1082,6 +1082,7 @@
|
|||
<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>
|
||||
|
|
@ -1566,6 +1567,7 @@
|
|||
<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>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
</head>
|
||||
<body>
|
||||
|
||||
<H1><a name="Javascript_nn1"></a>26 SWIG and Javascript</H1>
|
||||
<H1><a name="Javascript"></a>26 SWIG and Javascript</H1>
|
||||
<!-- INDEX -->
|
||||
<div class="sectiontoc">
|
||||
<ul>
|
||||
|
|
@ -130,13 +130,14 @@ $ make check-javascript-examples ENGINE=jsc</pre>
|
|||
$ make check-javascript-test-suite ENGINE=jsc</pre>
|
||||
</div>
|
||||
|
||||
<H3><a name="Javascript_known_issues"></a>26.2.1 Known Issues</H3>
|
||||
<H3><a name="Javascript_known_issues"></a>26.2.3 Known Issues</H3>
|
||||
|
||||
|
||||
<p>At the moment, the Javascript generators pass all tests syntactically, i.e., the generated source code compiles. However, there are still remaining runtime issues.</p>
|
||||
|
||||
<ul>
|
||||
<li><p>Default optional arguments do not work for all targeted interpreters</p></li>
|
||||
<li><p>Mutliple output arguments do not work for JSC</p></li>
|
||||
<li><p>Multiple output arguments do not work for JSC</p></li>
|
||||
<li><p>C89 incompatibily: the JSC generator might still generate C89 violating code</p></li>
|
||||
<li><p><code>long long</code> is not supported</p></li>
|
||||
<li><p><code>%native</code> is not supported</p></li>
|
||||
|
|
@ -891,7 +892,7 @@ state.clazz(NAME, Getattr(n, "sym:name"));</pre>
|
|||
<p>State information can be retrieved using <code>state.clazz(NAME)</code> or with <code>Getattr</code> on <code>state.clazz()</code> which actually returns a <code>Hash</code> instance.</p>
|
||||
|
||||
|
||||
<H3><a name="Javascript_jsc_exceptions"></a>26.5.5. Handling Exceptions in JavascriptCore</H3>
|
||||
<H3><a name="Javascript_jsc_exceptions"></a>26.5.5 Handling Exceptions in JavascriptCore</H3>
|
||||
|
||||
|
||||
<p>Applications with an embedded JavascriptCore should be able to present detailed exception messages that occur in the Javascript engine. Below is an example derived from code provided by Brian Barnes on how these exception details can be extracted.</p>
|
||||
|
|
|
|||
|
|
@ -5929,7 +5929,7 @@ For details of abstract base class, please see
|
|||
<a href="http://www.python.org/dev/peps/pep-3119/">PEP 3119</a>.
|
||||
</p>
|
||||
|
||||
<H3><a name="Python_nn77"></a>35.12.4 Byte string output conversion</H3>
|
||||
<H3><a name="Python_nn77"></a>36.12.4 Byte string output conversion</H3>
|
||||
|
||||
|
||||
<p>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<body bgcolor="#ffffff">
|
||||
<H1><a name="Sections"></a>SWIG-3.0 Documentation</H1>
|
||||
|
||||
Last update : SWIG-3.0.1 (in progress)
|
||||
Last update : SWIG-3.0.1 (27 May 2014)
|
||||
|
||||
<H2>Sections</H2>
|
||||
|
||||
|
|
@ -42,7 +42,7 @@ Last update : SWIG-3.0.1 (in progress)
|
|||
<li><a href="Go.html#Go">Go support</a></li>
|
||||
<li><a href="Guile.html#Guile">Guile support</a></li>
|
||||
<li><a href="Java.html#Java">Java support</a></li>
|
||||
<li><a href="Javascript.html#Java">Javascript support</a></li>
|
||||
<li><a href="Javascript.html#Javascript">Javascript support</a></li>
|
||||
<li><a href="Lisp.html#Lisp">Common Lisp support</a></li>
|
||||
<li><a href="Lua.html#Lua">Lua support</a></li>
|
||||
<li><a href="Modula3.html#Modula3">Modula3 support</a></li>
|
||||
|
|
|
|||
2
README
2
README
|
|
@ -1,6 +1,6 @@
|
|||
SWIG (Simplified Wrapper and Interface Generator)
|
||||
|
||||
Version: 3.0.1 (in progress)
|
||||
Version: 3.0.1 (27 May 2014)
|
||||
|
||||
Tagline: SWIG is a compiler that integrates C and C++ with languages
|
||||
including Perl, Python, Tcl, Ruby, PHP, Java, C#, D, Go, Lua,
|
||||
|
|
|
|||
|
|
@ -724,19 +724,19 @@ int JSEmitter::emitWrapperFunction(Node *n) {
|
|||
// detected via the 'view' attribute.
|
||||
|| (Equal(kind, "variable") && Equal(Getattr(n, "view"), "globalfunctionHandler"))
|
||||
) {
|
||||
bool is_member = GetFlag(n, "ismember") | GetFlag(n, "feature:extend");
|
||||
bool is_static = GetFlag(state.function(), IS_STATIC);
|
||||
bool is_member = GetFlag(n, "ismember") != 0 || GetFlag(n, "feature:extend") != 0;
|
||||
bool is_static = GetFlag(state.function(), IS_STATIC) != 0;
|
||||
ret = emitFunction(n, is_member, is_static);
|
||||
} else if (Cmp(kind, "variable") == 0) {
|
||||
bool is_static = GetFlag(state.variable(), IS_STATIC);
|
||||
bool is_static = GetFlag(state.variable(), IS_STATIC) != 0;
|
||||
// HACK: smartpointeraccessed static variables are not treated as statics
|
||||
if (GetFlag(n, "allocate:smartpointeraccess")) {
|
||||
is_static = false;
|
||||
}
|
||||
|
||||
bool is_member = GetFlag(n, "ismember");
|
||||
bool is_setter = GetFlag(n, "memberset") || GetFlag(n, "varset");
|
||||
bool is_getter = GetFlag(n, "memberget") || GetFlag(n, "varget");
|
||||
bool is_member = GetFlag(n, "ismember") != 0;
|
||||
bool is_setter = GetFlag(n, "memberset") != 0 || GetFlag(n, "varset") != 0;
|
||||
bool is_getter = GetFlag(n, "memberget") != 0 || GetFlag(n, "varget") != 0;
|
||||
if (is_setter) {
|
||||
ret = emitSetter(n, is_member, is_static);
|
||||
} else if (is_getter) {
|
||||
|
|
@ -840,7 +840,7 @@ int JSEmitter::emitCtor(Node *n) {
|
|||
|
||||
Wrapper *wrapper = NewWrapper();
|
||||
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded");
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded") != 0;
|
||||
|
||||
Template t_ctor(getTemplate("js_ctor"));
|
||||
|
||||
|
|
@ -1160,7 +1160,7 @@ int JSEmitter::emitFunction(Node *n, bool is_member, bool is_static) {
|
|||
Wrapper *wrapper = NewWrapper();
|
||||
Template t_function(getTemplate("js_function"));
|
||||
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded");
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded") != 0;
|
||||
|
||||
// prepare the function wrapper name
|
||||
String *iname = Getattr(n, "sym:name");
|
||||
|
|
@ -1288,7 +1288,7 @@ void JSEmitter::marshalOutput(Node *n, ParmList *params, Wrapper *wrapper, Strin
|
|||
cresult = defaultResultName;
|
||||
|
||||
tm = Swig_typemap_lookup_out("out", n, cresult, wrapper, actioncode);
|
||||
bool should_own = GetFlag(n, "feature:new");
|
||||
bool should_own = GetFlag(n, "feature:new") != 0;
|
||||
|
||||
if (tm) {
|
||||
Replaceall(tm, "$objecttype", Swig_scopename_last(SwigType_str(SwigType_strip_qualifiers(type), 0)));
|
||||
|
|
@ -1628,8 +1628,8 @@ int JSCEmitter::enterFunction(Node *n) {
|
|||
int JSCEmitter::exitFunction(Node *n) {
|
||||
Template t_function = getTemplate("jsc_function_declaration");
|
||||
|
||||
bool is_member = GetFlag(n, "ismember") | GetFlag(n, "feature:extend");
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded");
|
||||
bool is_member = GetFlag(n, "ismember") != 0 || GetFlag(n, "feature:extend") != 0;
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded") != 0;
|
||||
|
||||
// handle overloaded functions
|
||||
if (is_overloaded) {
|
||||
|
|
@ -2077,10 +2077,10 @@ int V8Emitter::exitVariable(Node *n) {
|
|||
}
|
||||
|
||||
int V8Emitter::exitFunction(Node *n) {
|
||||
bool is_member = GetFlag(n, "ismember") | GetFlag(n, "feature:extend");
|
||||
bool is_member = GetFlag(n, "ismember") != 0 || GetFlag(n, "feature:extend") != 0;
|
||||
|
||||
// create a dispatcher for overloaded functions
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded");
|
||||
bool is_overloaded = GetFlag(n, "sym:overloaded") != 0;
|
||||
if (is_overloaded) {
|
||||
if (!Getattr(n, "sym:nextSibling")) {
|
||||
//state.function(WRAPPER_NAME, Swig_name_wrapper(Getattr(n, "name")));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue