Added more objects
[SXSI/XMLTree.git] / darray.c
index 3359ed3..780b967 100644 (file)
--- a/darray.c
+++ b/darray.c
@@ -46,6 +46,27 @@ int setbit(pb *B, int i,int x)
   return x;\r
 }\r
 \r
+int setbit_zero(pb *B, int i)\r
+{\r
+  int j,l;\r
+  j = i >> logD;\r
+  l = i & (D-1);\r
+  B[j] &= (~(1<<(D-1-l)));\r
+  return 0;\r
+}\r
+\r
+int setbit_one(pb *B, int i)\r
+{\r
+  int j,l;\r
+  j = i >> logD;\r
+  l = i & (D-1);\r
+  B[j] |= (1<<(D-1-l));\r
+  return 1;\r
+\r
+}\r
+\r
+\r
+\r
 int setbits(pb *B, int i, int d, int x)\r
 {\r
   int j;\r
@@ -113,7 +134,7 @@ static const unsigned int popCount[] = {
 \r
 static int selecttbl[8*256];\r
 \r
-unsigned int popcount(pb x)\r
+unsigned int popcount_old(pb x)\r
 {\r
   pb r;\r
 #if 0\r
@@ -142,6 +163,18 @@ unsigned int popcount(pb x)
   return r;\r
 }\r
 \r
+inline unsigned int\r
+popcount(pb x) \r
+{\r
+  uint m1 = 0x55555555;\r
+  uint m2 = 0xc30c30c3;\r
+  x -= (x >> 1) & m1;\r
+  x = (x & m2) + ((x >> 2) & m2) + ((x >> 4) & m2);\r
+  x += x >> 6;\r
+  return  (x + (x >> 12) + (x >> 24)) & 0x3f;\r
+}\r
+\r
+\r
 unsigned int popcount8(pb x)\r
 {\r
   dword r;\r