iset.h File Reference

"Invasive" set of ordered, unique data More...

#include "ctl/tree.h"

Include dependency graph for iset.h:

Go to the source code of this file.

Defines

#define ctl_iset(type, mlabel, compare)   ctl_tree(ctlt_relative(offsetof(type,mlabel)),ctlt_unique)
 Get the class name of the 'set'; unique-instance tree.
#define ctl_iset_decllink(type, mlabel)   ctlt_node_type(ctlt_relative(offsetof(type,mlabel)),ctlt_unique) mlabel
 Declare a tree link member.
#define ctl_iset_initlink(type, mlabel, curr)   ctl_tree_node_init(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, &curr->mlabel)
 Initialize a link.
#define ctl_iset_auto(type, mlabel, compare, ilabel)   ctl_tree_auto(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, compare, ilabel )
 Make a tree from auto variables for stack or global use Uses non-standard ANSI extension: non-const initializers.
#define ctl_iset_init(type, mlabel, compare, ilabel)   ctl_tree_init(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, compare, ilabel )
 Make a tree initially empty.
#define ctl_iset_size(type, mlabel, ilabel)   ctl_tree_size(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, ilabel )
 Get size of tree.
#define ctl_iset_insert(type, mlabel, ilabel, data)   (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, insert)( (ilabel), (data) )
 Insert a new member (MUST NOT BE IN ANY OTHER TREE).
#define ctl_iset_find(type, mlabel, ilabel, value)   (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, find)( (ilabel), (value) )
 Find a member, given a template member as a value.
#define ctl_iset_remove(type, mlabel, ilabel, value)   (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, remove)( (ilabel), (value) )
 Remove a member.
#define ctl_iset_unlink(type, mlabel, ilabel, data)   (type*)ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, unlink)( (ilabel), (data) )
 Remove a member.
#define ctl_iset_reset(type, mlabel, ilabel)   ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, reset)( ilabel )
 Remove a all tree members member.
#define ctl_iset_front(type, mlabel, ilabel)   ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, front)( ilabel )
 Get first member of set.
#define ctl_iset_back(type, mlabel, ilabel)   ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, back)( ilabel )
 Get last member of set.
#define ctl_iset_pop_front(type, mlabel, ilabel)   ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, pop_front)( ilabel )
 Get and remove the first member of the set.
#define ctl_iset_pop_back(type, mlabel, ilabel)   ctl_tree_(ctlt_relative(offsetof(type,mlabel)),ctlt_unique, pop_back)( ilabel )
 Get and remove the last member of the set.
#define ctl_iset_foreach(type, mlabel, ilabel, label)
 iset iterator Iterator is available after loop, so these loops should be wrapped in their own { } braces, if you don't want it interfering with other code
#define ctl_iset_foreach_const(type, mlabel, ilabel, label)
 Constant fixed C iset iterator Iterator is available after loop, so these loops should be wrapped in their own { } braces, if you don't want it interfering with other code.
#define ctl_iset_foreach_reverse(type, mlabel, ilabel, label)
 Backward C iset iterator Iterator is available after loop, so these loops should be wrapped in their own { } braces, if you don't want it interfering with other code.
#define ctl_iset_foreach_reverse_const(type, mlabel, ilabel, label)
 Backward, constant C iset iterator Iterator is available after loop, so these loops should be wrapped in their own { } braces, if you don't want it interfering with other code.
#define ctl_iset_from(type, mlabel, ilabel, from, label)
 Iterators for avl data; from some point in tree to the end in a given direction.
#define ctl_iset_from_const(type, mlabel, ilabel, from, label)
 Const data variant.
#define ctl_iset_from_reverse(type, mlabel, ilabel, from, label)
 Iterate backwards variant.
#define ctl_iset_from_reverse_const(type, mlabel, ilabel, from, label)
 Const data variant of reverse variant.
#define ctl_iset_from_to(type, mlabel, ilabel, from, to, label)
 From->to iterators for avl data.
#define ctl_iset_from_to_const(type, mlabel, ilabel, from, to, label)
 Const data variant.
#define ctl_iset_from_to_reverse(type, mlabel, ilabel, from, to, label)
 Iterate backwards variant.
#define ctl_iset_from_to_reverse_const(type, mlabel, ilabel, from, to, label)
 Const data variant of reverse variant.


Detailed Description

"Invasive" set of ordered, unique data

Author:
David Mace Basically, this differs from std::set in a lot of ways, but the most fundamental way is that this integrates the tree node into the data. This change allows us to put a single allocated object into multiple sets without seperately allocated tree nodes.

Definition in file iset.h.


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