2 +----------------------------------------------------------------------+
4 +----------------------------------------------------------------------+
5 | This source file is subject to version 3.0 of the PHP license, that |
6 | is bundled with this package in the file LICENSE, and is available |
7 | through the world-wide-web at http://www.php.net/license/3_0.txt. |
8 | If you did not receive a copy of the PHP license and are unable to |
9 | obtain it through the world-wide-web, please send a note to |
10 | license@php.net so we can mail you a copy immediately. |
11 +----------------------------------------------------------------------+
12 | Copyright (c) 2004-2005 Michael Wallner <mike@php.net> |
13 +----------------------------------------------------------------------+
21 #if (PHP_MAJOR_VERSION == 5) && (PHP_MINOR_VERSION == 0)
22 int zend_declare_property_double(zend_class_entry
*ce
, char *name
, int name_length
, double value
, int access_type TSRMLS_DC
)
26 if (ce
->type
& ZEND_INTERNAL_CLASS
) {
27 property
= malloc(sizeof(zval
));
32 ZVAL_DOUBLE(property
, value
);
33 return zend_declare_property(ce
, name
, name_length
, property
, access_type TSRMLS_CC
);
36 void zend_update_property_double(zend_class_entry
*scope
, zval
*object
, char *name
, int name_length
, double value TSRMLS_DC
)
43 ZVAL_DOUBLE(tmp
, value
);
44 zend_update_property(scope
, object
, name
, name_length
, tmp TSRMLS_CC
);
47 int zend_declare_property_bool(zend_class_entry
*ce
, char *name
, int name_length
, long value
, int access_type TSRMLS_DC
)
51 if (ce
->type
& ZEND_INTERNAL_CLASS
) {
52 property
= malloc(sizeof(zval
));
57 ZVAL_BOOL(property
, value
);
58 return zend_declare_property(ce
, name
, name_length
, property
, access_type TSRMLS_CC
);
61 void zend_update_property_bool(zend_class_entry
*scope
, zval
*object
, char *name
, int name_length
, long value TSRMLS_DC
)
68 ZVAL_BOOL(tmp
, value
);
69 zend_update_property(scope
, object
, name
, name_length
, tmp TSRMLS_CC
);
74 static inline zval
*new_class_constant_zval(zend_class_entry
*ce
)
77 if (ce
->type
& ZEND_INTERNAL_CLASS
) {
78 z
= malloc(sizeof(zval
));
86 int zend_declare_class_constant(zend_class_entry
*ce
, char *name
, size_t name_length
, zval
*value TSRMLS_DC
)
88 return zend_hash_add(&ce
->constants_table
, name
, name_length
, &value
, sizeof(zval
*), NULL
);
91 int zend_declare_class_constant_long(zend_class_entry
*ce
, char *name
, size_t name_length
, long value TSRMLS_DC
)
93 zval
*constant
= new_class_constant_zval(ce
);
94 ZVAL_LONG(constant
, value
);
95 return zend_declare_class_constant(ce
, name
, name_length
, constant TSRMLS_CC
);
98 int zend_declare_class_constant_bool(zend_class_entry
*ce
, char *name
, size_t name_length
, zend_bool value TSRMLS_DC
)
100 zval
*constant
= new_class_constant_zval(ce
);
101 ZVAL_BOOL(constant
, value
);
102 return zend_declare_class_constant(ce
, name
, name_length
, constant TSRMLS_CC
);
105 int zend_declare_class_constant_double(zend_class_entry
*ce
, char *name
, size_t name_length
, double value TSRMLS_DC
)
107 zval
*constant
= new_class_constant_zval(ce
);
108 ZVAL_DOUBLE(constant
, value
);
109 return zend_declare_class_constant(ce
, name
, name_length
, constant TSRMLS_CC
);
112 int zend_declare_class_constant_string(zend_class_entry
*ce
, char *name
, size_t name_length
, char *value TSRMLS_DC
)
114 return zend_declare_class_constant_stringl(ce
, name
, name_length
, value
, strlen(value
) TSRMLS_CC
);
117 int zend_declare_class_constant_stringl(zend_class_entry
*ce
, char *name
, size_t name_length
, char *value
, size_t value_length TSRMLS_DC
)
119 zval
*constant
= new_class_constant_zval(ce
);
120 Z_TYPE_P(constant
) = IS_STRING
;
121 Z_STRLEN_P(constant
) = value_length
;
122 Z_STRVAL_P(constant
) = malloc(value_length
+ 1);
123 memcpy(Z_STRVAL_P(constant
), value
, value_length
);
124 Z_STRVAL_P(constant
)[value_length
] = '\0';
125 return zend_declare_class_constant(ce
, name
, name_length
, constant TSRMLS_CC
);
134 * vim600: noet sw=4 ts=4 fdm=marker
135 * vim<600: noet sw=4 ts=4