Update of /cvsroot/pure-data/externals/nusmuk In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28584/nusmuk
Modified Files: msd.h Log Message: fixed bitreversing use flext maps
Index: msd.h =================================================================== RCS file: /cvsroot/pure-data/externals/nusmuk/msd.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** msd.h 2 May 2005 22:07:18 -0000 1.2 --- msd.h 3 May 2005 08:45:36 -0000 1.3 *************** *** 40,44 **** #include <string.h> #include <vector> - #include <map>
// define constants --- 40,43 ---- *************** *** 219,223 **** { T r = 0; ! for(int i = 0; i < sizeof(k)*4; ++i) r = (r<<1)|(k&1),k >>= 1; return r; } --- 218,222 ---- { T r = 0; ! for(int i = 0; i < sizeof(k)*8; ++i) r = (r<<1)|(k&1),k >>= 1; return r; } *************** *** 240,244 **** } ! inline size_t size() const { return Parent::size(); }
inline T insert(unsigned int k,T v) { return Parent::insert(bitrev(k),v); } --- 239,243 ---- } ! inline int size() const { return Parent::size(); }
inline T insert(unsigned int k,T v) { return Parent::insert(bitrev(k),v); } *************** *** 260,264 **** template <typename T> class IDMap ! : std::map<const t_symbol *,TablePtrMap<T,T,4> *> { public: --- 259,263 ---- template <typename T> class IDMap ! : TablePtrMap<const t_symbol *,TablePtrMap<T,T,4> *> { public: *************** *** 266,270 **** typedef TablePtrMap<T,T,4> Container; // that's the map for the key ID (symbol,int) relating to the data items ! typedef std::map<const t_symbol *,Container *> Parent;
typedef typename Container::iterator iterator; --- 265,269 ---- typedef TablePtrMap<T,T,4> Container; // that's the map for the key ID (symbol,int) relating to the data items ! typedef TablePtrMap<const t_symbol *,Container *> Parent;
typedef typename Container::iterator iterator; *************** *** 276,282 **** void reset() { ! typename Parent::iterator it; ! for(it = Parent::begin(); it != Parent::end(); ++it) ! delete it->second; Parent::clear(); } --- 275,280 ---- void reset() { ! typename Parent::iterator it(*this); ! for(; it; ++it) delete it.data(); Parent::clear(); } *************** *** 284,293 **** void insert(T item) { ! typename Parent::iterator it = Parent::find(item->Id); ! Container *c; ! if(it == Parent::end()) ! Parent::operator[](item->Id) = c = new Container; ! else ! c = it->second; c->insert(item,item); } --- 282,288 ---- void insert(T item) { ! Container *c = Parent::find(item->Id); ! if(!c) ! Parent::insert(item->Id,c = new Container); c->insert(item,item); } *************** *** 295,311 **** iterator find(const t_symbol *key) { ! typename Parent::iterator it = Parent::find(key); ! if(it == Parent::end()) ! return iterator(); ! else { ! Container *c = it->second; return iterator(*c); ! } } void erase(T item) { ! typename Parent::iterator it = Parent::find(item->Id); ! if(it != Parent::end()) it->second->remove(item); } }; --- 290,304 ---- iterator find(const t_symbol *key) { ! Container *c = Parent::find(key); ! if(c) return iterator(*c); ! else ! return iterator(); } void erase(T item) { ! Container *c = Parent::find(item->Id); ! if(c) c->remove(item); } };