cvs: pear /PEAR pear.c php_pear.h

From: Date: Wed, 14 Mar 2001 01:04:45 +0000
Subject: cvs: pear /PEAR pear.c php_pear.h
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-4563@lists.php.net to get a copy of this message
ssb Tue Mar 13 17:04:45 2001 EDT Modified files: /pear/PEAR pear.c php_pear.h Log: * implemented PEAR::isError() Index: pear/PEAR/pear.c diff -u pear/PEAR/pear.c:1.1 pear/PEAR/pear.c:1.2 --- pear/PEAR/pear.c:1.1 Mon Mar 12 02:12:57 2001 +++ pear/PEAR/pear.c Tue Mar 13 17:04:45 2001 @@ -21,6 +21,7 @@ #include "php_ini.h" #include "php_pear.h" #include "config.h" +#include "build-defs.h" ZEND_DECLARE_MODULE_GLOBALS(pear) @@ -33,8 +34,8 @@ static zend_function_entry php_class_functions_pear[] = { PHP_FALIAS(pear, pear_constructor, NULL) PHP_FALIAS(_pear, pear_destructor, NULL) -#if 0 PHP_FALIAS(iserror, pear_isError, first_arg_force_ref) +#if 0 PHP_FALIAS(seterrorhandling, pear_setErrorHandling, NULL) PHP_FALIAS(raiseerror, pear_raiseError, NULL) #endif @@ -82,6 +83,7 @@ PHP_MINIT_FUNCTION(pear) { zend_class_entry pear, pear_error; + zval *tmp; /* REGISTER_INI_ENTRIES();*/ pear.name = strdup("pear"); @@ -91,7 +93,11 @@ pear.handle_property_get = NULL; pear.handle_property_set = NULL; pear_ptr = zend_register_internal_class(&pear); - + LONG_PROPERTY(pear_ptr, tmp, "_debug", 0); + NULL_PROPERTY(pear_ptr, tmp, "_default_error_mode"); + NULL_PROPERTY(pear_ptr, tmp, "_default_error_options"); + NULL_PROPERTY(pear_ptr, tmp, "_default_error_handler"); + pear_error.name = strdup("pear_error"); pear_error.name_length = 10; pear_error.builtin_functions = php_class_functions_pear_error; @@ -99,6 +105,21 @@ pear_error.handle_property_get = NULL; pear_error.handle_property_set = NULL; pear_error_ptr = zend_register_internal_class(&pear_error); + LONG_PROPERTY(pear_error_ptr, tmp, "code", -1); + NULL_PROPERTY(pear_error_ptr, tmp, "n2345678901234567"); + NULL_PROPERTY(pear_error_ptr, tmp, "error_message_prefix"); + NULL_PROPERTY(pear_error_ptr, tmp, "error_prepend"); + NULL_PROPERTY(pear_error_ptr, tmp, "error_append"); + LONG_PROPERTY(pear_error_ptr, tmp, "mode", PEAR_ERROR_RETURN); + LONG_PROPERTY(pear_error_ptr, tmp, "level", E_USER_NOTICE); + NULL_PROPERTY(pear_error_ptr, tmp, "debuginfo"); + + LONG_CONSTANT("PEAR_ERROR_RETURN", PEAR_ERROR_RETURN); + LONG_CONSTANT("PEAR_ERROR_PRINT", PEAR_ERROR_PRINT); + LONG_CONSTANT("PEAR_ERROR_TRIGGER", PEAR_ERROR_TRIGGER); + LONG_CONSTANT("PEAR_ERROR_DIE", PEAR_ERROR_DIE); + LONG_CONSTANT("PEAR_ERROR_CALLBACK", PEAR_ERROR_CALLBACK); + STRING_CONSTANT("PEAR_EXTENSION_DIR", PHP_EXTENSION_DIR); return SUCCESS; } @@ -115,7 +136,7 @@ _destructor_objects_dtor(void *data) { zval *object = (zval *)data; - object->refcount--; + ZVAL_DELREF(object); } /* Remove if there's nothing to do at request start */ @@ -176,7 +197,7 @@ PHP_MINFO_FUNCTION(pear) { php_info_print_table_start(); - php_info_print_table_header(2, "PEAR", " $Revision: 1.1 $"); + php_info_print_table_header(2, "PEAR", " $Revision: 1.2 $"); php_info_print_table_end(); /* DISPLAY_INI_ENTRIES(); */ @@ -201,7 +222,7 @@ dtorfunc[len - 1] = '\0'; if (zend_hash_exists(&this->value.obj.ce->function_table, dtorfunc, len)) { zend_llist_add_element(&PEARG(destructor_objects), this); - this->refcount++; + ZVAL_ADDREF(this); /*php_printf("registered object on destructor list\n");*/ } efree(dtorfunc); @@ -214,6 +235,26 @@ } +PHP_FUNCTION(pear_isError) +{ + zval **obj; + zend_class_entry *ce = NULL; + + if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &obj) == FAILURE) { + ZEND_WRONG_PARAM_COUNT(); + } + if ((*obj)->type != IS_OBJECT) { + RETURN_FALSE; + } + ce = (*obj)->value.obj.ce; + do { + if (strcmp(ce->name, pear_error_ptr->name) == 0) { + RETURN_TRUE; + } + ce = ce->parent; + } while (ce != NULL); + RETURN_FALSE; +} /* Index: pear/PEAR/php_pear.h diff -u pear/PEAR/php_pear.h:1.1 pear/PEAR/php_pear.h:1.2 --- pear/PEAR/php_pear.h:1.1 Mon Mar 12 02:12:57 2001 +++ pear/PEAR/php_pear.h Tue Mar 13 17:04:45 2001 @@ -29,6 +29,59 @@ #define PHP_PEAR_API #endif +#define PEAR_ERROR_RETURN 1 +#define PEAR_ERROR_PRINT 2 +#define PEAR_ERROR_TRIGGER 4 +#define PEAR_ERROR_DIE 8 +#define PEAR_ERROR_CALLBACK 16 + +#define LONG_CONSTANT(n,v) \ + REGISTER_LONG_CONSTANT((n),(v),CONST_CS|CONST_PERSISTENT) + +#define STRING_CONSTANT(n,v) \ + REGISTER_STRING_CONSTANT((n),(v),CONST_CS|CONST_PERSISTENT) + +#define MINIT_ZVAL(z) \ + z = emalloc(sizeof(zval)); \ + INIT_PZVAL(z); \ + persist_alloc(z) + +#define LONG_PROPERTY(ptr,tmp,p,l) \ + MINIT_ZVAL(tmp); \ + ZVAL_LONG(tmp, 0); \ + zend_hash_add(&(ptr)->default_properties, (p), sizeof(p), &tmp, sizeof(zval*), NULL) + +#define NULL_PROPERTY(ptr,tmp,p) \ + MINIT_ZVAL(tmp); \ + ZVAL_NULL(tmp); \ + zend_hash_add(&(ptr)->default_properties, (p), sizeof(p), &tmp, sizeof(zval*), NULL) + +#define STRING_PROPERTY(ptr,tmp,p,s,dup) \ + MINIT_ZVAL(tmp); \ + ZVAL_STRING(tmp,(s),(dup)); \ + zend_hash_add(&(ptr)->default_properties, (p), sizeof(p), &tmp, sizeof(zval*), NULL) + +#define STRINGL_PROPERTY(ptr,tmp,p,s,l,dup) \ + MAKE_STD_ZVAL(tmp); \ + persist_alloc(tmp); \ + ZVAL_STRINGL(tmp,(s),(l),(dup)); \ + zend_hash_add(&(ptr)->default_properties, (p), sizeof(p), &tmp, sizeof(zval*), NULL) + +#define EMPTY_STRING_PROPERTY(ptr,tmp,p) \ + MINIT_ZVAL(tmp); \ + ZVAL_EMPTY_STRING(tmp); \ + zend_hash_add(&(ptr)->default_properties, (p), sizeof(p), &tmp, sizeof(zval*), NULL) + +#define DOUBLE_PROPERTY(ptr,tmp,p,d) \ + MINIT_ZVAL(tmp); \ + ZVAL_DOUBLE(tmp,(d)); \ + zend_hash_add(&(ptr)->default_properties, (p), sizeof(p), &tmp, sizeof(zval*), NULL) + +#define RESOURCE_PROPERTY(ptr,tmp,p,r) \ + MINIT_ZVAL(tmp); \ + ZVAL_RESOURCE(tmp,(r)); \ + zend_hash_add(&(ptr)->default_properties, (p), sizeof(p), &tmp, sizeof(zval*), NULL) + PHP_MINIT_FUNCTION(pear); PHP_MSHUTDOWN_FUNCTION(pear); PHP_RINIT_FUNCTION(pear); @@ -37,6 +90,7 @@ PHP_FUNCTION(pear_constructor); PHP_FUNCTION(pear_destructor); +PHP_FUNCTION(pear_isError); ZEND_BEGIN_MODULE_GLOBALS(pear) zend_llist destructor_objects;

« previous php.cvs (#4563) next »