diff options
author | Rob Richards <rrichards@php.net> | 2003-06-05 17:06:52 +0000 |
---|---|---|
committer | Rob Richards <rrichards@php.net> | 2003-06-05 17:06:52 +0000 |
commit | 1b046ed40e63315c11c4e44254efdee4b7b95563 (patch) | |
tree | fe91b48932c170f02742a4e130d21468c2bf1199 /ext/dom/xml_common.h | |
parent | bf0e2751bb62a97a0dd1a1edddcaca03f5949753 (diff) | |
download | php-git-1b046ed40e63315c11c4e44254efdee4b7b95563.tar.gz |
Inital cut of new dom extension
PHP5 only
Diffstat (limited to 'ext/dom/xml_common.h')
-rw-r--r-- | ext/dom/xml_common.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/ext/dom/xml_common.h b/ext/dom/xml_common.h new file mode 100644 index 0000000000..e3b7b18688 --- /dev/null +++ b/ext/dom/xml_common.h @@ -0,0 +1,82 @@ +#ifndef PHP_XML_COMMON_H +#define PHP_XML_COMMON_H + +typedef struct _node_list_pointer { + xmlNodePtr nodep; + void *next; +} node_list_pointer; + +typedef struct _dom_object { + zend_object std; + void *ptr; + HashTable *prop_handler; + node_list_pointer *node_list; +} dom_object; + +#ifdef PHP_WIN32 +#ifdef PHPAPI +#undef PHPAPI +#endif +#ifdef DOM_EXPORTS +#define PHPAPI __declspec(dllexport) +#else +#define PHPAPI __declspec(dllimport) +#endif /* DOM_EXPORTS */ +#endif /* PHP_WIN32 */ + +#ifdef ZTS +#include "TSRM.h" +#endif + +#define PHP_DOM_EXPORT(__type) PHPAPI __type + +PHP_DOM_EXPORT(zval *) php_dom_create_object(xmlNodePtr obj, int *found, zval* in, zval* return_value TSRMLS_DC); +PHP_DOM_EXPORT(void) dom_objects_clone(void *object, void **object_clone TSRMLS_DC); +void dom_objects_dtor(void *object, zend_object_handle handle TSRMLS_DC); +PHP_DOM_EXPORT(zval *) dom_read_property(zval *object, zval *member TSRMLS_DC); +PHP_DOM_EXPORT(void) dom_write_property(zval *object, zval *member, zval *value TSRMLS_DC); +zend_object_value dom_objects_new(zend_class_entry *class_type TSRMLS_DC); +void dom_unregister_node(xmlNodePtr nodep TSRMLS_DC); +zend_object_handlers dom_object_handlers; + +#define DOM_XMLNS_NAMESPACE \ + (const xmlChar *) "http://www.w3.org/2000/xmlns/" + +#define DOM_NOT_IMPLEMENTED() \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not yet implemented"); \ + return; + +#define REGISTER_DOM_CLASS(ce, name, parent_ce, funcs, entry) \ +INIT_CLASS_ENTRY(ce, name, funcs); \ +ce.create_object = dom_objects_new; \ +entry = zend_register_internal_class_ex(&ce, parent_ce, NULL TSRMLS_CC); +/* entry = zend_register_internal_ns_class(&ce, parent_ce, ns, NULL TSRMLS_CC); */ + +#define DOM_GET_OBJ(__ptr, __id, __prtype) { \ + dom_object *intern = (dom_object *)zend_object_store_get_object(__id TSRMLS_CC); \ + if (!(__ptr = (__prtype)intern->ptr)) { \ + php_error(E_WARNING, "Couldn't fetch %s", intern->std.ce->name);\ + RETURN_NULL();\ + } \ +} + +#define DOM_DOMOBJ_NEW(zval, obj, ret) \ + if (NULL == (zval = php_dom_create_object(obj, ret, zval, return_value TSRMLS_CC))) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object"); \ + RETURN_FALSE; \ + } + +#define DOM_RET_OBJ(zval, obj, ret) \ + DOM_DOMOBJ_NEW(zval, obj, ret); + +#define DOM_GET_THIS(zval) \ + if (NULL == (zval = getThis())) { \ + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Underlying object missing"); \ + RETURN_FALSE; \ + } + +#define DOM_GET_THIS_OBJ(__ptr, __id, __prtype) \ + DOM_GET_THIS(__id); \ + DOM_GET_OBJ(__ptr, __id, __prtype); + +#endif |