php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
array.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_H
8#define LEXBOR_ARRAY_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include "lexbor/core/base.h"
15
16
17typedef struct {
18 void **list;
19 size_t size;
20 size_t length;
21}
23
24
27
30
31LXB_API void
33
35lexbor_array_destroy(lexbor_array_t *array, bool self_destroy);
36
37
38LXB_API void **
39lexbor_array_expand(lexbor_array_t *array, size_t up_to);
40
41
44
45LXB_API void *
47
49lexbor_array_insert(lexbor_array_t *array, size_t idx, void *value);
50
52lexbor_array_set(lexbor_array_t *array, size_t idx, void *value);
53
54LXB_API void
55lexbor_array_delete(lexbor_array_t *array, size_t begin, size_t length);
56
57
58/*
59 * Inline functions
60 */
61lxb_inline void *
63{
64 if (idx >= array->length) {
65 return NULL;
66 }
67
68 return array->list[idx];
69}
70
71lxb_inline size_t
73{
74 return array->length;
75}
76
77lxb_inline size_t
79{
80 return array->size;
81}
82
83/*
84 * No inline functions for ABI.
85 */
86LXB_API void *
87lexbor_array_get_noi(lexbor_array_t *array, size_t idx);
88
89LXB_API size_t
91
92LXB_API size_t
94
95
96#ifdef __cplusplus
97} /* extern "C" */
98#endif
99
100#endif /* LEXBOR_ARRAY_H */
LXB_API size_t lexbor_array_length_noi(lexbor_array_t *array)
Definition array.c:199
LXB_API lxb_status_t lexbor_array_insert(lexbor_array_t *array, size_t idx, void *value)
Definition array.c:113
LXB_API size_t lexbor_array_size_noi(lexbor_array_t *array)
Definition array.c:205
LXB_API lxb_status_t lexbor_array_push(lexbor_array_t *array, void *value)
Definition array.c:87
lxb_inline void * lexbor_array_get(lexbor_array_t *array, size_t idx)
Definition array.h:62
lxb_inline size_t lexbor_array_size(lexbor_array_t *array)
Definition array.h:78
LXB_API lexbor_array_t * lexbor_array_destroy(lexbor_array_t *array, bool self_destroy)
Definition array.c:47
LXB_API void * lexbor_array_get_noi(lexbor_array_t *array, size_t idx)
Definition array.c:193
lxb_inline size_t lexbor_array_length(lexbor_array_t *array)
Definition array.h:72
LXB_API void lexbor_array_delete(lexbor_array_t *array, size_t begin, size_t length)
Definition array.c:170
LXB_API lxb_status_t lexbor_array_set(lexbor_array_t *array, size_t idx, void *value)
Definition array.c:148
LXB_API lexbor_array_t * lexbor_array_create(void)
Definition array.c:11
LXB_API void * lexbor_array_pop(lexbor_array_t *array)
Definition array.c:102
LXB_API void lexbor_array_clean(lexbor_array_t *array)
Definition array.c:39
LXB_API lxb_status_t lexbor_array_init(lexbor_array_t *array, size_t size)
Definition array.c:17
LXB_API void ** lexbor_array_expand(lexbor_array_t *array, size_t up_to)
Definition array.c:66
#define LXB_API
Definition def.h:48
int begin
Definition eaw_table.h:20
new_type size
Definition ffi.c:4365
#define NULL
Definition gdcache.h:45
size_t length
Definition array.h:20
void ** list
Definition array.h:18
size_t size
Definition array.h:19
unsigned int lxb_status_t
Definition types.h:28
#define lxb_inline
Definition types.h:21
value