php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
attr.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018-2021 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7#ifndef LEXBOR_DOM_ATTR_H
8#define LEXBOR_DOM_ATTR_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/hash.h"
15#include "lexbor/core/str.h"
16
17#include "lexbor/ns/ns.h"
18
23
24
32
33/* More memory to God of memory! */
36
37 /* For example: <LalAla:DiV Fix:Me="value"> */
38
39 lxb_dom_attr_id_t upper_name; /* uppercase, with prefix: FIX:ME */
40 lxb_dom_attr_id_t qualified_name; /* original, with prefix: Fix:Me */
41
43
45
48};
49
50
53
56 const lxb_dom_attr_t *attr);
57
60
63 size_t local_name_len, bool to_lowercase);
64
67 const lxb_char_t *value, size_t value_len);
68
71 lxb_char_t *value, size_t value_len);
72
75 const lxb_char_t *value, size_t value_len);
76
79 lxb_dom_attr_t *attr_to);
80
81LXB_API bool
83
84LXB_API void
86
89
92
95 const lxb_char_t *name, size_t length);
96
99 const lxb_char_t *name, size_t length);
100
101LXB_API const lxb_char_t *
103
104
105/*
106 * Inline functions
107 */
110{
112
113 data = lxb_dom_attr_data_by_id(attr->node.owner_document->attrs,
114 attr->node.local_name);
115
116 if (len != NULL) {
117 *len = data->entry.length;
118 }
119
120 return lexbor_hash_entry_str(&data->entry);
121}
122
125{
126 if (attr->value == NULL) {
127 if (len != NULL) {
128 *len = 0;
129 }
130
131 return NULL;
132 }
133
134 if (len != NULL) {
135 *len = attr->value->length;
136 }
137
138 return attr->value->data;
139}
140
141/*
142 * No inline functions for ABI.
143 */
144LXB_API const lxb_char_t *
146
147LXB_API const lxb_char_t *
149
150
151#ifdef __cplusplus
152} /* extern "C" */
153#endif
154
155#endif /* LEXBOR_DOM_ATTR_H */
size_t len
Definition apprentice.c:174
LXB_API const lxb_char_t * lxb_dom_attr_qualified_name(lxb_dom_attr_t *attr, size_t *len)
Definition attr.c:463
LXB_API lxb_dom_attr_t * lxb_dom_attr_interface_clone(lxb_dom_document_t *document, const lxb_dom_attr_t *attr)
Definition attr.c:44
LXB_API lxb_status_t lxb_dom_attr_set_name(lxb_dom_attr_t *attr, const lxb_char_t *local_name, size_t local_name_len, bool to_lowercase)
Definition attr.c:130
LXB_API const lxb_dom_attr_data_t * lxb_dom_attr_data_by_local_name(lexbor_hash_t *hash, const lxb_char_t *name, size_t length)
Definition attr.c:425
LXB_API lxb_status_t lxb_dom_attr_set_value(lxb_dom_attr_t *attr, const lxb_char_t *value, size_t value_len)
Definition attr.c:210
LXB_API lxb_status_t lxb_dom_attr_clone_name_value(lxb_dom_attr_t *attr_from, lxb_dom_attr_t *attr_to)
Definition attr.c:285
LXB_API const lxb_char_t * lxb_dom_attr_value_noi(lxb_dom_attr_t *attr, size_t *len)
Definition attr.c:493
lxb_inline const lxb_char_t * lxb_dom_attr_value(lxb_dom_attr_t *attr, size_t *len)
Definition attr.h:124
LXB_API const lxb_dom_attr_data_t * lxb_dom_attr_data_by_qualified_name(lexbor_hash_t *hash, const lxb_char_t *name, size_t length)
Definition attr.c:444
lxb_inline const lxb_char_t * lxb_dom_attr_local_name(lxb_dom_attr_t *attr, size_t *len)
Definition attr.h:109
LXB_API lxb_dom_attr_t * lxb_dom_attr_interface_create(lxb_dom_document_t *document)
Definition attr.c:26
LXB_API void lxb_dom_attr_remove(lxb_dom_attr_t *attr)
Definition attr.c:322
LXB_API const lxb_dom_attr_data_t * lxb_dom_attr_data_undef(void)
Definition attr.c:405
LXB_API bool lxb_dom_attr_compare(lxb_dom_attr_t *first, lxb_dom_attr_t *second)
Definition attr.c:295
LXB_API lxb_status_t lxb_dom_attr_set_existing_value(lxb_dom_attr_t *attr, const lxb_char_t *value, size_t value_len)
Definition attr.c:278
LXB_API lxb_dom_attr_t * lxb_dom_attr_interface_destroy(lxb_dom_attr_t *attr)
Definition attr.c:109
LXB_API lxb_status_t lxb_dom_attr_set_value_wo_copy(lxb_dom_attr_t *attr, lxb_char_t *value, size_t value_len)
Definition attr.c:259
LXB_API const lxb_dom_attr_data_t * lxb_dom_attr_data_by_id(lexbor_hash_t *hash, lxb_dom_attr_id_t attr_id)
Definition attr.c:411
LXB_API const lxb_char_t * lxb_dom_attr_local_name_noi(lxb_dom_attr_t *attr, size_t *len)
Definition attr.c:487
uintptr_t lxb_dom_attr_id_t
Definition attr_const.h:18
#define LXB_API
Definition def.h:48
struct lxb_dom_document lxb_dom_document_t
Definition interface.h:41
struct lxb_dom_node lxb_dom_node_t
Definition interface.h:38
struct lxb_dom_attr lxb_dom_attr_t
Definition interface.h:40
struct lxb_dom_element lxb_dom_element_t
Definition interface.h:39
new_type attr
Definition ffi.c:4364
#define NULL
Definition gdcache.h:45
lxb_inline lxb_char_t * lexbor_hash_entry_str(const lexbor_hash_entry_t *entry)
Definition hash.h:161
struct lexbor_hash lexbor_hash_t
Definition hash.h:41
struct lexbor_hash_entry lexbor_hash_entry_t
Definition hash.h:42
hash(string $algo, string $data, bool $binary=false, array $options=[])
Definition hash.stub.php:12
zend_constant * data
lxb_dom_attr_id_t attr_id
Definition attr.h:27
lexbor_hash_entry_t entry
Definition attr.h:26
size_t ref_count
Definition attr.h:28
lxb_dom_attr_id_t qualified_name
Definition attr.h:40
lexbor_str_t * value
Definition attr.h:42
lxb_dom_attr_t * next
Definition attr.h:46
lxb_dom_attr_id_t upper_name
Definition attr.h:39
lxb_dom_element_t * owner
Definition attr.h:44
lxb_dom_attr_t * prev
Definition attr.h:47
lxb_dom_node_t node
Definition attr.h:35
unsigned int lxb_status_t
Definition types.h:28
#define lxb_inline
Definition types.h:21
unsigned char lxb_char_t
Definition types.h:27
zend_string * name
value