1 /* sdb - MIT - Copyright 2019-2020 - pancake */
2
3 #include "set.h"
4
5 //// set foreach spaguetti
6 typedef struct {
7 void *cbptr;
8 void *userdata;
9 } SetData;
10
u_foreach_cb(void * user,const ut64 k,const void * nada)11 static bool u_foreach_cb(void *user, const ut64 k, const void *nada) {
12 SetData *sd = (SetData*)user;
13 set_u_foreach_cb cb = (set_u_foreach_cb)sd->cbptr;
14 return cb (sd->userdata, k);
15 }
16
set_u_foreach(SetU * s,set_u_foreach_cb cb,void * userdata)17 SDB_API void set_u_foreach(SetU *s, set_u_foreach_cb cb, void *userdata) {
18 SetData sd = {cb, userdata};
19 ht_up_foreach (s, u_foreach_cb, &sd);
20 }
21
p_foreach_cb(void * user,const void * k,const void * nada)22 static bool p_foreach_cb(void *user, const void *k, const void *nada) {
23 SetData *sd = (SetData*)user;
24 set_p_foreach_cb cb = (set_p_foreach_cb)sd->cbptr;
25 return cb (sd->userdata, k);
26 }
27
set_p_foreach(SetP * s,set_p_foreach_cb cb,void * userdata)28 SDB_API void set_p_foreach(SetP *s, set_p_foreach_cb cb, void *userdata) {
29 SetData sd = {cb, userdata};
30 ht_pp_foreach (s, p_foreach_cb, &sd);
31 }
32 ////
33
set_p_new(void)34 SDB_API SetP *set_p_new(void) {
35 return ht_pp_new0 ();
36 }
37
set_p_add(SetP * s,void * u)38 SDB_API void set_p_add(SetP *s, void *u) {
39 ht_pp_insert (s, u, (void*)1);
40 }
41
set_p_contains(SetP * s,void * u)42 SDB_API bool set_p_contains(SetP *s, void *u) {
43 return ht_pp_find (s, u, NULL) != NULL;
44 }
45
set_p_delete(SetP * s,void * u)46 SDB_API void set_p_delete(SetP *s, void *u) {
47 ht_pp_delete (s, u);
48 }
49
set_p_free(SetP * p)50 SDB_API void set_p_free(SetP *p) {
51 ht_pp_free ((HtPP*)p);
52 }
53
54 // u
55
set_u_new(void)56 SDB_API SetU *set_u_new(void) {
57 return (SetU*)ht_up_new0 ();
58 }
59
set_u_add(SetU * s,ut64 u)60 SDB_API void set_u_add(SetU *s, ut64 u) {
61 ht_up_insert (s, u, (void*)1);
62 }
63
set_u_contains(SetU * s,ut64 u)64 SDB_API bool set_u_contains(SetU *s, ut64 u) {
65 return ht_up_find (s, u, NULL) != NULL;
66 }
67
set_u_delete(SetU * s,ut64 u)68 SDB_API void set_u_delete(SetU *s, ut64 u) {
69 ht_up_delete (s, u);
70 }
71
set_u_free(SetU * s)72 SDB_API void set_u_free(SetU *s) {
73 ht_up_free (s);
74 }
75