summaryrefslogtreecommitdiffstats
path: root/ctrl/facemgr/src/util
diff options
context:
space:
mode:
authorJordan Augé <jordan.auge+fdio@cisco.com>2019-10-23 17:55:00 +0200
committerJordan Augé <jordan.auge+fdio@cisco.com>2019-10-24 00:21:47 +0200
commit8e12c8e42cc9ea9d12e55a3a0d8fbcb211504c04 (patch)
tree1556919c967bd1b6ea664c1f80d6d43efb805f59 /ctrl/facemgr/src/util
parentcf3d6ef0cbda50c9917421213a77097250f3d67b (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.h68
-rw-r--r--ctrl/facemgr/src/util/set.h39
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) \