added a callback function to check whether a given entity is a allocation call
[libfirm] / ir / adt / pset.h
index 6e06bde..6c6e4c0 100644 (file)
@@ -1,17 +1,33 @@
 /*
- * Project:     libFIRM
- * File name:   ir/adt/pset.h
- * Purpose:     Declarations for pset.
- * Author:      Markus Armbruster
- * Modified by:
- * Created:     1999 by getting from fiasco
- * CVS-ID:      $Id$
- * Copyright:   (c) 1995, 1996 Markus Armbruster
- * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
+ * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ *
+ * This file is part of libFirm.
+ *
+ * This file may be distributed and/or modified under the terms of the
+ * GNU General Public License version 2 as published by the Free Software
+ * Foundation and appearing in the file LICENSE.GPL included in the
+ * packaging of this file.
+ *
+ * Licensees holding valid libFirm Professional Edition licenses may use
+ * this file in accordance with the libFirm Commercial License.
+ * Agreement provided with the Software.
+ *
+ * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+ * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE.
  */
 
-#ifndef _PSET_H
-#define _PSET_H
+/**
+ * @file
+ * @brief      optimized version of set for sets containing only pointers
+ *             (deprecated)
+ * @author     Markus Armbruster
+ * @version    $Id$
+ * @note       This code has been deprecated. Use pset_new or cpset for new
+ *             code.
+ */
+#ifndef FIRM_ADT_PSET_H
+#define FIRM_ADT_PSET_H
 
 #include <stddef.h>
 
@@ -30,7 +46,7 @@ int pset_default_ptr_cmp(const void *x, const void *y);
  * The abstract type of a pset (Set of pointers).
  *
  * This kind of sets stores only pointer to elements, the elements itself
- * must be stored somewere else.
+ * must be stored somewhere else.
  *
  * @see set
  */
@@ -149,6 +165,7 @@ pset_entry *pset_hinsert (pset *pset, const void *key, unsigned hash);
  *
  * @remark
  *    The current implementation did not allow to remove non-existing elements.
+ *    @@@ so, does it do now?
  *    Further, it is allowed to remove elements during an iteration
  *    including the current one.
  */
@@ -182,6 +199,14 @@ void *pset_next (pset *pset);
  */
 void pset_break (pset *pset);
 
+/**
+ * Iterates oven an pset.
+ *
+ * @param pset   the pset
+ * @param entry  the iterator
+ */
+#define foreach_pset(pset, entry) for (entry = pset_first(pset); entry; entry = pset_next(pset))
+
 /**
  * Inserts all elements of the pointer set src into
  * the set target (union).