Debug swcsa
[SXSI/TextCollection.git] / Tools.h
diff --git a/Tools.h b/Tools.h
index 7baabbd..1fb4d56 100644 (file)
--- a/Tools.h
+++ b/Tools.h
 #   define W 32
 #endif
 
+#ifndef WW
 #define WW (W*2)
+#endif
+
+#ifndef Wminusone
 #define Wminusone (W-1)
+#endif
 
 #ifndef uchar
 #define uchar unsigned char
@@ -35,6 +40,8 @@
 #define ulong unsigned long
 #endif
 
+#define myminofthree(x,y,z) (x)<(y)?((x)<(z)?(x):(z)):(y)<(z)?(y):(z)
+
 
 class Tools
 {
@@ -55,7 +62,7 @@ public:
     {
         ulong i = index * len / W, 
                  j = index * len - i * W;
-        ulong mask = (j+len < W ? ~0lu << j+len : 0) 
+        ulong mask = (j+len < W ? ~0lu << (j+len) : 0) 
                         | (W-j < W ? ~0lu >> (W-j) : 0);
         A[i] = (A[i] & mask) | x << j;
         if (j + len > W) 
@@ -96,7 +103,7 @@ public:
     static inline void SetVariableField(ulong *A, register unsigned len, register ulong index, register ulong x) {
         ulong i=index/W, 
                     j=index-i*W;
-        ulong mask = (j+len < W ? ~0lu << j+len : 0) 
+        ulong mask = (j+len < W ? ~0lu << (j+len) : 0) 
                         | (W-j < W ? ~0lu >> (W-j) : 0);
         A[i] = (A[i] & mask) | x << j;
         if (j+len>W) {