This commit is contained in:
Олег Бородин
2023-09-05 12:15:20 +02:00
parent e9b9df0356
commit eb55ce2b75
6 changed files with 62 additions and 16 deletions

View File

@@ -57,7 +57,7 @@ valgrind: $(bin_TESTS)
done done
bin_TESTS = \ bin_TESTS = \
cstring_test cdynarr_test
noinst_PROGRAMS = \ noinst_PROGRAMS = \
cfparser_test \ cfparser_test \

View File

@@ -425,7 +425,7 @@ include_HEADERS = \
@HAVE_VALGRIND_TRUE@VALGRIND_OPT = --tool=memcheck -s @HAVE_VALGRIND_TRUE@VALGRIND_OPT = --tool=memcheck -s
bin_TESTS = \ bin_TESTS = \
cstring_test cdynarr_test
#TESTS = $(bin_TESTS) #TESTS = $(bin_TESTS)

View File

@@ -36,8 +36,9 @@ void* cintarr_init(cintarr_t* array) {
void* cintarr_append(cintarr_t* array, int64_t add) { void* cintarr_append(cintarr_t* array, int64_t add) {
if (array->size + 1 > array->capa) { if (array->size + 1 > array->capa) {
size_t newcapa = (array->capa * 10) / 6 ; size_t newcapa = (array->capa * 10) / 6;
int64_t* newarray = realloc(array->data, newcapa); size_t memsize = newcapa * sizeof(int64_t);
int64_t* newarray = realloc(array->data, memsize);
if (newarray == NULL) return NULL; if (newarray == NULL) return NULL;
array->capa = newcapa; array->capa = newcapa;
array->data = newarray; array->data = newarray;
@@ -56,8 +57,9 @@ void cintarr_destroy(cintarr_t* array) {
} }
void cintarr_free(cintarr_t* array) { void cintarr_free(cintarr_t* array) {
if (array == NULL) return;
cintarr_destroy(array); cintarr_destroy(array);
free(array->data); free(array);
} }
@@ -91,3 +93,46 @@ void cfltarr_destroy(cfltarr_t* array) {
if (array == NULL) return; if (array == NULL) return;
free(array->data); free(array->data);
} }
/* Bool array */
cboolarr_t* new_cboolarr(void) {
cboolarr_t* arr = malloc(sizeof(cboolarr_t));
if (arr == NULL) return NULL;
if (cboolarr_init(arr) == NULL) {
cboolarr_free(arr);
return NULL;
}
return arr;
}
void* cboolarr_init(cboolarr_t* array) {
array->data = malloc(INIT_CAPA * sizeof(bool));
if (array->data == NULL) return NULL;
memset(array->data, 0, INIT_CAPA);
array->capa = INIT_CAPA;
array->size = 0;
return array->data;
}
void* cboolarr_append(cboolarr_t* array, bool add) {
if (array->size + 1 > array->capa) {
size_t newcapa = (array->capa * 10) / 6 ;
bool* newarray = realloc(array->data, newcapa);
if (newarray == NULL) return NULL;
array->capa = newcapa;
array->data = newarray;
}
array->data[array->size++] = add;
return array->data;
}
void cboolarr_destroy(cboolarr_t* array) {
if (array == NULL) return;
free(array->data);
}
void cboolarr_free(cboolarr_t* array) {
cboolarr_destroy(array);
free(array->data);
}

View File

@@ -12,9 +12,10 @@
void test01(void) { void test01(void) {
cintarr_t* arr = new_cintarr();
cintarr_append(arr, 12);
cintarr_append(arr, 12);
cintarr_free(arr);
} }
int main(void) { int main(void) {

View File

@@ -103,9 +103,9 @@ int jblock_addstr(jblock_t* jb, char* key, char* val) {
if (jblock_checkalloc(jb) == NULL) { if (jblock_checkalloc(jb) == NULL) {
return -1; return -1;
} }
jb->kvarr[jb->kvsize].type = JKVTYPE_STR;
jb->kvarr[jb->kvsize].key = strcopy(key); jb->kvarr[jb->kvsize].key = strcopy(key);
jb->kvarr[jb->kvsize].str = strcopy(val); jb->kvarr[jb->kvsize].str = strcopy(val);
jb->kvarr[jb->kvsize].type = JKVTYPE_STR;
return ++jb->kvsize; return ++jb->kvsize;
} }
@@ -174,7 +174,7 @@ void jblock_destroy(jblock_t* jb) {
for (int i = 0; i < jb->kvsize; i++) { for (int i = 0; i < jb->kvsize; i++) {
switch (jb->kvarr[i].type) { switch (jb->kvarr[i].type) {
case JKVTYPE_BLK: { case JKVTYPE_BLK: {
jblock_destroy(jb->kvarr[i].blk); //jblock_destroy(jb->kvarr[i].blk);
break; break;
} }
//case JKVTYPE_BLKARR: { //case JKVTYPE_BLKARR: {
@@ -185,15 +185,15 @@ void jblock_destroy(jblock_t* jb) {
break; break;
} }
case JKVTYPE_INTARR: { case JKVTYPE_INTARR: {
//free(jb->kvarr[i].numarr); cintarr_destroy(&(jb->kvarr[i].numarr));
break; break;
} }
case JKVTYPE_BOOLARR: { case JKVTYPE_BOOLARR: {
//free(jb->kvarr[i].flagarr); cboolarr_destroy(&(jb->kvarr[i].flagarr));
break; break;
} }
case JKVTYPE_FLTARR: { case JKVTYPE_FLTARR: {
//free(jb->kvarr[i].fltarr); cfltarr_destroy(&(jb->kvarr[i].fltarr));
break; break;
} }
} }

View File

@@ -21,9 +21,9 @@ typedef struct {
cintarr_t numarr; cintarr_t numarr;
cfltarr_t fltarr; cfltarr_t fltarr;
cboolarr_t flagarr; cboolarr_t flagarr;
jblock_t* blk; //jblock_t* blk;
jblock_t* blkarr; //jblock_t* blkarr;
char** strarr; //char** strarr;
}; };
int arrsize; int arrsize;