size_t list_pop_back_string(struct list_table* table, size_t lid) { if(!table) return 0; struct list_descriptor* desc = find_descriptor(table, lid); if(!desc) return 0; void* value = remove_list_element(desc, desc->list_size - 1); size_t casted_value = *((size_t*)value); free(value); return casted_value; }
char list_pop_back_char(struct list_table* table, size_t lid) { if(!table) return '\0'; struct list_descriptor* desc = find_descriptor(table, lid); if(!desc) return '\0'; void* value = remove_list_element(desc, desc->list_size - 1); char casted_value = *((char*)value); free(value); return casted_value; }
bool list_pop_front_bool(struct list_table* table, size_t lid) { if(!table) return 0; struct list_descriptor* desc = find_descriptor(table, lid); if(!desc) return 0; void* value = remove_list_element(desc, 0); bool casted_value = *((bool*)value); free(value); return casted_value; }
char list_remove_char(struct list_table* table, size_t lid, size_t pos) { if(!table) return 0; struct list_descriptor* desc = find_descriptor(table, lid); if(!desc) return 0; void* value = remove_list_element(desc, pos); char casted_value = *((char*)value); free(value); return casted_value; }
void* mxf_remove_list_element(MXFList *list, void *info, eq_func_type eqFunc) { MXFListElement *element = list->elements; MXFListElement *prevElement = NULL; while (element && !eqFunc(element->data, info)) { prevElement = element; element = element->next; } if (!element) return NULL; return remove_list_element(list, element, prevElement); }
void* mxf_remove_list_element_at_index(MXFList *list, size_t index) { size_t currentIndex = 0; MXFListElement *element = list->elements; MXFListElement *prevElement = NULL; if (index == MXF_LIST_NPOS || index >= list->len) return NULL; while (currentIndex != index) { currentIndex++; prevElement = element; element = element->next; } return remove_list_element(list, element, prevElement); }