diff options
| author | Hartmut Holzgraefe <hholzgra@php.net> | 2005-02-04 20:24:21 +0000 |
|---|---|---|
| committer | Hartmut Holzgraefe <hholzgra@php.net> | 2005-02-04 20:24:21 +0000 |
| commit | d88c2b18d420800a04a98c594dfa71b4e1e687b4 (patch) | |
| tree | 886a96649277317c2a7a35d804cc38dfb000a4a1 /Zend | |
| parent | 625b79c3baf75172f8c4999f00bfce664ce5739a (diff) | |
| download | php-git-d88c2b18d420800a04a98c594dfa71b4e1e687b4.tar.gz | |
added some missing zend_[declare|update]_property_...() convenience
functions for bool, double and binary safe string data
Diffstat (limited to 'Zend')
| -rw-r--r-- | Zend/zend_API.c | 76 | ||||
| -rw-r--r-- | Zend/zend_API.h | 6 |
2 files changed, 82 insertions, 0 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index f59261cf43..2fca49980e 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -1970,6 +1970,20 @@ ZEND_API int zend_declare_property_null(zend_class_entry *ce, char *name, int na return zend_declare_property(ce, name, name_length, property, access_type TSRMLS_CC); } +ZEND_API int zend_declare_property_bool(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC) +{ + zval *property; + + if (ce->type & ZEND_INTERNAL_CLASS) { + property = malloc(sizeof(zval)); + } else { + ALLOC_ZVAL(property); + } + INIT_PZVAL(property); + ZVAL_BOOL(property, value); + return zend_declare_property(ce, name, name_length, property, access_type TSRMLS_CC); +} + ZEND_API int zend_declare_property_long(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC) { zval *property; @@ -1984,6 +1998,20 @@ ZEND_API int zend_declare_property_long(zend_class_entry *ce, char *name, int na return zend_declare_property(ce, name, name_length, property, access_type TSRMLS_CC); } +ZEND_API int zend_declare_property_double(zend_class_entry *ce, char *name, int name_length, double value, int access_type TSRMLS_DC) +{ + zval *property; + + if (ce->type & ZEND_INTERNAL_CLASS) { + property = malloc(sizeof(zval)); + } else { + ALLOC_ZVAL(property); + } + INIT_PZVAL(property); + ZVAL_DOUBLE(property, value); + return zend_declare_property(ce, name, name_length, property, access_type TSRMLS_CC); +} + ZEND_API int zend_declare_property_string(zend_class_entry *ce, char *name, int name_length, char *value, int access_type TSRMLS_DC) { zval *property; @@ -2000,6 +2028,21 @@ ZEND_API int zend_declare_property_string(zend_class_entry *ce, char *name, int return zend_declare_property(ce, name, name_length, property, access_type TSRMLS_CC); } +ZEND_API int zend_declare_property_stringl(zend_class_entry *ce, char *name, int name_length, char *value, int value_len, int access_type TSRMLS_DC) +{ + zval *property; + + if (ce->type & ZEND_INTERNAL_CLASS) { + property = malloc(sizeof(zval)); + ZVAL_STRINGL(property, zend_strndup(value, value_len), value_len, 0); + } else { + ALLOC_ZVAL(property); + ZVAL_STRINGL(property, value, value_len, 1); + } + INIT_PZVAL(property); + return zend_declare_property(ce, name, name_length, property, access_type TSRMLS_CC); +} + ZEND_API void zend_update_property(zend_class_entry *scope, zval *object, char *name, int name_length, zval *value TSRMLS_DC) { zval property; @@ -2027,6 +2070,17 @@ ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, c zend_update_property(scope, object, name, name_length, tmp TSRMLS_CC); } +ZEND_API void zend_update_property_bool(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC) +{ + zval *tmp; + + ALLOC_ZVAL(tmp); + tmp->is_ref = 0; + tmp->refcount = 0; + ZVAL_BOOL(tmp, value); + zend_update_property(scope, object, name, name_length, tmp TSRMLS_CC); +} + ZEND_API void zend_update_property_long(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC) { zval *tmp; @@ -2038,6 +2092,17 @@ ZEND_API void zend_update_property_long(zend_class_entry *scope, zval *object, c zend_update_property(scope, object, name, name_length, tmp TSRMLS_CC); } +ZEND_API void zend_update_property_double(zend_class_entry *scope, zval *object, char *name, int name_length, double value TSRMLS_DC) +{ + zval *tmp; + + ALLOC_ZVAL(tmp); + tmp->is_ref = 0; + tmp->refcount = 0; + ZVAL_LONG(tmp, value); + zend_update_property(scope, object, name, name_length, tmp TSRMLS_CC); +} + ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, char *name, int name_length, char *value TSRMLS_DC) { zval *tmp; @@ -2049,6 +2114,17 @@ ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, zend_update_property(scope, object, name, name_length, tmp TSRMLS_CC); } +ZEND_API void zend_update_property_stringl(zend_class_entry *scope, zval *object, char *name, int name_length, char *value, int value_len TSRMLS_DC) +{ + zval *tmp; + + ALLOC_ZVAL(tmp); + tmp->is_ref = 0; + tmp->refcount = 0; + ZVAL_STRINGL(tmp, value, value_len, 1); + zend_update_property(scope, object, name, name_length, tmp TSRMLS_CC); +} + ZEND_API zval *zend_read_property(zend_class_entry *scope, zval *object, char *name, int name_length, zend_bool silent TSRMLS_DC) { zval property, *value; diff --git a/Zend/zend_API.h b/Zend/zend_API.h index 9d4a1ebf03..60ed450424 100644 --- a/Zend/zend_API.h +++ b/Zend/zend_API.h @@ -188,14 +188,20 @@ ZEND_API char *zend_get_module_version(char *module_name); ZEND_API int zend_get_module_started(char *module_name); ZEND_API int zend_declare_property(zend_class_entry *ce, char *name, int name_length, zval *property, int access_type TSRMLS_DC); ZEND_API int zend_declare_property_null(zend_class_entry *ce, char *name, int name_length, int access_type TSRMLS_DC); +ZEND_API int zend_declare_property_bool(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC); ZEND_API int zend_declare_property_long(zend_class_entry *ce, char *name, int name_length, long value, int access_type TSRMLS_DC); +ZEND_API int zend_declare_property_double(zend_class_entry *ce, char *name, int name_length, double value, int access_type TSRMLS_DC); ZEND_API int zend_declare_property_string(zend_class_entry *ce, char *name, int name_length, char *value, int access_type TSRMLS_DC); +ZEND_API int zend_declare_property_stringl(zend_class_entry *ce, char *name, int name_length, char *value, int value_len, int access_type TSRMLS_DC); ZEND_API void zend_update_class_constants(zend_class_entry *class_type TSRMLS_DC); ZEND_API void zend_update_property(zend_class_entry *scope, zval *object, char *name, int name_length, zval *value TSRMLS_DC); ZEND_API void zend_update_property_null(zend_class_entry *scope, zval *object, char *name, int name_length TSRMLS_DC); +ZEND_API void zend_update_property_bool(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC); ZEND_API void zend_update_property_long(zend_class_entry *scope, zval *object, char *name, int name_length, long value TSRMLS_DC); +ZEND_API void zend_update_property_double(zend_class_entry *scope, zval *object, char *name, int name_length, double value TSRMLS_DC); ZEND_API void zend_update_property_string(zend_class_entry *scope, zval *object, char *name, int name_length, char *value TSRMLS_DC); +ZEND_API void zend_update_property_stringl(zend_class_entry *scope, zval *object, char *name, int name_length, char *value, int value_length TSRMLS_DC); ZEND_API zval *zend_read_property(zend_class_entry *scope, zval *object, char *name, int name_length, zend_bool silent TSRMLS_DC); |
