typedef struct _zval_struct zval;
typedef struct _zend_class_entry zend_class_entry;
+typedef struct _zend_object {
+ zend_class_entry *ce;
+ HashTable *properties;
+} zend_object;
+
typedef union _zvalue_value {
long lval; /* long value */
double dval; /* double value */
int len;
} str;
HashTable *ht; /* hash table value */
- struct {
- zend_class_entry *ce;
- HashTable *properties;
- } obj;
+ zend_object obj;
} zvalue_value;
#define Z_STRVAL(zval) (zval).value.str.val
#define Z_STRLEN(zval) (zval).value.str.len
#define Z_ARRVAL(zval) (zval).value.ht
+#define Z_OBJ(zval) &(zval).value.obj
#define Z_OBJPROP(zval) (zval).value.obj.properties
#define Z_OBJCE(zval) (zval).value.obj.ce
#define Z_RESVAL(zval) (zval).value.lval
#define Z_STRVAL_P(zval_p) Z_STRVAL(*zval_p)
#define Z_STRLEN_P(zval_p) Z_STRLEN(*zval_p)
#define Z_ARRVAL_P(zval_p) Z_ARRVAL(*zval_p)
+#define Z_OBJ_P(zval_p) Z_OBJ(*zval_p)
#define Z_OBJPROP_P(zval_p) Z_OBJPROP(*zval_p)
#define Z_OBJCE_P(zval_p) Z_OBJCE(*zval_p)
#define Z_RESVAL_P(zval_p) Z_RESVAL(*zval_p)
#define Z_STRVAL_PP(zval_pp) Z_STRVAL(**zval_pp)
#define Z_STRLEN_PP(zval_pp) Z_STRLEN(**zval_pp)
#define Z_ARRVAL_PP(zval_pp) Z_ARRVAL(**zval_pp)
+#define Z_OBJ_PP(zval_pp) Z_OBJ(**zval_pp)
#define Z_OBJPROP_PP(zval_pp) Z_OBJPROP(**zval_pp)
#define Z_OBJCE_PP(zval_pp) Z_OBJCE(**zval_pp)
#define Z_RESVAL_PP(zval_pp) Z_RESVAL(**zval_pp)