iset.h

Go to the documentation of this file.
00001 #ifndef CTL_ISET_H
00002 #define CTL_ISET_H
00003 
00014 #ifndef CTL_TREE_H
00015 #include "ctl/tree.h"
00016 #endif
00017 
00025 #define ctl_iset(type,mlabel,compare)   ctl_tree(ctlt_relative(offsetof(type,mlabel)),ctlt_unique)
00026 
00033 #define ctl_iset_decllink(type,mlabel)\
00034     ctlt_node_type(ctlt_relative(offsetof(type,mlabel)),ctlt_unique)    mlabel
00035 
00043 #define ctl_iset_initlink(type,mlabel, curr)        ctl_tree_node_init(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, &curr->mlabel)
00044 
00054 #define ctl_iset_auto(type,mlabel,compare, ilabel)\
00055     ctl_tree_auto(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, compare, ilabel )
00056 
00065 #define ctl_iset_init(type,mlabel,compare, ilabel)\
00066     ctl_tree_init(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, compare, ilabel )
00067 
00075 #define ctl_iset_size(type,mlabel, ilabel)  ctl_tree_size(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, ilabel )
00076 
00086 #define ctl_iset_insert(type,mlabel, ilabel, data)  (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, insert)( (ilabel), (data) )
00087 
00097 #define ctl_iset_find(type,mlabel, ilabel, value)   (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, find)( (ilabel), (value) )
00098 
00108 #define ctl_iset_remove(type,mlabel, ilabel, value) (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, remove)( (ilabel), (value) )
00109 
00119 #define ctl_iset_unlink(type,mlabel, ilabel, data)  (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, unlink)( (ilabel), (data) )
00120 
00128 #define ctl_iset_reset(type,mlabel, ilabel)         ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, reset)( ilabel )
00129 
00137 #define ctl_iset_front(type,mlabel, ilabel)         ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, front)( ilabel )
00138 
00146 #define ctl_iset_back(type,mlabel, ilabel)          ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, back)( ilabel )
00147 
00155 #define ctl_iset_pop_front(type,mlabel, ilabel)     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, pop_front)( ilabel )
00156 
00164 #define ctl_iset_pop_back(type,mlabel, ilabel)      ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, pop_back)( ilabel )
00165 
00166 
00176 #define ctl_iset_foreach(type,mlabel, ilabel, label ) \
00177     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00178     type* label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_begin)( &ppConcat(stack_,label), (ilabel) );\
00179     for ( ; label; label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_next)( &ppConcat(stack_,label) ) )
00180 
00190 #define ctl_iset_foreach_const(type,mlabel, ilabel, label ) \
00191     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00192     const type* label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_begin)( &ppConcat(stack_,label), (ilabel) );\
00193     for ( ; label; label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_next)( &ppConcat(stack_,label) ) )
00194 
00204 #define ctl_iset_foreach_reverse(type,mlabel, ilabel, label ) \
00205     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00206     type* label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_rbegin)( &ppConcat(stack_,label), (ilabel) );\
00207     for ( ; label; label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_prev)( &ppConcat(stack_,label) ) )
00208 
00218 #define ctl_iset_foreach_reverse_const(type,mlabel, ilabel, label ) \
00219     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00220     const type* label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_rbegin)( &ppConcat(stack_,label), (ilabel) );\
00221     for ( ; label; label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_prev)( &ppConcat(stack_,label) ) )
00222 
00223 
00233 #define ctl_iset_from(type,mlabel, ilabel, from, label )\
00234     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00235     type* label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_begin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00236     for ( ; label; label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_next)( &ppConcat(stack_,label) ) )
00237 
00240 #define ctl_iset_from_const(type,mlabel, ilabel, from, label )\
00241     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00242     const type* label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_begin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00243     for ( ; label; label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_next)( &ppConcat(stack_,label) ) )
00244 
00247 #define ctl_iset_from_reverse(type,mlabel, ilabel, from, label )\
00248     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00249     type* label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_rbegin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00250     for ( ; label; label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_prev)( &ppConcat(stack_,label) ) )
00251 
00254 #define ctl_iset_from_reverse_const(type,mlabel, ilabel, from, label )\
00255     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00256     const type* label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_rbegin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00257     for ( ; label; label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_prev)( &ppConcat(stack_,label) ) )
00258 
00271 #define ctl_iset_from_to(type,mlabel, ilabel, from, to, label )\
00272     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00273     type* label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_begin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00274     for( ; label && (ilabel)->compare(label,(to)) < 0; label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_next)( &ppConcat(stack_,label) ) )
00275 
00278 #define ctl_iset_from_to_const(type,mlabel, ilabel, from, to, label )\
00279     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00280     const type* label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_begin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00281     for( ; label && (ilabel)->compare(label,(to)) < 0; label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_next)( &ppConcat(stack_,label) ) )
00282 
00285 #define ctl_iset_from_to_reverse(type,mlabel, ilabel, from, to, label )\
00286     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00287     type* label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_rbegin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00288     for( ; label && (ilabel)->compare(label,(to)) > 0; label = (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_prev)( &ppConcat(stack_,label) ) )
00289 
00293 #define ctl_iset_from_to_reverse_const(type,mlabel, ilabel, from, to, label )\
00294     ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator ) ppConcat(stack_,label);\
00295     const type* label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_rbegin_from)( &ppConcat(stack_,label), (ilabel), (from) );\
00296     for( ; label && (ilabel)->compare(label,(to)) > 0; label = (const type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, iterator_prev)( &ppConcat(stack_,label) ) )
00297 
00298 #endif /* CTL_ISET_H */
00299 
00300 

Generated on Fri Jan 2 15:28:34 2009 for Squat by  doxygen 1.5.6