#include #include #include typedef struct CList { void* data; int size; int len; bool locked; struct CList* next; } CList; void CList_init(CList* self, int size); void CList_free(CList* self); void* CList_get(CList* self, int index); void CList_append(CList* self, void* data); void CList_extend(CList* self, CList* list); void CList_push(CList* self, void* array); void CList_remove(CList* self, void* data); void CList_pop(CList* self, int index); void* CList_to_array(CList* self, void** array); void* CList_to_array_new(CList* self); int CList_size(CList* self); int CList_len(CList* self); void CList_lock(CList* self); void CList_unlock(CList* self); bool CList_is_locked(CList* self);