34 void operator =(
void *v) { value = v; }
45 , parent(p),left(0),right(0)
53 #if 0 // set 1 for asserting the map structure (very cpu-intensive!) 54 void check(
int tsize) {
if(n) _check(tsize); }
59 void *
insert(
int tsize,
size_t k,
void *t)
72 void *
find(
int tsize,
size_t k)
const {
return LIKELY(n)?_find(tsize,k):0; }
74 void *
remove(
int tsize,
size_t k)
76 void *r =
LIKELY(n)?_remove(tsize,k):0;
92 operator bool()
const {
return map && ix < map->
n; }
98 iterator &operator ++() { forward();
return *
this; }
105 while((nmap = map->
left) != 0) map = nmap;
115 void _init(
size_t k,
void *t) { data[0](k,t); n = 1; }
120 return left->_set(tsize,k,t);
122 (left = _newmap(
this))->_init(k,t);
130 return right->_set(tsize,k,t);
132 (right = _newmap(
this))->_init(k,t);
140 void *_set(
int tsize,
size_t k,
void *t);
141 void *_find(
int tsize,
size_t k)
const;
142 void *_remove(
int tsize,
size_t k);
145 void _check(
int tsize);
156 unsigned int ix = 0,b = n;
158 const unsigned int c = (ix+b)>>1;
159 const size_t dk = data[c].
key;
180 void _getsmall(
Data &dt);
181 void _getbig(
Data &dt);
189 template <
typename K,
typename T,
int N = 8>
192 #if (defined(_MSC_VER) && _MSC_VER < 1300) || defined(__BORLANDC__) || defined(__MWERKS__) 203 inline int size()
const {
return count; }
void * remove(int tsize, size_t k)
Definition: flmap.h:74
virtual void clear()
Definition: flmap.h:201
virtual void _delmap(TableAnyMap *map)
Definition: flmap.h:245
void * _toright(int tsize, size_t k, void *t)
Definition: flmap.h:127
void operator()(size_t k, void *v)
Definition: flmap.h:33
T data() const
Definition: flmap.h:235
void * find(int tsize, size_t k) const
Definition: flmap.h:72
TablePtrMap(const TableAnyMap &p)
Definition: flmap.h:251
virtual ~TablePtrMap()
Definition: flmap.h:199
iterator(const TablePtrMap &m)
Definition: flmap.h:227
iterator(const iterator &it)
Definition: flmap.h:228
TableAnyMap(TableAnyMap *p, Data *dt)
Definition: flmap.h:43
iterator()
Definition: flmap.h:226
iterator(const TableAnyMap &m)
Definition: flmap.h:87
T find(K k) const
Definition: flmap.h:212
virtual void clear()
Definition: flmap.cpp:23
iterator(const iterator &it)
Definition: flmap.h:88
virtual TableAnyMap * _newmap(TableAnyMap *parent)
Definition: flmap.h:244
int ix
Definition: flmap.h:112
size_t key() const
Definition: flmap.h:96
K key() const
Definition: flmap.h:236
TablePtrMap()
Definition: flmap.h:198
Try to find out the platform.
void * insert(int tsize, size_t k, void *t)
Definition: flmap.h:59
TablePtrMap(TableAnyMap *p)
Definition: flmap.h:242
const TableAnyMap * map
Definition: flmap.h:111
TableAnyMap * right
Definition: flmap.h:149
int count
Definition: flmap.h:247
#define FLEXT_TEMPINST(fun)
Definition: flprefix.h:457
void * _toleft(int tsize, size_t k, void *t)
Definition: flmap.h:117
#define FLEXT_TEMPLATE
Definition: flprefix.h:455
TableAnyMap(const TableAnyMap &)
Definition: flmap.h:185
#define LIKELY(expression)
Definition: flprefix.h:440
void * value
Definition: flmap.h:37
void * _toleft(int tsize, Data &v)
Definition: flmap.h:137
iterator()
Definition: flmap.h:86
void leftmost()
Definition: flmap.h:101
void _init(size_t k, void *t)
Definition: flmap.h:115
#define FLEXT_SHARE
Definition: flprefix.h:418
size_t key
Definition: flmap.h:36
int n
Definition: flmap.h:150
TableAnyMap * left
Definition: flmap.h:149
void * data() const
Definition: flmap.h:95
T insert(K k, T t)
Definition: flmap.h:205
void _eraseempty(TableAnyMap *&b)
Definition: flmap.h:172
unsigned int _tryix(size_t k) const
Definition: flmap.h:154
void * _toright(int tsize, Data &v)
Definition: flmap.h:138
Data * data
Definition: flmap.h:148
int size() const
Definition: flmap.h:203