]> granicus.if.org Git - php/commitdiff
cleanup
authorHarald Radi <phanto@php.net>
Sun, 24 Jun 2001 21:09:17 +0000 (21:09 +0000)
committerHarald Radi <phanto@php.net>
Sun, 24 Jun 2001 21:09:17 +0000 (21:09 +0000)
added some macros

ext/com/com.h
ext/com/php_COM.h
ext/com/php_VARIANT.h
ext/com/variant.h [new file with mode: 0644]
ext/rpc/com/com_wrapper.h
ext/rpc/com/php_com.h
ext/rpc/com/php_variant.h
ext/rpc/com/variant.h [new file with mode: 0644]

index 0679cd162b7b4d03070d05e4e09d098278b49c1d..e3abae09a754da66d7cdd8f57cba27ab4b89f77e 100644 (file)
@@ -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 */
index 5a3d1a01bb2e8dc027e6648e567510e20fdf6d32..f4c0c6a07971f3232bf43953469cafa4f9c46cda 100644 (file)
@@ -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
index 0382b88a64b40c8eec4f0d7ba8259409c0504886..47acd13625bedd237df77c277649f5d5ba97ba19 100644 (file)
@@ -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 (file)
index 0000000..ec25ee4
--- /dev/null
@@ -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 */
index 0679cd162b7b4d03070d05e4e09d098278b49c1d..e3abae09a754da66d7cdd8f57cba27ab4b89f77e 100644 (file)
@@ -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 */
index 5a3d1a01bb2e8dc027e6648e567510e20fdf6d32..f4c0c6a07971f3232bf43953469cafa4f9c46cda 100644 (file)
@@ -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
index 0382b88a64b40c8eec4f0d7ba8259409c0504886..47acd13625bedd237df77c277649f5d5ba97ba19 100644 (file)
@@ -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 (file)
index 0000000..ec25ee4
--- /dev/null
@@ -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 */