+/*
+ * Project: libFIRM
+ * File name: ir/tr/typegmod.h
+ * Purpose: Functionality to modify the type graph.
+ * Author: Goetz Lindenmaier
+ * Modified by:
+ * Created:
+ * CVS-ID: $Id$
+ * Copyright: (c) 2001-2003 Universität Karlsruhe
+ * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE.
+ */
+#ifndef _TYPEGMOD_H_
+#define _TYPEGMOD_H_
-# ifndef _TYPEGMOD_H_
-# define _TYPEGMOD_H_
-
-# include "type.h"
+#include "firm_types.h"
-/****h* libfirm/typegmod
+/**
*
- * NAME
- * file typegmod.h
- * COPYRIGHT
- * (C) 2001 by Universitaet Karlsruhe
- * AUTHORS
- * Goetz Lindenmaier
- * NOTES
+ * @file typegmod.h
* This module supplies routines that support changing the type graph.
- *****
*/
-/****f* tpop/exchange_types
+/** Replaces one type by the other.
+ *
+ * Old type is replaced by new_type. All references to old_type
+ * now point to new_type. The memory for the old type is destroyed,
+ * but still used. Therefore it is not freed.
+ * All referenced to this memory will be lost after a certain while.
+ * An exception is the list of types in irp (irprog.h).
+ * In the future there might be a routine to recover the memory, but
+ * this will be at considerable runtime cost.
+ *
+ * @param old_type - The old type that shall be replaced by the new type.
+ * @param new_type - The new type that will replace old_type.
*
- * NAME
- * exchange_types -- replaces one type by the other.
- * SYNOPSIS
- * void exchange_types(type *old_type, type *new_type);
- * INPUTS
- * The old type that shall be replaced by the new type.
- * SIDE EFFECTS
- * Old type is replaced by new_type. All references to old_type
- * now point to new_type. The memory for the old type is destroyed,
- * but still used. Therefore it is not freed. The memory will
- * be lost after a certain while.
- * In the future there might be a routine to recover the memory, but
- * this will be at considerable runtime cost.
- ***
*/
-inline void exchange_types(type *old_type, type *new_type);
+void exchange_types(ir_type *old_type, ir_type *new_type);
+/** Skip id types until a useful type is reached.
+ *
+ * @param tp - A type of arbitrary kind.
+ *
+ * @return
+ * tp if it is not an id type.
+ * If tp is an id type returns the real type it stands for.
+ */
+ir_type *skip_tid(ir_type *tp);
-# endif /*_TYPEGMOD_H_ */
+#endif /*_TYPEGMOD_H_ */