const.i 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /* -----------------------------------------------------------------------------
  2. * const.i
  3. *
  4. * Typemaps for constants
  5. * ----------------------------------------------------------------------------- */
  6. %typemap(consttab) int,
  7. unsigned int,
  8. short,
  9. unsigned short,
  10. long,
  11. unsigned long,
  12. unsigned char,
  13. signed char,
  14. bool,
  15. enum SWIGTYPE
  16. "SWIG_LONG_CONSTANT($symname, ($1_type)$value);";
  17. %typemap(consttab) float,
  18. double
  19. "SWIG_DOUBLE_CONSTANT($symname, $value);";
  20. %typemap(consttab) char
  21. "SWIG_CHAR_CONSTANT($symname, $value);";
  22. %typemap(consttab) char *,
  23. const char *,
  24. char [],
  25. const char []
  26. "SWIG_STRING_CONSTANT($symname, $value);";
  27. %typemap(consttab) SWIGTYPE *,
  28. SWIGTYPE &,
  29. SWIGTYPE &&,
  30. SWIGTYPE [] {
  31. zval *z_var;
  32. zend_constant c;
  33. size_t len = sizeof("$symname") - 1;
  34. MAKE_STD_ZVAL(z_var);
  35. SWIG_SetPointerZval(z_var, (void*)$value, $1_descriptor, 0);
  36. c.value = *z_var;
  37. zval_copy_ctor(&c.value);
  38. c.name = zend_strndup("$symname", len);
  39. c.name_len = len+1;
  40. c.flags = CONST_CS | CONST_PERSISTENT;
  41. c.module_number = module_number;
  42. zend_register_constant( &c TSRMLS_CC );
  43. }
  44. /* Handled as a global variable. */
  45. %typemap(consttab) SWIGTYPE (CLASS::*) "";