php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
ns.c
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018-2019 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7#include "lexbor/core/shs.h"
8
9#define LEXBOR_STR_RES_MAP_LOWERCASE
10#include "lexbor/core/str_res.h"
11
12#include "lexbor/ns/ns.h"
13#include "lexbor/ns/res.h"
14
15
18{
20 const lexbor_shs_entry_t *entry;
21
22 if (link == NULL || length == 0) {
23 return NULL;
24 }
25
26 entry = lexbor_shs_entry_get_lower_static(lxb_ns_res_shs_link_data,
27 link, length);
28 if (entry != NULL) {
29 return entry->value;
30 }
31
34 return NULL;
35 }
36
37 data->ns_id = (lxb_ns_id_t) data;
38
39 return data;
40}
41
42const lxb_char_t *
44{
45 const lxb_ns_data_t *data;
46
47 data = lxb_ns_data_by_id(hash, ns_id);
48 if (data == NULL) {
49 if (length != NULL) {
50 *length = 0;
51 }
52
53 return NULL;
54 }
55
56 if (length != NULL) {
57 *length = data->entry.length;
58 }
59
60 return lexbor_hash_entry_str(&data->entry);
61}
62
63const lxb_ns_data_t *
65{
66 if (ns_id >= LXB_NS__LAST_ENTRY) {
67 if (ns_id == LXB_NS__LAST_ENTRY) {
68 return NULL;
69 }
70
71 return (const lxb_ns_data_t *) ns_id;
72 }
73
74 return &lxb_ns_res_data[ns_id];
75}
76
77const lxb_ns_data_t *
79{
80 const lexbor_shs_entry_t *entry;
81
82 if (link == NULL || length == 0) {
83 return NULL;
84 }
85
86 entry = lexbor_shs_entry_get_lower_static(lxb_ns_res_shs_link_data,
87 link, length);
88 if (entry != NULL) {
89 return entry->value;
90 }
91
93}
94
95/* Prefix */
98 const lxb_char_t *prefix, size_t length)
99{
101 const lexbor_shs_entry_t *entry;
102
103 if (prefix == NULL || length == 0) {
104 return NULL;
105 }
106
107 entry = lexbor_shs_entry_get_lower_static(lxb_ns_res_shs_data,
108 prefix, length);
109 if (entry != NULL) {
110 return entry->value;
111 }
112
115 return NULL;
116 }
117
118 data->prefix_id = (lxb_ns_prefix_id_t) data;
119
120 return data;
121}
122
125{
126 if (prefix_id >= LXB_NS__LAST_ENTRY) {
127 if (prefix_id == LXB_NS__LAST_ENTRY) {
128 return NULL;
129 }
130
131 return (const lxb_ns_prefix_data_t *) prefix_id;
132 }
133
134 return &lxb_ns_prefix_res_data[prefix_id];
135}
136
139 const lxb_char_t *prefix, size_t length)
140{
141 const lexbor_shs_entry_t *entry;
142
143 if (prefix == NULL || length == 0) {
144 return NULL;
145 }
146
147 entry = lexbor_shs_entry_get_lower_static(lxb_ns_res_shs_data,
148 prefix, length);
149 if (entry != NULL) {
150 return entry->value;
151 }
152
154}
link(string $target, string $link)
#define LXB_API
Definition def.h:48
LXB_API const lexbor_hash_search_t * lexbor_hash_search_lower
Definition hash.c:66
LXB_API const lexbor_hash_insert_t * lexbor_hash_insert_lower
Definition hash.c:41
void * lexbor_hash_insert(lexbor_hash_t *hash, const lexbor_hash_insert_t *insert, const lxb_char_t *key, size_t length)
Definition hash.c:186
void * lexbor_hash_search(lexbor_hash_t *hash, const lexbor_hash_search_t *search, const lxb_char_t *key, size_t length)
Definition hash.c:274
#define NULL
Definition gdcache.h:45
#define prefix
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
hash(string $algo, string $data, bool $binary=false, array $options=[])
Definition hash.stub.php:12
uintptr_t lxb_ns_prefix_id_t
Definition const.h:21
uintptr_t lxb_ns_id_t
Definition const.h:20
@ LXB_NS__LAST_ENTRY
Definition const.h:32
const lxb_ns_prefix_data_t * lxb_ns_prefix_append(lexbor_hash_t *hash, const lxb_char_t *prefix, size_t length)
Definition ns.c:97
const lxb_ns_prefix_data_t * lxb_ns_prefix_data_by_name(lexbor_hash_t *hash, const lxb_char_t *prefix, size_t length)
Definition ns.c:138
LXB_API const lxb_ns_data_t * lxb_ns_append(lexbor_hash_t *hash, const lxb_char_t *link, size_t length)
Definition ns.c:17
const lxb_ns_data_t * lxb_ns_data_by_link(lexbor_hash_t *hash, const lxb_char_t *link, size_t length)
Definition ns.c:78
const lxb_ns_data_t * lxb_ns_data_by_id(lexbor_hash_t *hash, lxb_ns_id_t ns_id)
Definition ns.c:64
const lxb_ns_prefix_data_t * lxb_ns_prefix_data_by_id(lexbor_hash_t *hash, lxb_ns_prefix_id_t prefix_id)
Definition ns.c:124
const lxb_char_t * lxb_ns_by_id(lexbor_hash_t *hash, lxb_ns_id_t ns_id, size_t *length)
Definition ns.c:43
zend_constant * data
const lexbor_shs_entry_t * lexbor_shs_entry_get_lower_static(const lexbor_shs_entry_t *root, const lxb_char_t *key, size_t key_len)
Definition shs.c:63
Definition shs.h:19
void * value
Definition shs.h:21
unsigned char lxb_char_t
Definition types.h:27