move adding element to own function, still needs to properly increment

This commit is contained in:
morgan 2026-08-01 21:35:27 -07:00
parent a35bec87de
commit 5aeff5d0ce

View file

@ -4,10 +4,54 @@
#define TAG "CFGLR" #define TAG "CFGLR"
uint8_t cfglr_add_element(cfglr_handle_t *handle, cfglr_element_t *element) {
cfglr_signaler_t *signaler;
CFGLR_LOGI(TAG, "Initializing element: %s", element->key);
CFGLR_LOGI(TAG, "size: %d", element->datatype_size);
element->handle = handle;
element->data = (void*)malloc(element->datatype_size);
bzero(element->data, 0);
CFGLR_LOGD(TAG, "malloc: %d @ %p", element->datatype_size, element->data);
//CFGLR_LOGI(TAG, "element->data: %p", element->data);
while((signaler = &element->signalers[element->signaler_count])) {
if(signaler->init == NULL && signaler->dispatch == NULL) break;
if(signaler->init != NULL) {
signaler->init(signaler, element, handle);
}
element->signaler_count++;
}
bool dispatch = false;
if(handle->backend.get(&handle->backend, element, handle) == 0) {
dispatch = true;
} else {
CFGLR_LOGI(TAG, "failed to load %s, setting default", element->key);
memcpy((void*)&element->data, (void*)&element->default_data, element->default_size);
if(handle->backend.set(&handle->backend, element, handle) == 0) {
dispatch = true;
}
}
if(dispatch) {
for(uint8_t i = 0; i < element->signaler_count; i++) {
element->signalers[i].dispatch(&element->signalers[i], element, CFGLR_SIGNAL_LOADED);
}
}
return ++handle->element_count;
}
uint8_t cfglr_init(cfglr_handle_t *handle) { uint8_t cfglr_init(cfglr_handle_t *handle) {
cfglr_backend_t *backend = &handle->backend; cfglr_backend_t *backend = &handle->backend;
cfglr_element_t *element; cfglr_element_t *element;
cfglr_signaler_t *signaler;
handle->element_count = 0; handle->element_count = 0;
@ -23,46 +67,7 @@ uint8_t cfglr_init(cfglr_handle_t *handle) {
while((element = &handle->elements[handle->element_count])) { while((element = &handle->elements[handle->element_count])) {
if(element->key == NULL) break; if(element->key == NULL) break;
CFGLR_LOGI(TAG, "Initializing element: %s", element->key); cfglr_add_element(handle, element);
CFGLR_LOGI(TAG, "size: %d", element->datatype_size);
element->handle = handle;
element->data = (void*)malloc(element->datatype_size);
bzero(element->data, 0);
CFGLR_LOGD(TAG, "malloc: %d @ %p", element->datatype_size, element->data);
//CFGLR_LOGI(TAG, "element->data: %p", element->data);
while((signaler = &element->signalers[element->signaler_count])) {
if(signaler->init == NULL && signaler->dispatch == NULL) break;
if(signaler->init != NULL) {
signaler->init(signaler, element, handle);
}
element->signaler_count++;
}
bool dispatch = false;
if(handle->backend.get(&handle->backend, element, handle) == 0) {
dispatch = true;
} else {
CFGLR_LOGI(TAG, "failed to load %s, setting default", element->key);
memcpy((void*)&element->data, (void*)&element->default_data, element->default_size);
if(handle->backend.set(&handle->backend, element, handle) == 0) {
dispatch = true;
}
}
if(dispatch) {
for(uint8_t i = 0; i < element->signaler_count; i++) {
element->signalers[i].dispatch(&element->signalers[i], element, CFGLR_SIGNAL_LOADED);
}
}
++handle->element_count;
} }
return 0; return 0;