]> granicus.if.org Git - php/commitdiff
added some missing zend_[declare|update]_property_...() convenience
authorHartmut Holzgraefe <hholzgra@php.net>
Fri, 4 Feb 2005 20:24:21 +0000 (20:24 +0000)
committerHartmut Holzgraefe <hholzgra@php.net>
Fri, 4 Feb 2005 20:24:21 +0000 (20:24 +0000)
functions for bool, double and binary safe string data

NEWS
Zend/zend_API.c
Zend/zend_API.h

diff --git a/NEWS b/NEWS
index 3478eacc4dcc2ca0521008b47e4167cdaaf01227..a203bb99b46611b6f4481ac1c269ea5f3e9a5100 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
 PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2004, PHP 5.1.0
+- Added zend_declare_property_...() and zend_update_property_...()
+  API functions for bool, double and binary safe strings. (Hartmut)
 - Moved extensions to PECL:
   . ext/dio    (Jani, Derick)
   . ext/yp     (Jani, Derick)
index f59261cf435a4dafb834de0571f68cf105bcead9..2fca49980e6a0642a1d3797d1120b2b746ec768f 100644 (file)
@@ -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;
index 9d4a1ebf03b542c31716b805954bc3d3ecee7026..60ed45042457630400e898f1a2fbe306e1edc8c4 100644 (file)
@@ -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);