X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Firnodeset.h;h=b279c06343665627f3650b552955ad21ae55444c;hb=5af4cb6fd26054ef16c8da79d534abacb2a32c6e;hp=6e5a51e6a9d86e0d9eaffcf8eea56c52061384b4;hpb=eb08138c6b80c169945568e4414f491a9bc20388;p=libfirm diff --git a/ir/ir/irnodeset.h b/ir/ir/irnodeset.h index 6e5a51e6a..b279c0634 100644 --- a/ir/ir/irnodeset.h +++ b/ir/ir/irnodeset.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -24,23 +24,42 @@ * @brief A nodeset. This should be prefered over a simple pset, because it * tries to guarantee deterministic behavior. (and is faster) * @version $Id$ + * @note Actually the bits to make the behaviour deterministic are not + * implemented yet... */ #ifndef _FIRM_IRNODESET_H_ #define _FIRM_IRNODESET_H_ -#include "irnode.h" +#include "firm_config.h" + +#include "firm_types.h" #include "xmalloc.h" +/* + * sebastian experimental: + * use ordered arrays as node sets. + * the guys here have made good experiences with that. + * Internally we use normal Firm arrays and binary + * search for locating the elements. Using arrays should + * give the sets a small footprint. + */ +#undef IR_NODESET_USE_ORDERED_SETS + #define HashSet ir_nodeset_t #define HashSetIterator ir_nodeset_iterator_t #define ValueType ir_node* #define DO_REHASH + #include "hashset.h" + #undef DO_REHASH #undef ValueType #undef HashSetIterator #undef HashSet +typedef struct ir_nodeset_t ir_nodeset_t; +typedef struct ir_nodeset_iterator_t ir_nodeset_iterator_t; + /** * Initializes a nodeset with default size. * @@ -94,6 +113,7 @@ static INLINE void ir_nodeset_del(ir_nodeset_t *nodeset) { */ int ir_nodeset_insert(ir_nodeset_t *nodeset, ir_node *node); + /** * Removes a node from a nodeset. Does nothing if the nodeset doesn't contain * the node.