Go to the source code of this file.
|
| int | atoi (const char *) |
| |
| void | qsort (void *array, size_t cnt, size_t size, int(*compare)(const void *, const void *)) |
| |
| void * | bsearch (const void *key, const void *array, size_t cnt, size_t size, int(*compare)(const void *, const void *)) |
| |
| void | sort (void *array, size_t cnt, size_t size, int(*compare)(const void *, const void *, void *aux), void *aux) |
| |
| void * | binary_search (const void *key, const void *array, size_t cnt, size_t size, int(*compare)(const void *, const void *, void *aux), void *aux) |
| |
◆ atoi()
| int atoi |
( |
const char * |
s | ) |
|
11{
12 bool negative;
13 int value;
14
16
17
20
21
22 negative = false;
26 {
27 negative = true;
29 }
30
31
32
33
34
36 value = value * 10 - (*
s -
'0');
37 if (!negative)
38 value = -value;
39
40 return value;
41}
static int isspace(int c)
Definition: ctype.h:12
static int isdigit(int c)
Definition: ctype.h:7
#define ASSERT(CONDITION)
Definition: debug.h:30
static uint8_t s[256]
Definition: random.c:17
#define NULL
Definition: stddef.h:4
◆ binary_search()
| void * binary_search |
( |
const void * |
key, |
|
|
const void * |
array, |
|
|
size_t |
cnt, |
|
|
size_t |
size, |
|
|
int(*)(const void *, const void *, void *aux) |
compare, |
|
|
void * |
aux |
|
) |
| |
188{
189 const unsigned char *first = array;
190 const unsigned char *last = array +
size * cnt;
191
192 while (first < last)
193 {
194 size_t range = (last - first) /
size;
195 const unsigned char *middle = first + (range / 2) *
size;
196 int cmp = compare (key, middle, aux);
197
198 if (cmp < 0)
199 last = middle;
200 else if (cmp > 0)
201 first = middle +
size;
202 else
203 return (void *) middle;
204 }
205
207}
uint16_t size
Definition: mmu.h:0
◆ bsearch()
| void * bsearch |
( |
const void * |
key, |
|
|
const void * |
array, |
|
|
size_t |
cnt, |
|
|
size_t |
size, |
|
|
int(*)(const void *, const void *) |
compare |
|
) |
| |
168{
170}
void * binary_search(const void *key, const void *array, size_t cnt, size_t size, int(*compare)(const void *, const void *, void *aux), void *aux)
Definition: stdlib.c:185
static int compare_thunk(const void *a, const void *b, void *aux)
Definition: stdlib.c:45
◆ qsort()
| void qsort |
( |
void * |
array, |
|
|
size_t |
cnt, |
|
|
size_t |
size, |
|
|
int(*)(const void *, const void *) |
compare |
|
) |
| |
60{
62}
void sort(void *array, size_t cnt, size_t size, int(*compare)(const void *, const void *, void *aux), void *aux)
Definition: stdlib.c:132
◆ sort()
| void sort |
( |
void * |
array, |
|
|
size_t |
cnt, |
|
|
size_t |
size, |
|
|
int(*)(const void *, const void *, void *aux) |
compare, |
|
|
void * |
aux |
|
) |
| |
135{
136 size_t i;
137
141
142
143 for (i = cnt / 2; i > 0; i--)
145
146
147 for (i = cnt; i > 1; i--)
148 {
151 }
152}
static void heapify(unsigned char *array, size_t i, size_t cnt, size_t size, int(*compare)(const void *, const void *, void *aux), void *aux)
Definition: stdlib.c:97
static void do_swap(unsigned char *array, size_t a_idx, size_t b_idx, size_t size)
Definition: stdlib.c:67