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