diff --git a/legacy/eina/src/include/eina_module.h b/legacy/eina/src/include/eina_module.h index e0184f7290..6296882399 100644 --- a/legacy/eina/src/include/eina_module.h +++ b/legacy/eina/src/include/eina_module.h @@ -20,7 +20,7 @@ #define EINA_MODULE_H_ #include "eina_types.h" -#include "eina_list.h" +#include "eina_array.h" /** * @defgroup Module_Group Module @@ -46,10 +46,10 @@ EAPI Eina_Bool eina_module_unload(Eina_Module *m); EAPI void *eina_module_symbol_get(Eina_Module *module, const char *symbol); EAPI const char * eina_module_file_get(Eina_Module *m); -EAPI Eina_List * eina_module_list_get(const char *path, unsigned int recursive, Eina_Module_Cb cb, void *data); -EAPI void eina_module_list_load(Eina_List *list); -EAPI void eina_module_list_unload(Eina_List *list); -EAPI void eina_module_list_delete(Eina_List *list); +EAPI Eina_Array * eina_module_list_get(const char *path, unsigned int recursive, Eina_Module_Cb cb, void *data); +EAPI void eina_module_list_load(Eina_Array *list); +EAPI void eina_module_list_unload(Eina_Array *list); +EAPI void eina_module_list_delete(Eina_Array *list); /** @} */ diff --git a/legacy/eina/src/lib/eina_mempool.c b/legacy/eina/src/lib/eina_mempool.c index c404d37002..75fa6b62a4 100644 --- a/legacy/eina/src/lib/eina_mempool.c +++ b/legacy/eina/src/lib/eina_mempool.c @@ -21,6 +21,7 @@ #endif #include +#include #include "eina_mempool.h" #include "eina_hash.h" @@ -31,7 +32,7 @@ * Local * *============================================================================*/ static Eina_Hash *_backends; -static Eina_List *_modules; +static Eina_Array *_modules; static int _init_count = 0; static Eina_Mempool * diff --git a/legacy/eina/src/lib/eina_module.c b/legacy/eina/src/lib/eina_module.c index f2b55de878..8fbbd70fdc 100644 --- a/legacy/eina/src/lib/eina_module.c +++ b/legacy/eina/src/lib/eina_module.c @@ -29,7 +29,6 @@ #include "eina_module.h" #include "eina_file.h" #include "eina_private.h" -#include "eina_inlist.h" /*============================================================================* * Local * @@ -50,7 +49,6 @@ struct _Eina_Module { - EINA_INLIST; char *file; void *handle; int ref; @@ -60,7 +58,7 @@ typedef struct _Dir_List_Get_Cb_Data { Eina_Module_Cb cb; void *data; - Eina_List *list; + Eina_Array *array; } Dir_List_Get_Cb_Data; typedef struct _Dir_List_Cb_Data @@ -80,7 +78,7 @@ static Eina_Bool _dir_list_get_cb(Eina_Module *m, void *data) } if (ret) { - cb_data->list = eina_list_append(cb_data->list, m); + eina_array_push(cb_data->array, m); } return ret; } @@ -164,7 +162,7 @@ EAPI Eina_Bool eina_module_load(Eina_Module *m) goto ok; if ((*initcall)() == EINA_TRUE) goto ok; - + dlclose(dl_handle); return EINA_FALSE; ok: @@ -189,6 +187,7 @@ EAPI Eina_Bool eina_module_unload(Eina_Module *m) if ((shut) && (*shut)) (*shut)(); dlclose(m->handle); + m->handle = NULL; return EINA_TRUE; } return EINA_FALSE; @@ -208,7 +207,7 @@ EAPI Eina_Module * eina_module_new(const char *file) m->file = strdup(file); m->ref = 0; m->handle = NULL; - + return m; } /** @@ -237,7 +236,7 @@ EAPI void * eina_module_symbol_get(Eina_Module *m, const char *symbol) if ((!m) || (!m->handle)) return NULL; - return dlsym(m->handle, symbol); + return dlsym(m->handle, symbol); } /** * To be documented @@ -246,7 +245,7 @@ EAPI void * eina_module_symbol_get(Eina_Module *m, const char *symbol) EAPI const char * eina_module_file_get(Eina_Module *m) { if (!m) return NULL; - + return m->file; } @@ -259,72 +258,62 @@ EAPI const char * eina_module_file_get(Eina_Module *m) * it won't be added to the list, if it is one, it will. * @param data Data passed to the callback function */ -EAPI Eina_List * eina_module_list_get(const char *path, unsigned int recursive, Eina_Module_Cb cb, void *data) +EAPI Eina_Array * eina_module_list_get(const char *path, unsigned int recursive, Eina_Module_Cb cb, void *data) { Dir_List_Get_Cb_Data list_get_cb_data; Dir_List_Cb_Data list_cb_data; - + if (!path) return NULL; - list_get_cb_data.list = NULL; + list_get_cb_data.array = eina_array_new(4); list_get_cb_data.cb = cb; list_get_cb_data.data = data; - + list_cb_data.cb = &_dir_list_get_cb; list_cb_data.data = &list_get_cb_data; - + eina_file_dir_list(path, recursive, &_dir_list_cb, &list_cb_data); - - return list_get_cb_data.list; + + return list_get_cb_data.array; } /** * Load every module on the list of modules * @param list The list of modules */ -EAPI void eina_module_list_load(Eina_List *list) +EAPI void eina_module_list_load(Eina_Array *array) { - Eina_List *l; - - for (l = list; l; l = eina_list_next(l)) - { - Eina_Module *m; - - m = eina_list_data_get(l); + Eina_Array_Iterator iterator; + Eina_Module *m; + unsigned int i; + + EINA_ARRAY_ITER_NEXT(array, i, m, iterator) eina_module_load(m); - } } /** * To be documented * FIXME: To be fixed */ -EAPI void eina_module_list_unload(Eina_List *list) +EAPI void eina_module_list_unload(Eina_Array *array) { - Eina_List *l; - - for (l = list; l; l = eina_list_next(l)) - { - Eina_Module *m; - - m = eina_list_data_get(l); + Eina_Array_Iterator iterator; + Eina_Module *m; + unsigned int i; + + EINA_ARRAY_ITER_NEXT(array, i, m, iterator) eina_module_unload(m); - } } /** * Helper function that iterates over the list of modules and calls * eina_module_delete on each - * */ -EAPI void eina_module_list_delete(Eina_List *list) +EAPI void eina_module_list_delete(Eina_Array *array) { - Eina_List *l; - - for (l = list; l; l = eina_list_next(l)) - { - Eina_Module *m; - - m = eina_list_data_get(l); + Eina_Array_Iterator iterator; + Eina_Module *m; + unsigned int i; + + EINA_ARRAY_ITER_NEXT(array, i, m, iterator) eina_module_delete(m); - } } diff --git a/legacy/eina/src/tests/eina_bench.c b/legacy/eina/src/tests/eina_bench.c index 93b17d402d..a7457aab81 100644 --- a/legacy/eina/src/tests/eina_bench.c +++ b/legacy/eina/src/tests/eina_bench.c @@ -43,7 +43,7 @@ static const Eina_Benchmark_Case etc[] = { /* FIXME this is a copy from eina_test_mempool * we should remove the duplication */ -static Eina_List *_modules; +static Eina_Array *_modules; static void _mempool_init(void) { eina_mempool_init(); diff --git a/legacy/eina/src/tests/eina_suite.c b/legacy/eina/src/tests/eina_suite.c index 92e5b3d807..cefe115f4b 100644 --- a/legacy/eina/src/tests/eina_suite.c +++ b/legacy/eina/src/tests/eina_suite.c @@ -72,7 +72,7 @@ eina_build_suite(void) /* FIXME this is a copy from eina_test_mempool * we should remove the duplication */ -static Eina_List *_modules; +static Eina_Array *_modules; static void _mempool_init(void) { eina_mempool_init(); diff --git a/legacy/eina/src/tests/eina_test_array.c b/legacy/eina/src/tests/eina_test_array.c index 010e1754b1..4443d62905 100644 --- a/legacy/eina/src/tests/eina_test_array.c +++ b/legacy/eina/src/tests/eina_test_array.c @@ -1,4 +1,3 @@ - /* EINA - EFL data type library * Copyright (C) 2008 Cedric Bail * diff --git a/legacy/eina/src/tests/eina_test_mempool.c b/legacy/eina/src/tests/eina_test_mempool.c index cf1208249f..cee9092ee6 100644 --- a/legacy/eina/src/tests/eina_test_mempool.c +++ b/legacy/eina/src/tests/eina_test_mempool.c @@ -23,7 +23,7 @@ #include "eina_suite.h" #include "eina_mempool.h" -static Eina_List *_modules; +static Eina_Array *_modules; static void _mempool_init(void) diff --git a/legacy/eina/src/tests/eina_test_module.c b/legacy/eina/src/tests/eina_test_module.c index ea979d3276..b209ea675a 100644 --- a/legacy/eina/src/tests/eina_test_module.c +++ b/legacy/eina/src/tests/eina_test_module.c @@ -46,25 +46,25 @@ static Eina_Bool list_cb(Eina_Module *m, void *data) { int *sym; const char *file; - + /* the reference count */ eina_module_load(m); - /* get */ + /* get */ sym = eina_module_symbol_get(m, "dummy_symbol"); fail_if(!sym); fail_if(*sym != 0xbad); file = eina_module_file_get(m); fail_if(!file); eina_module_unload(m); - + return EINA_TRUE; } START_TEST(eina_module_load_unload) { - Eina_List *_modules; - + Eina_Array *_modules; + eina_module_init(); _modules = eina_module_list_get(PACKAGE_BUILD_DIR"/src/tests/", 1, &list_cb, NULL); fail_if(!_modules);