becopyheur2: Avoid unnecessary copies of the admissible registers.
[libfirm] / ir / tr / tpop_t.h
index 1a5eead..490f74a 100644 (file)
@@ -1,27 +1,12 @@
 /*
- * Copyright (C) 1995-2008 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.
+ * Copyright (C) 2012 University of Karlsruhe.
  */
 
 /**
  * @file
  * @brief   Opcode of types -- private header.
  * @author  Goetz Lindenmaier, Michael Beck
- * @version $Id$
  */
 #ifndef FIRM_TR_TPOP_T_H
 #define FIRM_TR_TPOP_T_H
@@ -32,6 +17,9 @@
 #include "typerep.h"
 #include "irmode.h"
 
+#define get_tpop_code(op)      _get_tpop_code(op)
+#define get_tpop_ident(op)     _get_tpop_ident(op)
+
 /** A function called to free attributes of a type. */
 typedef void (*free_attrs_func)(ir_type *tp);
 
@@ -48,12 +36,12 @@ typedef void (*set_type_mode_func)(ir_type *tp, ir_mode *m);
 typedef void (*set_type_size_func)(ir_type *tp, unsigned size);
 
 /** A function called to get the number of compound members */
-typedef int (*get_n_members_func)(const ir_type *tp);
+typedef size_t (*get_n_members_func)(const ir_type *tp);
 
 /** A function called to get the pos'th compound member */
-typedef ir_entity *(*get_member_func)(const ir_type *tp, int pos);
+typedef ir_entity *(*get_member_func)(const ir_type *tp, size_t pos);
 
-typedef int (*get_member_index_func)(const ir_type *tp, ir_entity *member);
+typedef size_t (*get_member_index_func)(const ir_type *tp, ir_entity *member);
 
 /** A function called to insert an entity into the type */
 typedef void (*insert_entity_func)(ir_type *tp, ir_entity *member);
@@ -61,7 +49,7 @@ typedef void (*insert_entity_func)(ir_type *tp, ir_entity *member);
 /**
  * tp_op operations.
  */
-typedef struct _tp_op_ops {
+typedef struct tp_op_ops {
        free_attrs_func         free_attrs;         /**< Called to free the attributes of a type. */
        free_entities_func      free_entities;      /**< Called to free the owned entities of a type. */
        free_auto_entities_func free_auto_entities; /**< Called to free the automatic allocated entities of a type. */
@@ -89,7 +77,7 @@ struct tp_op {
 /**
  * Returns a new type opcode.
  *
- * Allocates a new tp_op struct and initializes it's fields with
+ * Allocates a new tp_op struct and initializes its fields with
  * the passed values.  This function is only to be used during
  * initialization of the library.
  *
@@ -101,13 +89,12 @@ struct tp_op {
  * @param ops         the tp_op operations for this type
  * @return A new type opcode.
  */
-tp_op *new_tpop (tp_opcode code, ident *name, unsigned flags, size_t attr_size,
-                 const tp_op_ops *ops);
+const tp_op *new_tpop (tp_opcode code, ident *name, unsigned flags, size_t attr_size, const tp_op_ops *ops);
 
 /**
- * Free a tpop datastructure.
+ * Free a tpop data structure.
  */
-void free_tpop(tp_op *tpop);
+void free_tpop(const tp_op *tpop);
 
 /**
  * Initialize the tpop module.
@@ -118,7 +105,7 @@ void free_tpop(tp_op *tpop);
  * Allocates opcodes for classes, struct, method, union, array,
  * enumeration, pointer and primitive and sets the according values.
  */
-void init_tpop (void);
+void init_tpop(void);
 
 /**
  * Finalize the tpop module.
@@ -136,30 +123,23 @@ void finish_tpop(void);
  * @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 (const tp_op *op);
-
+static inline size_t get_tpop_attr_size(const tp_op *op)
+{
+       return op->attr_size;
+}
 
 /* ---------------- *
  * inline functions *
  * -----------------*/
 
-static inline tp_opcode
-_get_tpop_code(const tp_op *op) {
+static inline tp_opcode _get_tpop_code(const tp_op *op)
+{
        return op->code;
 }
 
-static inline ident *
-_get_tpop_ident(const tp_op *op){
+static inline ident *_get_tpop_ident(const tp_op *op)
+{
        return op->name;
 }
 
-static inline size_t
-_get_tpop_attr_size(const 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 /* FIRM_TR_TPOP_T_H */