+/**
+ * @file
+ * @brief Some often needed tool-functions
+ * @author Michael Beck
+ * @version $Id$
+ */
+#ifndef FIRM_COMMON_IRTOOLS_H
+#define FIRM_COMMON_IRTOOLS_H
+
+#include "firm_config.h"
+#include "firm_types.h"
+
+#ifdef WITH_LIBCORE
+#include <libcore/lc_opts.h>
+lc_opt_entry_t *firm_opt_get_root(void);
+#endif
+
+#include "pset.h"
+
+#undef MIN
+#undef MAX
+#define MAX(x, y) ((x) > (y) ? (x) : (y))
+#define MIN(x, y) ((x) < (y) ? (x) : (y))
+
+/**
+ * Three valued compare as demanded by e.g. qsort(3)
+ * @param c A number.
+ * @param d Another number.
+ * @return 0 if c == d, -1 if c < d, 1 if c > d.
+ */
+#define QSORT_CMP(c, d) (((c) > (d)) - ((c) < (d)))
+
+
+/**
+ * convert an integer into pointer
+ */
+#define INT_TO_PTR(v) ((void *)((char *)0 + (v)))
+
+/**
+ * convert a pointer into an integer
+ */
+#define PTR_TO_INT(v) ((int)((char *)(v) - (char *)0))
+
+/**
+ * Dump a pset containing Firm objects.
+ */
+void firm_pset_dump(pset *set);