Go to the documentation of this file.
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; }
76 void *r =
LIKELY(n)?_remove(tsize,k):0;
92 operator bool()
const {
return map && ix < map->n; }
95 void *
data()
const {
return map->data[ix].value; }
96 size_t key()
const {
return map->data[ix].key; }
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__)
void * find(int tsize, size_t k) const
Definition: flmap.h:72
virtual TableAnyMap * _newmap(TableAnyMap *parent)=0
void * remove(int tsize, size_t k)
Definition: flmap.h:74
void * _toright(int tsize, size_t k, void *t)
Definition: flmap.h:127
TablePtrMap(const TableAnyMap &p)
Definition: flmap.h:251
void * value
Definition: flmap.h:37
Data * data
Definition: flmap.h:148
void operator()(size_t k, void *v)
Definition: flmap.h:33
K key() const
Definition: flmap.h:236
T find(K k) const
Definition: flmap.h:212
TableAnyMap * parent
Definition: flmap.h:149
TableAnyMap * right
Definition: flmap.h:149
iterator()
Definition: flmap.h:226
iterator()
Definition: flmap.h:86
Data slots[N]
Definition: flmap.h:248
int ix
Definition: flmap.h:112
size_t key
Definition: flmap.h:36
virtual void _delmap(TableAnyMap *map)=0
TablePtrMap(TableAnyMap *p)
Definition: flmap.h:242
const TableAnyMap * map
Definition: flmap.h:111
#define LIKELY(expression)
Definition: flprefix.h:447
T data() const
Definition: flmap.h:235
virtual void clear()
Definition: flmap.cpp:23
virtual TableAnyMap * _newmap(TableAnyMap *parent)
Definition: flmap.h:244
#define FLEXT_TEMPLATE
Definition: flprefix.h:462
virtual void _delmap(TableAnyMap *map)
Definition: flmap.h:245
TablePtrMap()
Definition: flmap.h:198
size_t key() const
Definition: flmap.h:96
int count
Definition: flmap.h:247
virtual ~TablePtrMap()
Definition: flmap.h:199
int size() const
Definition: flmap.h:203
void leftmost()
Definition: flmap.h:101
iterator & operator++()
Definition: flmap.h:238
T remove(K k)
Definition: flmap.h:214
TableAnyMap(const TableAnyMap &)
Definition: flmap.h:185
int n
Definition: flmap.h:150
iterator(const TablePtrMap &m)
Definition: flmap.h:227
void * insert(int tsize, size_t k, void *t)
Definition: flmap.h:59
iterator & operator=(const iterator &it)
Definition: flmap.h:232
void * _toleft(int tsize, size_t k, void *t)
Definition: flmap.h:117
#define FLEXT_SHARE
Definition: flprefix.h:425
iterator(const TableAnyMap &m)
Definition: flmap.h:87
void _init(size_t k, void *t)
Definition: flmap.h:115
void * _toleft(int tsize, Data &v)
Definition: flmap.h:137
unsigned int _tryix(size_t k) const
Definition: flmap.h:154
T insert(K k, T t)
Definition: flmap.h:205
virtual void clear()
Definition: flmap.h:201
void * _toright(int tsize, Data &v)
Definition: flmap.h:138
#define FLEXT_TEMPINST(fun)
Definition: flprefix.h:464
TableAnyMap * left
Definition: flmap.h:149
void * data() const
Definition: flmap.h:95
iterator(const iterator &it)
Definition: flmap.h:228
TableAnyMap(TableAnyMap *p, Data *dt)
Definition: flmap.h:43
void _eraseempty(TableAnyMap *&b)
Definition: flmap.h:172
iterator(const iterator &it)
Definition: flmap.h:88
Try to find out the platform.