From e70573badd22fc08b72c7c56f39293bc70d52c71 Mon Sep 17 00:00:00 2001 From: Martin Poirier Date: Tue, 27 May 2008 13:22:17 +0000 Subject: gHash iterator initializer To be able to have iterators on the stack/reuse iterators --- source/blender/blenlib/BLI_ghash.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'source/blender/blenlib/BLI_ghash.h') diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h index aec77f5f385..c77e82f0a2b 100644 --- a/source/blender/blenlib/BLI_ghash.h +++ b/source/blender/blenlib/BLI_ghash.h @@ -34,7 +34,12 @@ struct GHash; typedef struct GHash GHash; -typedef struct GHashIterator GHashIterator; + +typedef struct GHashIterator { + GHash *gh; + int curBucket; + struct Entry *curEntry; +} GHashIterator; typedef unsigned int (*GHashHashFP) (void *key); typedef int (*GHashCmpFP) (void *a, void *b); @@ -62,6 +67,15 @@ int BLI_ghash_size (GHash *gh); * @return Pointer to a new DynStr. */ GHashIterator* BLI_ghashIterator_new (GHash *gh); + /** + * Init an already allocated GHashIterator. The hash table must not + * be mutated while the iterator is in use, and the iterator will + * step exactly BLI_ghash_size(gh) times before becoming done. + * + * @param ghi The GHashIterator to initialize. + * @param gh The GHash to iterate over. + */ +void BLI_ghashIterator_init(GHashIterator *ghi, GHash *gh); /** * Free a GHashIterator. * -- cgit v1.2.3