php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
array_obj.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 Alexander Borisov
3 *
4 * Author: Alexander Borisov <borisov@lexbor.com>
5 */
6
7#ifndef LEXBOR_ARRAY_OBJ_H
8#define LEXBOR_ARRAY_OBJ_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/base.h"
15
16
17typedef struct {
18 uint8_t *list;
19 size_t size;
20 size_t length;
22}
24
25
28
31 size_t size, size_t struct_size);
32
33LXB_API void
35
37lexbor_array_obj_destroy(lexbor_array_obj_t *array, bool self_destroy);
38
39
40LXB_API uint8_t *
42
43
44LXB_API void *
46
47LXB_API void *
49
50LXB_API void *
52
53LXB_API void *
55
56LXB_API void
57lexbor_array_obj_delete(lexbor_array_obj_t *array, size_t begin, size_t length);
58
59
60/*
61 * Inline functions
62 */
63lxb_inline void
68
69lxb_inline void *
71{
72 if (idx >= array->length) {
73 return NULL;
74 }
75
76 return array->list + (idx * array->struct_size);
77}
78
79lxb_inline size_t
81{
82 return array->length;
83}
84
85lxb_inline size_t
87{
88 return array->size;
89}
90
91lxb_inline size_t
96
97lxb_inline void *
99{
100 if (array->length == 0) {
101 return NULL;
102 }
103
104 return array->list + ((array->length - 1) * array->struct_size);
105}
106
107
108/*
109 * No inline functions for ABI.
110 */
111LXB_API void
113
114LXB_API void *
116
117LXB_API size_t
119
120LXB_API size_t
122
123LXB_API size_t
125
126LXB_API void *
128
129
130#ifdef __cplusplus
131} /* extern "C" */
132#endif
133
134#endif /* LEXBOR_ARRAY_OBJ_H */
lxb_inline void lexbor_array_obj_erase(lexbor_array_obj_t *array)
Definition array_obj.h:64
LXB_API void * lexbor_array_obj_push(lexbor_array_obj_t *array)
Definition array_obj.c:93
LXB_API size_t lexbor_array_obj_struct_size_noi(lexbor_array_obj_t *array)
Definition array_obj.c:207
LXB_API size_t lexbor_array_obj_length_noi(lexbor_array_obj_t *array)
Definition array_obj.c:195
LXB_API void lexbor_array_obj_clean(lexbor_array_obj_t *array)
Definition array_obj.c:42
LXB_API void * lexbor_array_obj_last_noi(lexbor_array_obj_t *array)
Definition array_obj.c:213
lxb_inline size_t lexbor_array_obj_struct_size(lexbor_array_obj_t *array)
Definition array_obj.h:92
LXB_API size_t lexbor_array_obj_size_noi(lexbor_array_obj_t *array)
Definition array_obj.c:201
LXB_API uint8_t * lexbor_array_obj_expand(lexbor_array_obj_t *array, size_t up_to)
Definition array_obj.c:69
LXB_API void * lexbor_array_obj_pop(lexbor_array_obj_t *array)
Definition array_obj.c:147
LXB_API void * lexbor_array_obj_push_wo_cls(lexbor_array_obj_t *array)
Definition array_obj.c:113
LXB_API void lexbor_array_obj_erase_noi(lexbor_array_obj_t *array)
Definition array_obj.c:183
lxb_inline size_t lexbor_array_obj_length(lexbor_array_obj_t *array)
Definition array_obj.h:80
lxb_inline size_t lexbor_array_obj_size(lexbor_array_obj_t *array)
Definition array_obj.h:86
LXB_API void * lexbor_array_obj_get_noi(lexbor_array_obj_t *array, size_t idx)
Definition array_obj.c:189
LXB_API lxb_status_t lexbor_array_obj_init(lexbor_array_obj_t *array, size_t size, size_t struct_size)
Definition array_obj.c:17
LXB_API void * lexbor_array_obj_push_n(lexbor_array_obj_t *array, size_t count)
Definition array_obj.c:130
LXB_API lexbor_array_obj_t * lexbor_array_obj_create(void)
Definition array_obj.c:11
LXB_API void lexbor_array_obj_delete(lexbor_array_obj_t *array, size_t begin, size_t length)
Definition array_obj.c:158
lxb_inline void * lexbor_array_obj_get(const lexbor_array_obj_t *array, size_t idx)
Definition array_obj.h:70
LXB_API lexbor_array_obj_t * lexbor_array_obj_destroy(lexbor_array_obj_t *array, bool self_destroy)
Definition array_obj.c:50
lxb_inline void * lexbor_array_obj_last(lexbor_array_obj_t *array)
Definition array_obj.h:98
count(Countable|array $value, int $mode=COUNT_NORMAL)
#define LXB_API
Definition def.h:48
int begin
Definition eaw_table.h:20
new_type size
Definition ffi.c:4365
memset(ptr, 0, type->size)
#define NULL
Definition gdcache.h:45
unsigned int lxb_status_t
Definition types.h:28
#define lxb_inline
Definition types.h:21