mirror of
https://github.com/php/php-src.git
synced 2026-04-27 01:48:26 +02:00
73 lines
3.0 KiB
C
73 lines
3.0 KiB
C
/*
|
|
+----------------------------------------------------------------------+
|
|
| Copyright © The PHP Group and Contributors. |
|
|
+----------------------------------------------------------------------+
|
|
| This source file is subject to the Modified BSD License that is |
|
|
| bundled with this package in the file LICENSE, and is available |
|
|
| through the World Wide Web at <https://www.php.net/license/>. |
|
|
| |
|
|
| SPDX-License-Identifier: BSD-3-Clause |
|
|
+----------------------------------------------------------------------+
|
|
| Authors: Niels Dossche <nielsdos@php.net> |
|
|
+----------------------------------------------------------------------+
|
|
*/
|
|
|
|
#ifndef PHP_DOM_OBJ_MAP_H
|
|
#define PHP_DOM_OBJ_MAP_H
|
|
|
|
typedef struct dom_nnodemap_object dom_nnodemap_object;
|
|
|
|
typedef struct php_dom_obj_map_collection_iter {
|
|
zend_long cur, next;
|
|
xmlNodePtr candidate, basep;
|
|
} php_dom_obj_map_collection_iter;
|
|
|
|
typedef struct php_dom_obj_map_handler {
|
|
zend_long (*length)(dom_nnodemap_object *);
|
|
void (*get_item)(dom_nnodemap_object *, zend_long, zval *);
|
|
xmlNodePtr (*get_ns_named_item)(dom_nnodemap_object *, const zend_string *, const char *);
|
|
bool (*has_ns_named_item)(dom_nnodemap_object *, const zend_string *, const char *);
|
|
void (*collection_named_item_iter)(dom_nnodemap_object *, php_dom_obj_map_collection_iter *);
|
|
bool use_cache;
|
|
bool nameless;
|
|
} php_dom_obj_map_handler;
|
|
|
|
typedef struct dom_nnodemap_object {
|
|
dom_object *baseobj;
|
|
zend_long cached_length;
|
|
union {
|
|
xmlHashTable *ht;
|
|
HashTable *array;
|
|
struct {
|
|
xmlChar *local;
|
|
zend_string *local_lower;
|
|
xmlChar *ns;
|
|
};
|
|
};
|
|
php_libxml_cache_tag cache_tag;
|
|
dom_object *cached_obj;
|
|
zend_long cached_obj_index;
|
|
xmlDictPtr dict;
|
|
const php_dom_obj_map_handler *handler;
|
|
bool release_local;
|
|
bool release_ns;
|
|
bool release_array;
|
|
} dom_nnodemap_object;
|
|
|
|
void php_dom_create_obj_map(dom_object *basenode, dom_object *intern, xmlHashTablePtr ht, zend_string *local, zend_string *ns, const php_dom_obj_map_handler *handler);
|
|
void php_dom_obj_map_get_ns_named_item_into_zval(dom_nnodemap_object *objmap, const zend_string *named, const char *ns, zval *return_value);
|
|
void php_dom_obj_map_get_item_into_zval(dom_nnodemap_object *objmap, zend_long index, zval *return_value);
|
|
zend_long php_dom_get_nodelist_length(dom_object *obj);
|
|
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_attributes;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_by_tag_name;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_by_class_name;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_child_elements;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_child_nodes;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_nodeset;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_entities;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_notations;
|
|
extern const php_dom_obj_map_handler php_dom_obj_map_noop;
|
|
|
|
#endif
|