[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15003] branches/harmonic-skeleton/source/ blender/blenlib: gHash iterator initializer
Martin Poirier
theeth at yahoo.com
Tue May 27 15:22:17 CEST 2008
Revision: 15003
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15003
Author: theeth
Date: 2008-05-27 15:22:17 +0200 (Tue, 27 May 2008)
Log Message:
-----------
gHash iterator initializer
To be able to have iterators on the stack/reuse iterators
Modified Paths:
--------------
branches/harmonic-skeleton/source/blender/blenlib/BLI_ghash.h
branches/harmonic-skeleton/source/blender/blenlib/intern/BLI_ghash.c
Modified: branches/harmonic-skeleton/source/blender/blenlib/BLI_ghash.h
===================================================================
--- branches/harmonic-skeleton/source/blender/blenlib/BLI_ghash.h 2008-05-27 12:38:07 UTC (rev 15002)
+++ branches/harmonic-skeleton/source/blender/blenlib/BLI_ghash.h 2008-05-27 13:22:17 UTC (rev 15003)
@@ -34,8 +34,13 @@
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);
typedef void (*GHashKeyFreeFP) (void *key);
@@ -63,6 +68,15 @@
*/
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.
*
* @param ghi The iterator to free.
Modified: branches/harmonic-skeleton/source/blender/blenlib/intern/BLI_ghash.c
===================================================================
--- branches/harmonic-skeleton/source/blender/blenlib/intern/BLI_ghash.c 2008-05-27 12:38:07 UTC (rev 15002)
+++ branches/harmonic-skeleton/source/blender/blenlib/intern/BLI_ghash.c 2008-05-27 13:22:17 UTC (rev 15003)
@@ -198,12 +198,6 @@
/***/
-struct GHashIterator {
- GHash *gh;
- int curBucket;
- Entry *curEntry;
-};
-
GHashIterator *BLI_ghashIterator_new(GHash *gh) {
GHashIterator *ghi= malloc(sizeof(*ghi));
ghi->gh= gh;
@@ -217,6 +211,17 @@
}
return ghi;
}
+void BLI_ghashIterator_init(GHashIterator *ghi, GHash *gh) {
+ ghi->gh= gh;
+ ghi->curEntry= NULL;
+ ghi->curBucket= -1;
+ while (!ghi->curEntry) {
+ ghi->curBucket++;
+ if (ghi->curBucket==ghi->gh->nbuckets)
+ break;
+ ghi->curEntry= ghi->gh->buckets[ghi->curBucket];
+ }
+}
void BLI_ghashIterator_free(GHashIterator *ghi) {
free(ghi);
}
More information about the Bf-blender-cvs
mailing list