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]

Reply via email to