Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenlib/BLI_ghash.h')
-rw-r--r--source/blender/blenlib/BLI_ghash.h47
1 files changed, 47 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h
index a2c5c6349a5..50592d75629 100644
--- a/source/blender/blenlib/BLI_ghash.h
+++ b/source/blender/blenlib/BLI_ghash.h
@@ -188,6 +188,53 @@ BLI_INLINE bool BLI_ghashIterator_done(const GHashIterator *ghi)
typedef struct GSet GSet;
+struct SmallHash;
+
+#include "BLI_smallhash.h"
+
+typedef struct TableGSet {
+ struct SmallHash ptr_to_idx;
+ void **elems;
+ int size, length;
+ int cur;
+} TableGSet;
+
+TableGSet *BLI_table_gset_new(const char *info);
+TableGSet *BLI_table_gset_new_ex(const char *info, int size);
+void BLI_table_gset_free(TableGSet *ts, GHashKeyFreeFP freefp);
+void BLI_table_gset_insert(TableGSet *ts, void *elem);
+bool BLI_table_gset_add(TableGSet *ts, void *elem);
+void BLI_table_gset_remove(TableGSet *ts, void *elem, GHashKeyFreeFP freefp);
+bool BLI_table_gset_haskey(TableGSet *ts, void *elem);
+
+int BLI_table_gset_len(TableGSet *ts);
+
+#define TGSET_ITER(v, ts) \
+ { \
+ int _i1; \
+ for (_i1 = 0; _i1 < (ts)->cur; _i1++) { \
+ if (!(ts)->elems[_i1]) \
+ continue; \
+ v = (ts)->elems[_i1];
+
+#define TGSET_ITER_END \
+ } \
+ }
+
+#define TGSET_ITER_INDEX(v, ts, index) \
+ { \
+ int _i1; \
+ index = -1; \
+ for (_i1 = 0; _i1 < (ts)->cur; _i1++) { \
+ if (!(ts)->elems[_i1]) \
+ continue; \
+ v = (ts)->elems[_i1]; \
+ index++;
+
+#define TGSET_ITER_INDEX_END \
+ } \
+ }
+
typedef GHashHashFP GSetHashFP;
typedef GHashCmpFP GSetCmpFP;
typedef GHashKeyFreeFP GSetKeyFreeFP;