at work
This commit is contained in:
@@ -64,6 +64,16 @@ void cintarr_free(cintarr_t* array) {
|
|||||||
|
|
||||||
|
|
||||||
/* Float array */
|
/* Float array */
|
||||||
|
cfltarr_t* new_cfltarr(void) {
|
||||||
|
cfltarr_t* arr = malloc(sizeof(cfltarr_t));
|
||||||
|
if (arr == NULL) return NULL;
|
||||||
|
if (cfltarr_init(arr) == NULL) {
|
||||||
|
cfltarr_free(arr);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return arr;
|
||||||
|
}
|
||||||
|
|
||||||
void* cfltarr_init(cfltarr_t* array) {
|
void* cfltarr_init(cfltarr_t* array) {
|
||||||
array->data = malloc(INIT_CAPA * sizeof(double));
|
array->data = malloc(INIT_CAPA * sizeof(double));
|
||||||
if (array->data == NULL) return NULL;
|
if (array->data == NULL) return NULL;
|
||||||
@@ -75,8 +85,9 @@ void* cfltarr_init(cfltarr_t* array) {
|
|||||||
|
|
||||||
void* cfltarr_append(cfltarr_t* array, double add) {
|
void* cfltarr_append(cfltarr_t* array, double 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;
|
||||||
double* newarray = realloc(array->data, newcapa);
|
size_t memsize = newcapa * sizeof(double);
|
||||||
|
double* 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;
|
||||||
@@ -94,6 +105,11 @@ void cfltarr_destroy(cfltarr_t* array) {
|
|||||||
free(array->data);
|
free(array->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cfltarr_free(cfltarr_t* array) {
|
||||||
|
if (array == NULL) return;
|
||||||
|
cfltarr_destroy(array);
|
||||||
|
free(array);
|
||||||
|
}
|
||||||
|
|
||||||
/* Bool array */
|
/* Bool array */
|
||||||
cboolarr_t* new_cboolarr(void) {
|
cboolarr_t* new_cboolarr(void) {
|
||||||
@@ -117,8 +133,9 @@ void* cboolarr_init(cboolarr_t* array) {
|
|||||||
|
|
||||||
void* cboolarr_append(cboolarr_t* array, bool add) {
|
void* cboolarr_append(cboolarr_t* array, bool 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;
|
||||||
bool* newarray = realloc(array->data, newcapa);
|
size_t memsize = newcapa * sizeof(bool);
|
||||||
|
bool* 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;
|
||||||
@@ -127,12 +144,18 @@ void* cboolarr_append(cboolarr_t* array, bool add) {
|
|||||||
return array->data;
|
return array->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool* cboolarr_getref(cboolarr_t* array) {
|
||||||
|
return array->data;
|
||||||
|
}
|
||||||
|
|
||||||
void cboolarr_destroy(cboolarr_t* array) {
|
void cboolarr_destroy(cboolarr_t* array) {
|
||||||
if (array == NULL) return;
|
if (array == NULL) return;
|
||||||
free(array->data);
|
free(array->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cboolarr_free(cboolarr_t* array) {
|
void cboolarr_free(cboolarr_t* array) {
|
||||||
|
if (array == NULL) return;
|
||||||
cboolarr_destroy(array);
|
cboolarr_destroy(array);
|
||||||
free(array->data);
|
free(array);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,14 @@
|
|||||||
|
|
||||||
void test01(void) {
|
void test01(void) {
|
||||||
cintarr_t* arr = new_cintarr();
|
cintarr_t* arr = new_cintarr();
|
||||||
cintarr_append(arr, 12);
|
const size_t size = 1024 * 1024 * 32;
|
||||||
cintarr_append(arr, 12);
|
for (size_t i = 0; i < size; i++) {
|
||||||
|
cintarr_append(arr, (int64_t)i);
|
||||||
|
}
|
||||||
|
for (size_t i = 0; i < size; i++) {
|
||||||
|
MASSERT(arr->data[i] == i);
|
||||||
|
}
|
||||||
|
MASSERT(arr->size == size);
|
||||||
cintarr_free(arr);
|
cintarr_free(arr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user