zend_variables.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. +----------------------------------------------------------------------+
  3. | Zend Engine |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) 1998-2016 Zend Technologies Ltd. (http://www.zend.com) |
  6. +----------------------------------------------------------------------+
  7. | This source file is subject to version 2.00 of the Zend license, |
  8. | that is bundled with this package in the file LICENSE, and is |
  9. | available through the world-wide-web at the following url: |
  10. | http://www.zend.com/license/2_00.txt. |
  11. | If you did not receive a copy of the Zend license and are unable to |
  12. | obtain it through the world-wide-web, please send a note to |
  13. | license@zend.com so we can mail you a copy immediately. |
  14. +----------------------------------------------------------------------+
  15. | Authors: Andi Gutmans <andi@zend.com> |
  16. | Zeev Suraski <zeev@zend.com> |
  17. +----------------------------------------------------------------------+
  18. */
  19. /* $Id$ */
  20. #ifndef ZEND_VARIABLES_H
  21. #define ZEND_VARIABLES_H
  22. BEGIN_EXTERN_C()
  23. ZEND_API void _zval_dtor_func(zval *zvalue ZEND_FILE_LINE_DC);
  24. static zend_always_inline void _zval_dtor(zval *zvalue ZEND_FILE_LINE_DC)
  25. {
  26. if (zvalue->type <= IS_BOOL) {
  27. return;
  28. }
  29. _zval_dtor_func(zvalue ZEND_FILE_LINE_RELAY_CC);
  30. }
  31. ZEND_API void _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC);
  32. static zend_always_inline void _zval_copy_ctor(zval *zvalue ZEND_FILE_LINE_DC)
  33. {
  34. if (zvalue->type <= IS_BOOL) {
  35. return;
  36. }
  37. _zval_copy_ctor_func(zvalue ZEND_FILE_LINE_RELAY_CC);
  38. }
  39. ZEND_API int zval_copy_static_var(zval **p TSRMLS_DC, int num_args, va_list args, zend_hash_key *key);
  40. ZEND_API int zend_print_variable(zval *var);
  41. ZEND_API void _zval_ptr_dtor(zval **zval_ptr ZEND_FILE_LINE_DC);
  42. ZEND_API void _zval_internal_dtor(zval *zvalue ZEND_FILE_LINE_DC);
  43. ZEND_API void _zval_internal_ptr_dtor(zval **zvalue ZEND_FILE_LINE_DC);
  44. ZEND_API void _zval_dtor_wrapper(zval *zvalue);
  45. #define zval_copy_ctor(zvalue) _zval_copy_ctor((zvalue) ZEND_FILE_LINE_CC)
  46. #define zval_dtor(zvalue) _zval_dtor((zvalue) ZEND_FILE_LINE_CC)
  47. #define zval_ptr_dtor(zval_ptr) _zval_ptr_dtor((zval_ptr) ZEND_FILE_LINE_CC)
  48. #define zval_internal_dtor(zvalue) _zval_internal_dtor((zvalue) ZEND_FILE_LINE_CC)
  49. #define zval_internal_ptr_dtor(zvalue) _zval_internal_ptr_dtor((zvalue) ZEND_FILE_LINE_CC)
  50. #define zval_dtor_wrapper _zval_dtor_wrapper
  51. #if ZEND_DEBUG
  52. ZEND_API void _zval_copy_ctor_wrapper(zval *zvalue);
  53. ZEND_API void _zval_ptr_dtor_wrapper(zval **zval_ptr);
  54. ZEND_API void _zval_internal_dtor_wrapper(zval *zvalue);
  55. ZEND_API void _zval_internal_ptr_dtor_wrapper(zval **zvalue);
  56. #define zval_copy_ctor_wrapper _zval_copy_ctor_wrapper
  57. #define zval_ptr_dtor_wrapper _zval_ptr_dtor_wrapper
  58. #define zval_internal_dtor_wrapper _zval_internal_dtor_wrapper
  59. #define zval_internal_ptr_dtor_wrapper _zval_internal_ptr_dtor_wrapper
  60. #else
  61. #define zval_copy_ctor_wrapper _zval_copy_ctor_func
  62. #define zval_ptr_dtor_wrapper _zval_ptr_dtor
  63. #define zval_internal_dtor_wrapper _zval_internal_dtor
  64. #define zval_internal_ptr_dtor_wrapper _zval_internal_ptr_dtor
  65. #endif
  66. ZEND_API void zval_add_ref(zval **p);
  67. END_EXTERN_C()
  68. #define ZVAL_DESTRUCTOR (void (*)(void *)) zval_dtor_wrapper
  69. #define ZVAL_PTR_DTOR (void (*)(void *)) zval_ptr_dtor_wrapper
  70. #define ZVAL_INTERNAL_DTOR (void (*)(void *)) zval_internal_dtor_wrapper
  71. #define ZVAL_INTERNAL_PTR_DTOR (void (*)(void *)) zval_internal_ptr_dtor_wrapper
  72. #define ZVAL_COPY_CTOR (void (*)(void *)) zval_copy_ctor_wrapper
  73. #endif
  74. /*
  75. * Local variables:
  76. * tab-width: 4
  77. * c-basic-offset: 4
  78. * indent-tabs-mode: t
  79. * End:
  80. */