Annotation of embedaddon/php/ext/dom/php_dom.h, revision 1.1.1.2
1.1 misho 1: /*
2: +----------------------------------------------------------------------+
3: | PHP Version 5 |
4: +----------------------------------------------------------------------+
5: | Copyright (c) 1997-2012 The PHP Group |
6: +----------------------------------------------------------------------+
7: | This source file is subject to version 3.01 of the PHP license, |
8: | that is bundled with this package in the file LICENSE, and is |
9: | available through the world-wide-web at the following url: |
10: | http://www.php.net/license/3_01.txt |
11: | If you did not receive a copy of the PHP license and are unable to |
12: | obtain it through the world-wide-web, please send a note to |
13: | license@php.net so we can mail you a copy immediately. |
14: +----------------------------------------------------------------------+
15: | Authors: Christian Stocker <chregu@php.net> |
16: | Rob Richards <rrichards@php.net> |
17: | Marcus Borger <helly@php.net> |
18: +----------------------------------------------------------------------+
19: */
20:
1.1.1.2 ! misho 21: /* $Id$ */
1.1 misho 22:
23: #ifndef PHP_DOM_H
24: #define PHP_DOM_H
25:
26: extern zend_module_entry dom_module_entry;
27: #define phpext_dom_ptr &dom_module_entry
28:
29: #ifdef ZTS
30: #include "TSRM.h"
31: #endif
32:
33: #include <libxml/parser.h>
34: #include <libxml/parserInternals.h>
35: #include <libxml/tree.h>
36: #include <libxml/uri.h>
37: #include <libxml/xmlerror.h>
38: #include <libxml/xinclude.h>
39: #include <libxml/hash.h>
40: #include <libxml/c14n.h>
41: #if defined(LIBXML_HTML_ENABLED)
42: #include <libxml/HTMLparser.h>
43: #include <libxml/HTMLtree.h>
44: #endif
45: #if defined(LIBXML_XPATH_ENABLED)
46: #include <libxml/xpath.h>
47: #include <libxml/xpathInternals.h>
48: #endif
49: #if defined(LIBXML_XPTR_ENABLED)
50: #include <libxml/xpointer.h>
51: #endif
52: #ifdef PHP_WIN32
53: #ifndef DOM_EXPORTS
54: #define DOM_EXPORTS
55: #endif
56: #endif
57:
58: #include "xml_common.h"
59: #include "ext/libxml/php_libxml.h"
60: #include "zend_exceptions.h"
61: #include "dom_ce.h"
62: /* DOM API_VERSION, please bump it up, if you change anything in the API
63: therefore it's easier for the script-programmers to check, what's working how
64: Can be checked with phpversion("dom");
65: */
66: #define DOM_API_VERSION "20031129"
67: /* Define a custom type for iterating using an unused nodetype */
68: #define DOM_NODESET XML_XINCLUDE_START
69:
70: typedef struct _dom_xpath_object {
71: zend_object std;
72: void *ptr;
73: php_libxml_ref_obj *document;
74: HashTable *prop_handler;
75: zend_object_handle handle;
76: int registerPhpFunctions;
77: HashTable *registered_phpfunctions;
78: HashTable *node_list;
79: } dom_xpath_object;
80:
81: typedef struct _dom_nnodemap_object {
82: dom_object *baseobj;
83: int nodetype;
84: xmlHashTable *ht;
85: xmlChar *local;
86: xmlChar *ns;
87: zval *baseobjptr;
88: } dom_nnodemap_object;
89:
90: typedef struct {
91: zend_object_iterator intern;
92: zval *curobj;
93: } php_dom_iterator;
94:
95: #include "dom_fe.h"
96:
97: dom_object *dom_object_get_data(xmlNodePtr obj);
98: dom_doc_propsptr dom_get_doc_props(php_libxml_ref_obj *document);
99: zend_object_value dom_objects_new(zend_class_entry *class_type TSRMLS_DC);
100: zend_object_value dom_nnodemap_objects_new(zend_class_entry *class_type TSRMLS_DC);
101: #if defined(LIBXML_XPATH_ENABLED)
102: zend_object_value dom_xpath_objects_new(zend_class_entry *class_type TSRMLS_DC);
103: #endif
104: int dom_get_strict_error(php_libxml_ref_obj *document);
105: void php_dom_throw_error(int error_code, int strict_error TSRMLS_DC);
106: void php_dom_throw_error_with_message(int error_code, char *error_message, int strict_error TSRMLS_DC);
107: void node_list_unlink(xmlNodePtr node TSRMLS_DC);
108: int dom_check_qname(char *qname, char **localname, char **prefix, int uri_len, int name_len);
109: xmlNsPtr dom_get_ns(xmlNodePtr node, char *uri, int *errorcode, char *prefix);
110: void dom_set_old_ns(xmlDoc *doc, xmlNs *ns);
111: xmlNsPtr dom_get_nsdecl(xmlNode *node, xmlChar *localName);
112: void dom_normalize (xmlNodePtr nodep TSRMLS_DC);
113: xmlNode *dom_get_elements_by_tag_name_ns_raw(xmlNodePtr nodep, char *ns, char *local, int *cur, int index);
114: void php_dom_create_implementation(zval **retval TSRMLS_DC);
115: int dom_hierarchy(xmlNodePtr parent, xmlNodePtr child);
116: int dom_has_feature(char *feature, char *version);
117: int dom_node_is_read_only(xmlNodePtr node);
118: int dom_node_children_valid(xmlNodePtr node);
119: void php_dom_create_interator(zval *return_value, int ce_type TSRMLS_DC);
120: void dom_namednode_iter(dom_object *basenode, int ntype, dom_object *intern, xmlHashTablePtr ht, xmlChar *local, xmlChar *ns TSRMLS_DC);
121: xmlNodePtr create_notation(const xmlChar *name, const xmlChar *ExternalID, const xmlChar *SystemID);
122: xmlNode *php_dom_libxml_hash_iter(xmlHashTable *ht, int index);
123: xmlNode *php_dom_libxml_notation_iter(xmlHashTable *ht, int index);
124: zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, int by_ref TSRMLS_DC);
125: int dom_set_doc_classmap(php_libxml_ref_obj *document, zend_class_entry *basece, zend_class_entry *ce TSRMLS_DC);
126:
127: #define REGISTER_DOM_CLASS(ce, name, parent_ce, funcs, entry) \
128: INIT_CLASS_ENTRY(ce, name, funcs); \
129: ce.create_object = dom_objects_new; \
130: entry = zend_register_internal_class_ex(&ce, parent_ce, NULL TSRMLS_CC);
131:
132: #define DOM_GET_OBJ(__ptr, __id, __prtype, __intern) { \
133: __intern = (dom_object *)zend_object_store_get_object(__id TSRMLS_CC); \
134: if (__intern->ptr == NULL || !(__ptr = (__prtype)((php_libxml_node_ptr *)__intern->ptr)->node)) { \
135: php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", __intern->std.ce->name);\
136: RETURN_NULL();\
137: } \
138: }
139:
140: #define DOM_NO_ARGS() \
141: if (zend_parse_parameters_none() == FAILURE) { \
142: return; \
143: }
144:
145: #define DOM_NOT_IMPLEMENTED() \
146: php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not yet implemented"); \
147: return;
148:
149: #define DOM_NODELIST 0
150: #define DOM_NAMEDNODEMAP 1
151:
152: PHP_MINIT_FUNCTION(dom);
153: PHP_MSHUTDOWN_FUNCTION(dom);
154: PHP_MINFO_FUNCTION(dom);
155:
156: #endif /* PHP_DOM_H */
157:
158: /*
159: * Local variables:
160: * tab-width: 4
161: * c-basic-offset: 4
162: * End:
163: * vim600: noet sw=4 ts=4 fdm=marker
164: * vim<600: noet sw=4 ts=4
165: */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>