Introduction
Introduction Statistics Contact Development Disclaimer Help
memory.h - ledit - Text editor (WIP)
git clone git://lumidify.org/ledit.git (fast, but not encrypted)
git clone https://lumidify.org/ledit.git (encrypted, but very slow)
git clone git://4kcetb7mo7hj6grozzybxtotsub5bempzo4lirzc3437amof2c2impyd.onion/…
Log
Files
Refs
README
LICENSE
---
memory.h (2595B)
---
1 #ifndef _MEMORY_H_
2 #define _MEMORY_H_
3
4 #include <stddef.h>
5 #include <stdint.h>
6 #include <stdarg.h>
7
8 /*
9 * These functions all wrap the regular functions but exit on error.
10 */
11 char *ledit_strdup(const char *s);
12 char *ledit_strndup(const char *s, size_t n);
13 void *ledit_malloc(size_t size);
14 void *ledit_calloc(size_t nmemb, size_t size);
15 void *ledit_realloc(void *ptr, size_t size);
16
17 /*
18 * This is different than the normal strcat - it allocates memory for
19 * a new string to hold the concatenation of str1 and str2.
20 */
21 char *ledit_strcat(const char *str1, const char *str2);
22
23 /* This acts like snprintf but automatically allocates
24 a string of the appropriate size.
25 Like the other functions here, it exits on error. */
26 char *print_fmt(char *fmt, ...);
27
28 /*
29 * This is like OpenBSD's reallocarray but exits on error.
30 */
31 void *ledit_reallocarray(void *optr, size_t nmemb, size_t size);
32
33 /*
34 * Move the gap of a gap buffer with elements of size 'elem_size' to 'in…
35 * 'index' is also written to 'new_gap_ret' if it is not NULL. This is j…
36 * for convenience because it usually has to be set anyways.
37 */
38 void move_gap(
39 void *array, size_t elem_size, size_t index,
40 size_t gap, size_t cap, size_t len,
41 size_t *new_gap_ret
42 );
43
44 /*
45 * Resize a generic gap buffer with elements of size 'elem_size' to hold…
46 * 'min_size' elements and move the gap to element position 'index'.
47 * The array size may be increased or decreased.
48 * 'old_gap' is the old index of the gap buffer, 'old_cap' is the total …
49 * array (number of elements, not bytes), and 'len' is the number of val…
50 * 'index' is also written to 'new_gap_ret' if it is not NULL. This is j…
51 * for convenience because it usually has to be set anyways.
52 * The new total length of the array is also written to 'new_cap_ret', i…
53 * NULL. If it is NULL, you're doing something wrong.
54 * Returns the final array (might be same as the old one).
55 */
56 void *resize_and_move_gap(
57 void *array, size_t elem_size,
58 size_t old_gap, size_t old_cap, size_t len,
59 size_t min_size, size_t index,
60 size_t *new_gap_ret, size_t *new_cap_ret
61 );
62
63 /* FIXME: not sure if this really belongs here */
64 void err_overflow_impl(const char *file, int line, const char *func);
65 #define err_overflow() err_overflow_impl(__FILE__, __LINE__, __func__)
66
67 /*
68 * Return the ideal new size for an array of size 'old' when resizing it
69 * so it fits at least 'needed' elements. The return value may be smaller
70 * than 'old' if 'needed' is smaller.
71 */
72 size_t ideal_array_size(size_t old, size_t needed);
73
74 #endif
You are viewing proxied material from lumidify.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.