summaryrefslogtreecommitdiff
path: root/devtools/swigwin-1.3.34/Lib/php4/const.i
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/swigwin-1.3.34/Lib/php4/const.i')
-rw-r--r--devtools/swigwin-1.3.34/Lib/php4/const.i53
1 files changed, 53 insertions, 0 deletions
diff --git a/devtools/swigwin-1.3.34/Lib/php4/const.i b/devtools/swigwin-1.3.34/Lib/php4/const.i
new file mode 100644
index 0000000..6ddd403
--- /dev/null
+++ b/devtools/swigwin-1.3.34/Lib/php4/const.i
@@ -0,0 +1,53 @@
+/* -----------------------------------------------------------------------------
+ * 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
+ "SWIG_LONG_CONSTANT($symname, $value);";
+
+%typemap(consttab) float,
+ double
+ "SWIG_DOUBLE_CONSTANT($symname, $value);";
+
+%typemap(consttab) char
+ "SWIG_CHAR_CONSTANT($symname, $value);";
+
+%typemap(consttab) char *,
+ const char *,
+ char [],
+ const char []
+ "SWIG_STRING_CONSTANT($symname, $value);";
+
+%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 );
+}