swig/Lib/php4/const.i
Olly Betts 1b1334815c [PHP] Fix many occurrences of "warning: deprecated conversion from
string constant to 'char*'" from GCC 4.2 in generated C/C++ code.


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9992 626c5289-ae23-0410-ae9c-e8d60b6d4f22
2007-10-16 21:39:37 +00:00

55 lines
2 KiB
OpenEdge ABL

/* -----------------------------------------------------------------------------
* See the LICENSE file for information on copyright, usage and redistribution
* of SWIG, and the README file for authors - http://www.swig.org/release.html.
*
* const.i
*
* Typemaps for constants
* ----------------------------------------------------------------------------- */
%typemap(consttab) int,
unsigned int,
short,
unsigned short,
long,
unsigned long,
unsigned char,
signed char,
bool,
enum SWIGTYPE
"REGISTER_LONG_CONSTANT((char*)\"$symname\", $value, CONST_CS | CONST_PERSISTENT);";
%typemap(consttab) float,
double
"REGISTER_DOUBLE_CONSTANT((char*)\"$symname\", $value, CONST_CS | CONST_PERSISTENT);";
%typemap(consttab) char {
static char swig_char = $value;
REGISTER_STRINGL_CONSTANT((char*)"$symname", &swig_char, 1, CONST_CS | CONST_PERSISTENT);
}
%typemap(consttab) char *,
const char *,
char [],
const char []
"REGISTER_STRINGL_CONSTANT((char*)\"$symname\", $value, strlen($value), CONST_CS | CONST_PERSISTENT);";
%typemap(consttab) SWIGTYPE *,
SWIGTYPE &,
SWIGTYPE [] {
/* This actually registers it as a global variable and constant. I don't
* like it, but I can't figure out the zend_constant code... */
zval *z_var;
MAKE_STD_ZVAL(z_var);
SWIG_SetPointerZval(z_var, (void*)$value, $1_descriptor, 0);
/* zend_hash_add(&EG(symbol_table), "$1", sizeof("$1"), (void *)&z_var,sizeof(zval *), NULL); */
zend_constant c;
c.value = *z_var;
zval_copy_ctor(&c.value);
size_t len = sizeof("$1") - 1;
c.name = zend_strndup("$1", len);
c.name_len = len+1;
c.flags = CONST_CS | CONST_PERSISTENT;
c.module_number = module_number;
zend_register_constant( &c TSRMLS_CC );
}