feat(set): add set
This commit is contained in:
+10
-4
@@ -1,27 +1,33 @@
|
||||
#ifndef MYCLIB_SET_H
|
||||
#define MYCLIB_SET_H
|
||||
|
||||
// TODO: WIP
|
||||
|
||||
#include <stddef.h>
|
||||
#include <threads.h>
|
||||
|
||||
#include "../hashmap/myhashmap.h"
|
||||
#include "../vector/myvector.h"
|
||||
|
||||
typedef struct set {
|
||||
hashmap_s *map;
|
||||
vec_s *data;
|
||||
size_t elem_size;
|
||||
mtx_t lock;
|
||||
} set_s;
|
||||
|
||||
/* Create a new set for fixed-size elements. */
|
||||
set_s *set_new(size_t element_size);
|
||||
|
||||
/* Add a new element to the set (no-op if already present). */
|
||||
int set_add(set_s *set, void *elem);
|
||||
|
||||
/* Remove an element from the set. */
|
||||
int set_remove(set_s *set, void *elem);
|
||||
|
||||
/* Remove all elements from the set. */
|
||||
int set_clear(set_s *set);
|
||||
|
||||
/* Returns 1 if present, 0 if absent, -1 on error. */
|
||||
int set_contains(set_s *set, void *elem);
|
||||
|
||||
/* Free the set and all related resources. */
|
||||
void set_free(set_s *set);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user