diff options
Diffstat (limited to 'externals/grill/pool')
-rw-r--r-- | externals/grill/pool/pool.vcproj | 1 | ||||
-rw-r--r-- | externals/grill/pool/source/pool.cpp | 17 | ||||
-rw-r--r-- | externals/grill/pool/source/pool.h | 3 |
3 files changed, 19 insertions, 2 deletions
diff --git a/externals/grill/pool/pool.vcproj b/externals/grill/pool/pool.vcproj index 59b8bd60..494c67c2 100644 --- a/externals/grill/pool/pool.vcproj +++ b/externals/grill/pool/pool.vcproj @@ -36,6 +36,7 @@ ProgramDataBaseFileName=".\pd-msvc/r/" WarningLevel="3" SuppressStartupBanner="TRUE" + DebugInformationFormat="3" CompileAs="0"/> <Tool Name="VCCustomBuildTool"/> diff --git a/externals/grill/pool/source/pool.cpp b/externals/grill/pool/source/pool.cpp index 4d6d100e..dcb16237 100644 --- a/externals/grill/pool/source/pool.cpp +++ b/externals/grill/pool/source/pool.cpp @@ -878,6 +878,19 @@ BL pooldir::SvDirXML(ostream &os,I depth,const AtomList &dir,I ind) return true; } +unsigned int pooldir::FoldBits(unsigned long h,int bits) +{ + if(!bits) return 0; + const int hmax = (1<<bits)-1; + unsigned int ret = 0; + for(unsigned int i = 0; i < sizeof(h)*8; i += bits) + ret ^= (h>>i)&hmax; + return ret; +} - - +int pooldir::Int2Bits(unsigned long n) +{ + int b; + for(b = 0; n; ++b) n >>= 1; + return b; +} diff --git a/externals/grill/pool/source/pool.h b/externals/grill/pool/source/pool.h index 99e271b3..1874d334 100644 --- a/externals/grill/pool/source/pool.h +++ b/externals/grill/pool/source/pool.h @@ -103,6 +103,9 @@ protected: pooldir *parent; const I vbits,dbits,vsize,dsize; + static unsigned int FoldBits(unsigned long h,int bits); + static int Int2Bits(unsigned long n); + struct valentry { int cnt; poolval *v; }; struct direntry { int cnt; pooldir *d; }; |