Lua fix for -external-runtime
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@13119 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
184519b6a6
commit
49b6c39d98
4 changed files with 47 additions and 30 deletions
|
|
@ -4,6 +4,9 @@ See the RELEASENOTES file for a summary of changes in each release.
|
||||||
|
|
||||||
Version 2.0.7 (in progress)
|
Version 2.0.7 (in progress)
|
||||||
===========================
|
===========================
|
||||||
|
2012-05-25: wsfulton
|
||||||
|
[Lua] Fixes for -external-runtime to work again.
|
||||||
|
|
||||||
2012-05-22: szager
|
2012-05-22: szager
|
||||||
[python] Disambiguate SWIG_From_unsigned_SS_int and SWIG_From_unsigned_SS_long.
|
[python] Disambiguate SWIG_From_unsigned_SS_int and SWIG_From_unsigned_SS_long.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,30 +5,6 @@
|
||||||
* This file is parsed by SWIG before reading any other interface file.
|
* This file is parsed by SWIG before reading any other interface file.
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
%insert("runtime") %{
|
|
||||||
/* Lua flavors */
|
|
||||||
#define SWIG_LUA_FLAVOR_LUA 1
|
|
||||||
#define SWIG_LUA_FLAVOR_ELUA 2
|
|
||||||
#define SWIG_LUA_FLAVOR_ELUAC 3
|
|
||||||
|
|
||||||
#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
|
|
||||||
# define SWIG_LUA_CONSTTAB_INT(B, C) LSTRKEY(B), LNUMVAL(C)
|
|
||||||
# define SWIG_LUA_CONSTTAB_FLOAT(B, C) LSTRKEY(B), LNUMVAL(C)
|
|
||||||
# define SWIG_LUA_CONSTTAB_STRING(B, C) LSTRKEY(B), LSTRVAL(C)
|
|
||||||
# define SWIG_LUA_CONSTTAB_CHAR(B, C) LSTRKEY(B), LNUMVAL(C)
|
|
||||||
# else /* SWIG_LUA_FLAVOR_LUA */
|
|
||||||
# define SWIG_LUA_CONSTTAB_INT(B, C) SWIG_LUA_INT, (char *)B, (long)C, 0, 0, 0
|
|
||||||
# define SWIG_LUA_CONSTTAB_FLOAT(B, C) SWIG_LUA_FLOAT, (char *)B, 0, (double)C, 0, 0
|
|
||||||
# define SWIG_LUA_CONSTTAB_STRING(B, C) SWIG_LUA_STRING, (char *)B, 0, 0, (void *)C, 0
|
|
||||||
# define SWIG_LUA_CONSTTAB_CHAR(B, C) SWIG_LUA_CHAR, (char *)B, (long)C, 0, 0, 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
|
|
||||||
# define LRO_STRVAL(v) {{.p = (char *) v}, LUA_TSTRING}
|
|
||||||
# define LSTRVAL LRO_STRVAL
|
|
||||||
#endif
|
|
||||||
%}
|
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* includes
|
* includes
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,35 @@ extern "C" {
|
||||||
#include <stdlib.h> /* for malloc */
|
#include <stdlib.h> /* for malloc */
|
||||||
#include <assert.h> /* for a few sanity tests */
|
#include <assert.h> /* for a few sanity tests */
|
||||||
|
|
||||||
|
/* -----------------------------------------------------------------------------
|
||||||
|
* Lua flavors
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#define SWIG_LUA_FLAVOR_LUA 1
|
||||||
|
#define SWIG_LUA_FLAVOR_ELUA 2
|
||||||
|
#define SWIG_LUA_FLAVOR_ELUAC 3
|
||||||
|
|
||||||
|
#if !defined(SWIG_LUA_TARGET)
|
||||||
|
# error SWIG_LUA_TARGET not defined
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
|
||||||
|
# define SWIG_LUA_CONSTTAB_INT(B, C) LSTRKEY(B), LNUMVAL(C)
|
||||||
|
# define SWIG_LUA_CONSTTAB_FLOAT(B, C) LSTRKEY(B), LNUMVAL(C)
|
||||||
|
# define SWIG_LUA_CONSTTAB_STRING(B, C) LSTRKEY(B), LSTRVAL(C)
|
||||||
|
# define SWIG_LUA_CONSTTAB_CHAR(B, C) LSTRKEY(B), LNUMVAL(C)
|
||||||
|
#else /* SWIG_LUA_FLAVOR_LUA */
|
||||||
|
# define SWIG_LUA_CONSTTAB_INT(B, C) SWIG_LUA_INT, (char *)B, (long)C, 0, 0, 0
|
||||||
|
# define SWIG_LUA_CONSTTAB_FLOAT(B, C) SWIG_LUA_FLOAT, (char *)B, 0, (double)C, 0, 0
|
||||||
|
# define SWIG_LUA_CONSTTAB_STRING(B, C) SWIG_LUA_STRING, (char *)B, 0, 0, (void *)C, 0
|
||||||
|
# define SWIG_LUA_CONSTTAB_CHAR(B, C) SWIG_LUA_CHAR, (char *)B, (long)C, 0, 0, 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUA) || (SWIG_LUA_TARGET == SWIG_LUA_FLAVOR_ELUAC)
|
||||||
|
# define LRO_STRVAL(v) {{.p = (char *) v}, LUA_TSTRING}
|
||||||
|
# define LSTRVAL LRO_STRVAL
|
||||||
|
#endif
|
||||||
|
|
||||||
/* -----------------------------------------------------------------------------
|
/* -----------------------------------------------------------------------------
|
||||||
* compatibility defines
|
* compatibility defines
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
|
||||||
|
|
@ -284,12 +284,7 @@ public:
|
||||||
Printf(f_runtime, "\n");
|
Printf(f_runtime, "\n");
|
||||||
Printf(f_runtime, "#define SWIGLUA\n");
|
Printf(f_runtime, "#define SWIGLUA\n");
|
||||||
|
|
||||||
if (elua_ltr)
|
emitLuaFlavor(f_runtime);
|
||||||
Printf(f_runtime, "#define SWIG_LUA_TARGET SWIG_LUA_FLAVOR_ELUA\n");
|
|
||||||
else if (eluac_ltr)
|
|
||||||
Printf(f_runtime, "#define SWIG_LUA_TARGET SWIG_LUA_FLAVOR_ELUAC\n");
|
|
||||||
else
|
|
||||||
Printf(f_runtime, "#define SWIG_LUA_TARGET SWIG_LUA_FLAVOR_LUA\n");
|
|
||||||
|
|
||||||
if (nomoduleglobal) {
|
if (nomoduleglobal) {
|
||||||
Printf(f_runtime, "#define SWIG_LUA_NO_MODULE_GLOBAL\n");
|
Printf(f_runtime, "#define SWIG_LUA_NO_MODULE_GLOBAL\n");
|
||||||
|
|
@ -1269,6 +1264,9 @@ public:
|
||||||
String *runtimeCode() {
|
String *runtimeCode() {
|
||||||
String *s = NewString("");
|
String *s = NewString("");
|
||||||
const char *filenames[] = { "luarun.swg", 0 } ; // must be 0 terminated
|
const char *filenames[] = { "luarun.swg", 0 } ; // must be 0 terminated
|
||||||
|
|
||||||
|
emitLuaFlavor(s);
|
||||||
|
|
||||||
String *sfile;
|
String *sfile;
|
||||||
for (int i = 0; filenames[i] != 0; i++) {
|
for (int i = 0; filenames[i] != 0; i++) {
|
||||||
sfile = Swig_include_sys(filenames[i]);
|
sfile = Swig_include_sys(filenames[i]);
|
||||||
|
|
@ -1279,6 +1277,7 @@ public:
|
||||||
Delete(sfile);
|
Delete(sfile);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1290,6 +1289,16 @@ public:
|
||||||
* helpers
|
* helpers
|
||||||
* --------------------------------------------------------------------- */
|
* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
void emitLuaFlavor(String *s) {
|
||||||
|
if (elua_ltr)
|
||||||
|
Printf(s, "#define SWIG_LUA_TARGET SWIG_LUA_FLAVOR_ELUA\n");
|
||||||
|
else if (eluac_ltr)
|
||||||
|
Printf(s, "#define SWIG_LUA_TARGET SWIG_LUA_FLAVOR_ELUAC\n");
|
||||||
|
else
|
||||||
|
Printf(s, "#define SWIG_LUA_TARGET SWIG_LUA_FLAVOR_LUA\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* This is to convert the string of Lua code into a proper string, which can then be
|
/* This is to convert the string of Lua code into a proper string, which can then be
|
||||||
emitted into the C/C++ code.
|
emitted into the C/C++ code.
|
||||||
Basically is is a lot of search & replacing of odd sequences
|
Basically is is a lot of search & replacing of odd sequences
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue