From: Harald Radi Date: Sun, 24 Jun 2001 21:09:17 +0000 (+0000) Subject: cleanup X-Git-Tag: PRE_TSRM_MERGE_PATCH~357 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3949658942114d2126cd00d069fa230ba9898fd1;p=php cleanup added some macros --- diff --git a/ext/com/com.h b/ext/com/com.h index 0679cd162b..e3abae09a7 100644 --- a/ext/com/com.h +++ b/ext/com/com.h @@ -6,6 +6,9 @@ #include "oleauto.h" typedef struct comval_ { +#ifdef _DEBUG + int resourceindex; +#endif BOOL typelib; BOOL enumeration; int refcount; @@ -16,28 +19,47 @@ typedef struct comval_ { } 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 */ #endif /* COM_H */ diff --git a/ext/com/php_COM.h b/ext/com/php_COM.h index 5a3d1a01bb..f4c0c6a079 100644 --- a/ext/com/php_COM.h +++ b/ext/com/php_COM.h @@ -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; @@ -20,6 +27,10 @@ extern int php_COM_set_property_handler(zend_property_reference *property_refere 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() #define COM_module_ptr &COM_module_entry diff --git a/ext/com/php_VARIANT.h b/ext/com/php_VARIANT.h index 0382b88a64..47acd13625 100644 --- a/ext/com/php_VARIANT.h +++ b/ext/com/php_VARIANT.h @@ -3,6 +3,10 @@ #if PHP_WIN32 +#include "variant.h" + +extern int php_VARIANT_get_le_variant(); + extern PHP_MINIT_FUNCTION(VARIANT); extern PHP_MSHUTDOWN_FUNCTION(VARIANT); diff --git a/ext/com/variant.h b/ext/com/variant.h new file mode 100644 index 0000000000..ec25ee4e4b --- /dev/null +++ b/ext/com/variant.h @@ -0,0 +1,11 @@ +#ifndef VARIANT_H +#define VARIANT_H + +#if PHP_WIN32 + +#define ALLOC_VARIANT(v) (v) = (VARIANT *) emalloc(sizeof(VARIANT)) +#define IS_VARIANT php_VARIANT_get_le_variant() + +#endif /* PHP_WIN32 */ + +#endif /* VARIANT_H */ diff --git a/ext/rpc/com/com_wrapper.h b/ext/rpc/com/com_wrapper.h index 0679cd162b..e3abae09a7 100644 --- a/ext/rpc/com/com_wrapper.h +++ b/ext/rpc/com/com_wrapper.h @@ -6,6 +6,9 @@ #include "oleauto.h" typedef struct comval_ { +#ifdef _DEBUG + int resourceindex; +#endif BOOL typelib; BOOL enumeration; int refcount; @@ -16,28 +19,47 @@ typedef struct comval_ { } 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 */ #endif /* COM_H */ diff --git a/ext/rpc/com/php_com.h b/ext/rpc/com/php_com.h index 5a3d1a01bb..f4c0c6a079 100644 --- a/ext/rpc/com/php_com.h +++ b/ext/rpc/com/php_com.h @@ -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; @@ -20,6 +27,10 @@ extern int php_COM_set_property_handler(zend_property_reference *property_refere 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() #define COM_module_ptr &COM_module_entry diff --git a/ext/rpc/com/php_variant.h b/ext/rpc/com/php_variant.h index 0382b88a64..47acd13625 100644 --- a/ext/rpc/com/php_variant.h +++ b/ext/rpc/com/php_variant.h @@ -3,6 +3,10 @@ #if PHP_WIN32 +#include "variant.h" + +extern int php_VARIANT_get_le_variant(); + extern PHP_MINIT_FUNCTION(VARIANT); extern PHP_MSHUTDOWN_FUNCTION(VARIANT); diff --git a/ext/rpc/com/variant.h b/ext/rpc/com/variant.h new file mode 100644 index 0000000000..ec25ee4e4b --- /dev/null +++ b/ext/rpc/com/variant.h @@ -0,0 +1,11 @@ +#ifndef VARIANT_H +#define VARIANT_H + +#if PHP_WIN32 + +#define ALLOC_VARIANT(v) (v) = (VARIANT *) emalloc(sizeof(VARIANT)) +#define IS_VARIANT php_VARIANT_get_le_variant() + +#endif /* PHP_WIN32 */ + +#endif /* VARIANT_H */