[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17130 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17130 - gnunet/src/util |
Date: |
Fri, 30 Sep 2011 03:05:11 +0200 |
Author: grothoff
Date: 2011-09-30 03:05:11 +0200 (Fri, 30 Sep 2011)
New Revision: 17130
Modified:
gnunet/src/util/container_bloomfilter.c
Log:
speed up BF tests
Modified: gnunet/src/util/container_bloomfilter.c
===================================================================
--- gnunet/src/util/container_bloomfilter.c 2011-09-30 00:51:39 UTC (rev
17129)
+++ gnunet/src/util/container_bloomfilter.c 2011-09-30 01:05:11 UTC (rev
17130)
@@ -316,10 +316,11 @@
* @param cls closure
* @param bf the filter to manipulate
* @param bit the current bit
+ * @return GNUNET_YES to continue, GNUNET_NO to stop early
*/
-typedef void (*BitIterator) (void *cls,
- const struct GNUNET_CONTAINER_BloomFilter * bf,
- unsigned int bit);
+typedef int (*BitIterator) (void *cls,
+ const struct GNUNET_CONTAINER_BloomFilter * bf,
+ unsigned int bit);
/**
* Call an iterator for each bit that the bloomfilter
@@ -336,7 +337,7 @@
{
GNUNET_HashCode tmp[2];
int bitCount;
- int round;
+ unsigned int round;
unsigned int slot = 0;
bitCount = bf->addressesPerElement;
@@ -346,9 +347,11 @@
{
while (slot < (sizeof (GNUNET_HashCode) / sizeof (uint32_t)))
{
- callback (arg, bf,
- (((uint32_t *) & tmp[round & 1])[slot]) &
- ((bf->bitArraySize * 8) - 1));
+ if (GNUNET_YES !=
+ callback (arg, bf,
+ (((uint32_t *) & tmp[round & 1])[slot]) &
+ ((bf->bitArraySize * 8) - 1)))
+ return;
slot++;
bitCount--;
if (bitCount == 0)
@@ -370,14 +373,16 @@
* @param cls pointer to writeable form of bf
* @param bf the filter to manipulate
* @param bit the bit to increment
+ * @return GNUNET_YES
*/
-static void
+static int
incrementBitCallback (void *cls, const struct GNUNET_CONTAINER_BloomFilter *bf,
unsigned int bit)
{
struct GNUNET_CONTAINER_BloomFilter *b = cls;
incrementBit (b->bitArray, bit, bf->fh);
+ return GNUNET_YES;
}
/**
@@ -386,14 +391,16 @@
* @param cls pointer to writeable form of bf
* @param bf the filter to manipulate
* @param bit the bit to decrement
+ * @return GNUNET_YES
*/
-static void
+static int
decrementBitCallback (void *cls, const struct GNUNET_CONTAINER_BloomFilter *bf,
unsigned int bit)
{
struct GNUNET_CONTAINER_BloomFilter *b = cls;
decrementBit (b->bitArray, bit, bf->fh);
+ return GNUNET_YES;
}
/**
@@ -402,15 +409,20 @@
* @param cls pointer set to GNUNET_NO if bit is not set
* @param bf the filter
* @param bit the bit to test
+ * @return YES if the bit is set, NO if not
*/
-static void
+static int
testBitCallback (void *cls, const struct GNUNET_CONTAINER_BloomFilter *bf,
unsigned int bit)
{
int *arg = cls;
if (GNUNET_NO == testBit (bf->bitArray, bit))
+ {
*arg = GNUNET_NO;
+ return GNUNET_NO;
+ }
+ return GNUNET_YES;
}
/* *********************** INTERFACE **************** */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17130 - gnunet/src/util,
gnunet <=