1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
#include <assert.h>
#include <mrsh/array.h>
#include <stdlib.h>
#define INITIAL_SIZE 8
bool mrsh_array_reserve(struct mrsh_array *array, size_t new_cap) {13 references
if (array->cap >= new_cap) {
return true;
}
void *new_data = realloc(array->data, new_cap * sizeof(void *));
if (new_data == NULL) {
return false;
}
array->data = new_data;
array->cap = new_cap;
return true;
}
ssize_t mrsh_array_add(struct mrsh_array *array, void *value) {55 references
- ./shell/word.c:161
- ./shell/word.c:153
- ./shell/word.c:139
- ./shell/word.c:116
- ./shell/word.c:90
- ./shell/job.c:136
- ./shell/job.c:106
- ./shell/process.c:14
- ./shell/task/list.c:51
- ./shell/task/command.c:49
- ./shell/task/case_clause.c:103
- ./shell/task/ast.c:32
- ./shell/task/pipeline.c:145
- ./parser/program.c:1175
- ./parser/program.c:1168
- ./parser/program.c:1154
- ./parser/program.c:1048
- ./parser/program.c:1041
- ./parser/program.c:1022
- ./parser/program.c:943
- ./parser/program.c:934
- ./parser/program.c:770
- ./parser/program.c:698
- ./parser/program.c:690
- ./parser/program.c:562
- ./parser/program.c:400
- ./parser/program.c:393
- ./parser/program.c:321
- ./parser/program.c:315
- ./parser/program.c:280
- ./parser/program.c:274
- ./parser/program.c:226
- ./parser/word.c:785
- ./parser/word.c:776
- ./parser/word.c:765
- ./parser/word.c:755
- ./parser/word.c:685
- ./parser/word.c:676
- ./parser/word.c:665
- ./parser/word.c:655
- ./parser/word.c:587
- ./parser/word.c:577
- ./parser/word.c:539
- ./parser/word.c:208
- ./parser/word.c:189
- ./ast.c:844
- ./ast.c:818
- ./ast.c:790
- ./ast.c:748
- ./ast.c:741
- ./ast.c:734
- ./ast.c:712
- ./ast.c:702
- ./ast.c:682
- ./ast.c:662
assert(array->len <= array->cap);
if (array->len == array->cap) {
size_t new_cap = 2 * array->cap;
if (new_cap < INITIAL_SIZE) {
new_cap = INITIAL_SIZE;
}
if (!mrsh_array_reserve(array, new_cap)) {
return -1;
}
}
size_t i = array->len;
array->data[i] = value;
array->len++;
return i;
}
void mrsh_array_finish(struct mrsh_array *array) {28 references
- ./builtin/read.c:91
- ./shell/shell.c:86
- ./shell/shell.c:82
- ./shell/job.c:130
- ./shell/task/list.c:16
- ./shell/task/command.c:45
- ./shell/task/command.c:14
- ./shell/task/case_clause.c:35
- ./shell/task/assignment.c:15
- ./shell/task/pipeline.c:23
- ./parser/program.c:1076
- ./parser/program.c:954
- ./parser/program.c:792
- ./parser/program.c:737
- ./parser/program.c:640
- ./parser/word.c:816
- ./parser/word.c:713
- ./parser/word.c:216
- ./ast.c:192
- ./ast.c:166
- ./ast.c:149
- ./ast.c:122
- ./ast.c:117
- ./ast.c:112
- ./ast.c:94
- ./ast.c:86
- ./ast.c:68
- ./ast.c:52
free(array->data);
array->cap = array->len = 0;
}