cvs: php4 /ext/com com.h php_COM.h
| From: | Harald Radi | Date: | Sun, 24 Jun 2001 21:09:16 +0000 |
| Subject: | cvs: php4 /ext/com com.h php_COM.h | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-6003@lists.php.net to get a copy of this message | ||
phanto Sun Jun 24 23:09:16 2001 EDT
Modified files:
/php4/ext/com php_COM.h com.h
Log:
cleanup
added some macros
Index: php4/ext/com/php_COM.h
diff -u php4/ext/com/php_COM.h:1.6 php4/ext/com/php_COM.h:1.7
--- php4/ext/com/php_COM.h:1.6 Wed May 2 23:51:18 2001
+++ php4/ext/com/php_COM.h Sun Jun 24 23:09:16 2001
@@ -3,14 +3,21 @@
#if PHP_WIN32
-BEGIN_EXTERN_C()
-
#include "com.h"
+BEGIN_EXTERN_C()
+
extern PHP_MINIT_FUNCTION(COM);
extern PHP_MSHUTDOWN_FUNCTION(COM);
-extern int php_COM_get_le_idispatch();
+extern PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR*
pDispParams, VARIANT FAR* pVarResult);
+extern PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID
FAR* rgDispId);
+extern PHPAPI HRESULT php_COM_release(comval *obj);
+extern PHPAPI HRESULT php_COM_addref(comval *obj);
+extern PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* pDisp, int cleanup);
+extern PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup);
+
+extern int php_COM_get_le_comval();
extern zend_module_entry COM_module_entry;
extern zend_class_entry com_class_entry;
@@ -19,6 +26,10 @@
extern int php_COM_set_property_handler(zend_property_reference *property_reference, pval *value);
extern char *php_COM_error_message(HRESULT hr);
extern void php_COM_call_function_handler(INTERNAL_FUNCTION_PARAMETERS, zend_property_reference
*property_reference);
+
+#ifdef DEBUG
+ extern int resourcecounter;
+#endif
END_EXTERN_C()
Index: php4/ext/com/com.h
diff -u php4/ext/com/com.h:1.5 php4/ext/com/com.h:1.6
--- php4/ext/com/com.h:1.5 Tue Jun 12 01:05:31 2001
+++ php4/ext/com/com.h Sun Jun 24 23:09:16 2001
@@ -6,6 +6,9 @@
#include "oleauto.h"
typedef struct comval_ {
+#ifdef _DEBUG
+ int resourceindex;
+#endif
BOOL typelib;
BOOL enumeration;
int refcount;
@@ -16,27 +19,46 @@
} i;
} comval;
-PHPAPI HRESULT php_COM_invoke(comval *obj, DISPID dispIdMember, WORD wFlags, DISPPARAMS FAR*
pDispParams, VARIANT FAR* pVarResult);
-PHPAPI HRESULT php_COM_get_ids_of_names(comval *obj, OLECHAR FAR* FAR* rgszNames, DISPID FAR*
rgDispId);
-PHPAPI HRESULT php_COM_release(comval *obj);
-PHPAPI HRESULT php_COM_addref(comval *obj);
-PHPAPI HRESULT php_COM_set(comval *obj, IDispatch FAR* pDisp, int cleanup);
-PHPAPI HRESULT php_COM_clone(comval *obj, comval *clone, int cleanup);
+#define ZVAL_COM(z,o) { \
+ pval *handle; \
+ \
+ Z_TYPE_P(z) = IS_OBJECT; \
+ (z)->value.obj.ce = &com_class_entry; \
+ \
+ ALLOC_HASHTABLE((z)->value.obj.properties); \
+ zend_hash_init((z)->value.obj.properties, 0, NULL, ZVAL_PTR_DTOR, 0); \
+ \
+ ALLOC_ZVAL(handle); \
+ INIT_PZVAL(handle); \
+ ZVAL_LONG(handle, zend_list_insert((o), IS_COM)); \
+ \
+ pval_copy_constructor(handle); \
+ zend_hash_index_update((z)->value.obj.properties, 0, \
+ &handle, sizeof(pval *), NULL); \
+ }
+
+#define RETVAL_COM(o) ZVAL_COM(&return_value, o)
+#define RETURN_COM(o) RETVAL_COM(o) \
+ return;
+
+#define ALLOC_COM(z) (z) = emalloc(sizeof(comval))
+#define IS_COM php_COM_get_le_comval()
#define C_HASTLIB(x) ((x)->typelib)
#define C_HASENUM(x) ((x)->enumeration)
-#define C_ISREFD(x) ((x)->refcount)
+#define C_REFCOUNT(x) ((x)->refcount)
+#define C_ISREFD(x) C_REFCOUNT(x)
+
+#define C_ADDREF(x) (++((x)->refcount))
+#define C_RELEASE(x) (--((x)->refcount))
-#define C_DISPATCH(x) ((x)->i.dispatch)
-#define C_TYPEINFO(x) ((x)->i.typeinfo)
+#define C_DISPATCH(x) ((x)->i.dispatch)
+#define C_TYPEINFO(x) ((x)->i.typeinfo)
#define C_ENUMVARIANT(x) ((x)->i.enumvariant)
#define C_DISPATCH_VT(x) (C_DISPATCH(x)->lpVtbl)
#define C_TYPEINFO_VT(x) (C_TYPEINFO(x)->lpVtbl)
#define C_ENUMVARIANT_VT(x) (C_ENUMVARIANT(x)->lpVtbl)
-
-#define C_ADDREF(x) (++((x)->refcount))
-#define C_RELEASE(x) (--((x)->refcount))
#endif /* PHP_WIN32 */