make allocation C-like
[libfirm] / ir / tr / tpop_t.h
index ec11429..a24b5d7 100644 (file)
+/*
+ * Project:     libFIRM
+ * File name:   ir/tr/tpop_t.h
+ * Purpose:     Opcode of types -- private header.
+ * 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 _IROP_T_H_
-# define _IROP_T_H_
+# ifndef _TPOP_T_H_
+# define _TPOP_T_H_
 
 # include <stddef.h>
 # include "tpop.h"
-/****h* libfirm/tpop_t.h
+/**
+ * @file tpop_t.h
+ *
+ * This file contains the datatypes hidden in tpop.h.
  *
- * NAME
- *   file tpop_t.h
- * COPYRIGHT
- *   (C) 2001 by Universitaet Karlsruhe
- * AUTHORS
- *   Goetz Lindenmaier
- * NOTES
- *   This file contains the datatypes hidden in tpop.h.
- * SEE ALSO
- *   tpop.h
- *****
+ * @autor Goetz Lindenmaier
+ * @see  tpop.h
  */
 
+/** The type opcode */
 struct tp_op {
   tp_opcode code;
   ident *name;
   size_t attr_size;
 };
 
-/****f* tpop/new_tpop
+/**
+ *   Returns a new type opcode.
  *
- * NAME
- *   new_tpop - Returns a new type opcode.
- * NOTE
  *   Allocates a new tp_op struct and initializes it's fields with
  *   the passed values.  This function is only to be used during
  *   initialization of the library.
- * SYNOPSIS
- *   tp_op * new_tpop (tp_opcode code, ident *name, size_t attr_size);
- * INPUTS
- *   code      - the enum for this type opcode.
- *   name      - an ident for the name of the type opcode.
- *   attr_size - the size of the attributes necessary for a type with
- *               this opcode
- * RESULT
- *   A new type opcode.
- ***
+ *
+ *   @param code        the enum for this type opcode.
+ *   @param name        an ident for the name of the type opcode.
+ *   @param attr_size   the size of the attributes necessary for a type with
+ *                      this opcode
+ *   @return A new type opcode.
+ *
  */
-tp_op * new_tpop (tp_opcode code, ident *name, size_t attr_size);
+tp_op *new_tpop (tp_opcode code, ident *name, size_t attr_size);
 
-/****f* tpop/new_tpop
+/**
+ * Free a tpop datastructure.
+ */
+void free_tpop(tp_op* tpop);
+
+/**
+ *   Initialize the tpop module.
  *
- * NAME
- *   init_tpop - Initialize the tpop module.
- * NOTE
  *   Must be called during the initizlization of the library. Allocates
  *   opcodes and sets the globals that are external visible as specified
  *   in tpop.h.
- * SYNOPSIS
- *   void init_tpop (void);
- * INPUTS
- * RESULT
- * SIDE EFFECTS
  *   Allocates opcodes for classes, struct, method, union, array,
  *   enumeration, pointer and primitive and sets the according values.
- ***
  */
 void init_tpop (void);
 
-/****f* tpop/get_topo_attr_size
+/**
+ *  Finalize the topo module.
  *
- * NAME
- *   get_topo_attr_size - Returns the size of the attribute to this kind
+ *  Frees all type opcodes.
+ */
+void finish_tpop(void);
+
+/**
+ *   Returns the size of the attribute to this kind
  *   of type.
- * NOTE
+ *
  *   Internal feature.
- * SYNOPSIS
- *   int get_tpop_attr_size (tp_op *op)
- * INPUTS
- *   op - The type opcode to get the size for.
- * RESULT
- *   The size of the attribute of types with this opcode.
- * SIDE EFFECTS
- ***
+ *
+ *   @param op  The type opcode to get the size for.
+ *   @return The size of the attribute of types with this opcode.
+ *
  */
 int get_tpop_attr_size (tp_op *op);
 
-#endif /* _IROP_T_H_ */
+
+/* ---------------- *
+ * inline functions *
+ * -----------------*/
+
+static INLINE tp_opcode
+__get_tpop_code(tp_op *op) {
+  return op->code;
+}
+
+static INLINE ident *
+__get_tpop_ident(tp_op *op){
+  return op->name;
+}
+
+static INLINE int
+__get_tpop_attr_size(tp_op *op) {
+  return op->attr_size;
+}
+
+#define get_tpop_code(op)      __get_tpop_code(op)
+#define get_tpop_ident(op)     __get_tpop_ident(op)
+#define get_tpop_attr_size(op) __get_tpop_attr_size(op)
+
+#endif /* _TPOP_T_H_ */