summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarald Radi <phanto@php.net>2001-06-24 21:09:17 +0000
committerHarald Radi <phanto@php.net>2001-06-24 21:09:17 +0000
commit3949658942114d2126cd00d069fa230ba9898fd1 (patch)
tree470652d12d29adbed5b1955d7e13753d512c4d9f
parent5943e68e03bc5535dde28b8cbccf798f24386dc4 (diff)
downloadphp-git-3949658942114d2126cd00d069fa230ba9898fd1.tar.gz
cleanup
added some macros
-rw-r--r--ext/com/com.h46
-rw-r--r--ext/com/php_COM.h17
-rw-r--r--ext/com/php_VARIANT.h4
-rw-r--r--ext/com/variant.h11
-rw-r--r--ext/rpc/com/com_wrapper.h46
-rw-r--r--ext/rpc/com/php_com.h17
-rw-r--r--ext/rpc/com/php_variant.h4
-rw-r--r--ext/rpc/com/variant.h11
8 files changed, 126 insertions, 30 deletions
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 */