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;
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]