php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
mem.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_MEM_H
8#define LEXBOR_MEM_H
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#include <string.h>
15
16#include "lexbor/core/base.h"
17
18
20typedef struct lexbor_mem lexbor_mem_t;
21
30
38
39
42
44lexbor_mem_init(lexbor_mem_t *mem, size_t min_chunk_size);
45
46LXB_API void
48
50lexbor_mem_destroy(lexbor_mem_t *mem, bool destroy_self);
51
52
53/*
54 * The memory allocated in lexbor_mem_chunk_* functions needs to be freed
55 * by lexbor_mem_chunk_destroy function.
56 *
57 * This memory will not be automatically freed by a function lexbor_mem_destroy.
58 */
59LXB_API uint8_t *
61 lexbor_mem_chunk_t *chunk, size_t length);
62
64lexbor_mem_chunk_make(lexbor_mem_t *mem, size_t length);
65
68 lexbor_mem_chunk_t *chunk, bool self_destroy);
69
70/*
71 * The memory allocated in lexbor_mem_alloc and lexbor_mem_calloc function
72 * will be freeds after calling lexbor_mem_destroy function.
73 */
74LXB_API void *
75lexbor_mem_alloc(lexbor_mem_t *mem, size_t length);
76
77LXB_API void *
78lexbor_mem_calloc(lexbor_mem_t *mem, size_t length);
79
80
81/*
82 * Inline functions
83 */
84lxb_inline size_t
86{
87 return mem->chunk->length;
88}
89
90lxb_inline size_t
92{
93 return mem->chunk->size;
94}
95
96lxb_inline size_t
98{
99 return mem->chunk_length;
100}
101
102lxb_inline size_t
104{
105 return ((size % LEXBOR_MEM_ALIGN_STEP) != 0)
107 : size;
108}
109
110lxb_inline size_t
112{
113 return ((size % LEXBOR_MEM_ALIGN_STEP) != 0)
115 : size;
116}
117
118/*
119 * No inline functions for ABI.
120 */
121LXB_API size_t
123
124LXB_API size_t
126
127LXB_API size_t
129
130LXB_API size_t
132
133LXB_API size_t
135
136
137#ifdef __cplusplus
138} /* extern "C" */
139#endif
140
141#endif /* LEXBOR_MEM_H */
#define LXB_API
Definition def.h:48
#define LEXBOR_MEM_ALIGN_STEP
Definition def.h:33
new_type size
Definition ffi.c:4365
LXB_API lexbor_mem_chunk_t * lexbor_mem_chunk_make(lexbor_mem_t *mem, size_t length)
Definition mem.c:122
lxb_inline size_t lexbor_mem_chunk_length(lexbor_mem_t *mem)
Definition mem.h:97
LXB_API uint8_t * lexbor_mem_chunk_init(lexbor_mem_t *mem, lexbor_mem_chunk_t *chunk, size_t length)
Definition mem.c:98
LXB_API lxb_status_t lexbor_mem_init(lexbor_mem_t *mem, size_t min_chunk_size)
Definition mem.c:17
LXB_API size_t lexbor_mem_current_length_noi(lexbor_mem_t *mem)
Definition mem.c:202
LXB_API void * lexbor_mem_alloc(lexbor_mem_t *mem, size_t length)
Definition mem.c:157
LXB_API size_t lexbor_mem_align_noi(size_t size)
Definition mem.c:219
struct lexbor_mem lexbor_mem_t
Definition mem.h:20
LXB_API size_t lexbor_mem_current_size_noi(lexbor_mem_t *mem)
Definition mem.c:208
LXB_API lexbor_mem_chunk_t * lexbor_mem_chunk_destroy(lexbor_mem_t *mem, lexbor_mem_chunk_t *chunk, bool self_destroy)
Definition mem.c:138
lxb_inline size_t lexbor_mem_align(size_t size)
Definition mem.h:103
LXB_API void lexbor_mem_clean(lexbor_mem_t *mem)
Definition mem.c:42
LXB_API void * lexbor_mem_calloc(lexbor_mem_t *mem, size_t length)
Definition mem.c:187
LXB_API size_t lexbor_mem_align_floor_noi(size_t size)
Definition mem.c:225
LXB_API lexbor_mem_t * lexbor_mem_destroy(lexbor_mem_t *mem, bool destroy_self)
Definition mem.c:69
lxb_inline size_t lexbor_mem_current_size(lexbor_mem_t *mem)
Definition mem.h:91
struct lexbor_mem_chunk lexbor_mem_chunk_t
Definition mem.h:19
lxb_inline size_t lexbor_mem_align_floor(size_t size)
Definition mem.h:111
LXB_API lexbor_mem_t * lexbor_mem_create(void)
Definition mem.c:11
lxb_inline size_t lexbor_mem_current_length(lexbor_mem_t *mem)
Definition mem.h:85
LXB_API size_t lexbor_mem_chunk_length_noi(lexbor_mem_t *mem)
Definition mem.c:214
size_t size
Definition mem.h:25
uint8_t * data
Definition mem.h:23
lexbor_mem_chunk_t * next
Definition mem.h:27
size_t length
Definition mem.h:24
lexbor_mem_chunk_t * prev
Definition mem.h:28
size_t chunk_min_size
Definition mem.h:35
size_t chunk_length
Definition mem.h:36
lexbor_mem_chunk_t * chunk_first
Definition mem.h:33
lexbor_mem_chunk_t * chunk
Definition mem.h:32
unsigned int lxb_status_t
Definition types.h:28
#define lxb_inline
Definition types.h:21