feat(set): add set

This commit is contained in:
2026-03-16 23:06:29 +01:00
parent e7f2d6cdeb
commit a6740769b9
4 changed files with 178 additions and 13 deletions
+10 -4
View File
@@ -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