diff options
author | Jordan Augé <jordan.auge+fdio@cisco.com> | 2019-10-23 17:55:00 +0200 |
---|---|---|
committer | Jordan Augé <jordan.auge+fdio@cisco.com> | 2019-10-24 00:21:47 +0200 |
commit | 8e12c8e42cc9ea9d12e55a3a0d8fbcb211504c04 (patch) | |
tree | 1556919c967bd1b6ea664c1f80d6d43efb805f59 /ctrl/facemgr/src/util | |
parent | cf3d6ef0cbda50c9917421213a77097250f3d67b (diff) |
[HICN-352] facemgr event loop enhancement; timer support & async hicn-light interface
Change-Id: I920a0eb091d826e1eb0d1f786fb0b437487f7ff7
Signed-off-by: Jordan Augé <jordan.auge+fdio@cisco.com>
Diffstat (limited to 'ctrl/facemgr/src/util')
-rw-r--r-- | ctrl/facemgr/src/util/map.h | 68 | ||||
-rw-r--r-- | ctrl/facemgr/src/util/set.h | 39 |
2 files changed, 81 insertions, 26 deletions
diff --git a/ctrl/facemgr/src/util/map.h b/ctrl/facemgr/src/util/map.h index b6773f209..b113954a6 100644 --- a/ctrl/facemgr/src/util/map.h +++ b/ctrl/facemgr/src/util/map.h @@ -18,7 +18,6 @@ #include <stdlib.h> -#include "../common.h" #include "set.h" #define ERR_MAP_EXISTS -2 @@ -112,7 +111,30 @@ NAME ## _finalize(NAME ## _t * map) return NAME ## _pair_set_finalize(&map->pair_set); \ } \ \ -AUTOGENERATE_CREATE_FREE(NAME) \ +NAME ## _t * \ +NAME ## _create() \ +{ \ + NAME ## _t * map = malloc(sizeof(NAME ## _t)); \ + if (!map) \ + goto ERR_MALLOC; \ + \ + if (NAME ## _initialize(map) < 0) \ + goto ERR_INITIALIZE; \ + \ + return map; \ + \ +ERR_INITIALIZE: \ + free(map); \ +ERR_MALLOC: \ + return NULL; \ +} \ + \ +void \ +NAME ## _free(NAME ## _t * map) \ +{ \ + NAME ## _finalize(map); \ + free(map); \ +} \ \ int \ NAME ## _add(NAME ## _t * map, KEY_T key, VAL_T value) \ @@ -122,22 +144,22 @@ NAME ## _add(NAME ## _t * map, KEY_T key, VAL_T value) \ NAME ## _pair_t * pair = NAME ## _pair_create(key, value); \ if (!pair) \ - return -1; \ + return -1; \ \ rc = NAME ## _pair_set_get(&map->pair_set, pair, &found); \ - if (rc < 0) \ - return -1; \ + if (rc < 0) \ + return -1; \ if (found) { \ NAME ## _pair_free(pair); \ return ERR_MAP_EXISTS; \ } \ \ rc = NAME ## _pair_set_add(&map->pair_set, pair); \ - if (rc < 0) { \ + if (rc < 0) { \ NAME ## _pair_free(pair); \ - return -1; \ + return -1; \ } \ - return 0; \ + return 0; \ } \ \ int \ @@ -146,12 +168,12 @@ NAME ## _remove(NAME ## _t * map, KEY_T key, VAL_T * value) NAME ## _pair_t * found = NULL; \ NAME ## _pair_t search = { .key = key }; \ int rc = NAME ## _pair_set_remove(&map->pair_set, &search, &found); \ - if (rc < 0) \ + if (rc < 0) \ return ERR_MAP_NOT_FOUND; \ if (value) \ *value = found->value; \ NAME ## _pair_free(found); \ - return 0; \ + return 0; \ } \ \ int \ @@ -159,11 +181,11 @@ NAME ## _get(NAME ## _t * map, KEY_T key, VAL_T * value) { \ NAME ## _pair_t * found = NULL, search = { .key = key }; \ int rc = NAME ## _pair_set_get(&map->pair_set, &search, &found); \ - if (rc < 0) \ - return -1; \ + if (rc < 0) \ + return -1; \ if (found) \ *value = found->value; \ - return 0; \ + return 0; \ } \ \ void \ @@ -176,18 +198,18 @@ NAME ## _get_key_array(NAME ## _t * map, KEY_T **array) { NAME ## _pair_t ** pair_array; \ int n = NAME ## _pair_set_get_array(&map->pair_set, &pair_array); \ if (n < 0) \ - return -1; \ + return -1; \ /* Allocate result array */ \ - array = malloc(n * sizeof(KEY_T)); \ + *array = malloc(n * sizeof(KEY_T)); \ if (!array) { \ free(pair_array); \ - return -1; \ + return -1; \ } \ /* Copy keys */ \ for (int i = 0; i < n; i++) \ - array[i] = &pair_array[i]->key; \ + (*array)[i] = pair_array[i]->key; \ free(pair_array); \ - return 0; \ + return 0; \ } \ \ int \ @@ -195,18 +217,18 @@ NAME ## _get_value_array(NAME ## _t * map, VAL_T **array) { NAME ## _pair_t ** pair_array; \ int n = NAME ## _pair_set_get_array(&map->pair_set, &pair_array); \ if (n < 0) \ - return -1; \ + return -1; \ /* Allocate result array */ \ - array = malloc(n * sizeof(VAL_T)); \ + *array = malloc(n * sizeof(VAL_T)); \ if (!array) { \ free(pair_array); \ - return -1; \ + return -1; \ } \ /* Copy values */ \ for (int i = 0; i < n; i++) \ - array[i] = &pair_array[i]->value; \ + (*array)[i] = pair_array[i]->value; \ free(pair_array); \ - return 0; \ + return 0; \ } #endif /* UTIL_MAP_H */ diff --git a/ctrl/facemgr/src/util/set.h b/ctrl/facemgr/src/util/set.h index 61df209ab..0dad17423 100644 --- a/ctrl/facemgr/src/util/set.h +++ b/ctrl/facemgr/src/util/set.h @@ -24,7 +24,6 @@ //#else #define thread_local _Thread_local //#endif /* ! __ANDROID__ */ -#include "../common.h" #define ERR_SET_EXISTS -2 #define ERR_SET_NOT_FOUND -3 @@ -34,6 +33,13 @@ static inline int +int_cmp(const int x, const int y) +{ + return x - y; +} + +static inline +int int_snprintf(char * buf, size_t size, int value) { return snprintf(buf, size, "%d", value); } @@ -50,6 +56,8 @@ generic_snprintf(char * buf, size_t size, const void * value) { return snprintf(buf, BUFSIZE, "%p", value); } +typedef int(*cmp_t)(const void * x, const void * y); + #define TYPEDEF_SET_H(NAME, T) \ \ typedef struct { \ @@ -87,8 +95,33 @@ NAME ## _initialize(NAME ## _t * set) \ return 0; \ } \ \ -NO_FINALIZE(NAME); \ -AUTOGENERATE_CREATE_FREE(NAME); \ +int \ +NAME ## _finalize(NAME ## _t * set) { return 0; } \ + \ +NAME ## _t * \ +NAME ## _create() \ +{ \ + NAME ## _t * set = malloc(sizeof(NAME ## _t)); \ + if (!set) \ + goto ERR_MALLOC; \ + \ + if (NAME ## _initialize(set) < 0) \ + goto ERR_INITIALIZE; \ + \ + return set; \ + \ +ERR_INITIALIZE: \ + free(set); \ +ERR_MALLOC: \ + return NULL; \ +} \ + \ +void \ +NAME ## _free(NAME ## _t * set) \ +{ \ + NAME ## _finalize(set); \ + free(set); \ +} \ \ int \ NAME ## _add(NAME ## _t * set, const T element) \ |