/* Typemaps for constants */
"REGISTER_LONG_CONSTANT( \"$symname\", $value, CONST_CS | CONST_PERSISTENT);";
%typemap(consttab) float,
"REGISTER_DOUBLE_CONSTANT(\"$symname\", $value, CONST_CS | CONST_PERSISTENT);";
"REGISTER_STRING_CONSTANT(\"$symname\", \"$value\", CONST_CS | CONST_PERSISTENT );";
%typemap(consttab) char *,
"REGISTER_STRING_CONSTANT(\"$symname\", $value, CONST_CS | CONST_PERSISTENT);";
%typemap(consttab) 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...
SWIG_SetPointerZval(z_var, (void*)$value, $1_descriptor, 0);
//zend_hash_add(&EG(symbol_table), "$1", strlen("$1")+1, (void *)&z_var,sizeof(zval *), NULL);
zval_copy_ctor(&c.value);
size_t len = strlen("$1");
c.name = zend_strndup( "$1", len );
c.flags = CONST_CS | CONST_PERSISTENT;
c.module_number = module_number;
zend_register_constant( &c TSRMLS_CC );