* PURPOSE.
*/
-/*
- * 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
+/**
+ * @file
+ * @brief Opcode of types -- private header.
+ * @author Goetz Lindenmaier, Michael Beck
+ * @version $Id$
*/
-#ifndef _TPOP_T_H_
-#define _TPOP_T_H_
+#ifndef FIRM_TR_TPOP_T_H
+#define FIRM_TR_TPOP_T_H
#include <stdlib.h>
#include "tpop.h"
#include "irmode.h"
-/**
- * @file tpop_t.h
- *
- * This file contains the datatypes hidden in tpop.h.
- *
- * @author Goetz Lindenmaier
- * @see tpop.h
- */
-
/** A function called to free attributes of a type. */
typedef void (*free_attrs_func)(ir_type *tp);
* tp_op operations.
*/
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 */
- set_type_mode_func set_type_mode; /**< called to set a ir_mode of a type */
- set_type_size_func set_type_size; /**< called to set the bit size of a type */
- get_n_members_func get_n_members; /**< called to return the number of compound members */
- get_member_func get_member; /**< called to get the pos'th compound member */
- get_member_index_func get_member_index; /**< called to get the index of a compound member */
+ 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 */
+ set_type_mode_func set_type_mode; /**< called to set a ir_mode of a type */
+ set_type_size_func set_type_size; /**< called to set the bit size of a type */
+ get_n_members_func get_n_members; /**< called to return the number of compound members */
+ get_member_func get_member; /**< called to get the pos'th compound member */
+ get_member_index_func get_member_index; /**< called to get the index of a compound member */
} tp_op_ops;
/** possible flags for a type opcode */
enum tp_op_flags_t {
- TP_OP_FLAG_COMPOUND = 1 /**< is a compound type */
+ TP_OP_FLAG_COMPOUND = 1 /**< is a compound type */
};
/** The type opcode */
struct tp_op {
- tp_opcode code; /**< the tpop code */
- ident *name; /**< the name of the type opcode */
- size_t attr_size; /**< the attribute size for a type of this opcode */
- unsigned flags; /**< flags for this opcode */
- tp_op_ops ops; /**< tp_op operations */
+ tp_opcode code; /**< the tpop code */
+ ident *name; /**< the name of the type opcode */
+ size_t attr_size; /**< the attribute size for a type of this opcode */
+ unsigned flags; /**< flags for this opcode */
+ tp_op_ops ops; /**< tp_op operations */
};
/**
- * Returns a new type opcode.
+ * Returns a new type opcode.
*
- * 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.
+ * 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.
*
- * @param code the enum for this type opcode.
- * @param name an ident for the name of the type opcode.
- * @param flags additional flags
- * @param attr_size the size of the attributes necessary for a type with
- * this opcode
- * @param ops the tp_op operations for this type
- * @return A new type opcode.
+ * @param code the enum for this type opcode.
+ * @param name an ident for the name of the type opcode.
+ * @param flags additional flags
+ * @param attr_size the size of the attributes necessary for a type with
+ * this opcode
+ * @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);
void free_tpop(tp_op *tpop);
/**
- * Initialize the tpop module.
+ * Initialize the tpop module.
*
- * Must be called during the initialization of the library. Allocates
- * opcodes and sets the globals that are external visible as specified
- * in tpop.h.
- * Allocates opcodes for classes, struct, method, union, array,
- * enumeration, pointer and primitive and sets the according values.
+ * Must be called during the initialization of the library. Allocates
+ * opcodes and sets the globals that are external visible as specified
+ * in tpop.h.
+ * Allocates opcodes for classes, struct, method, union, array,
+ * enumeration, pointer and primitive and sets the according values.
*/
void init_tpop (void);
/**
- * Finalize the tpop module.
+ * Finalize the tpop module.
*
- * Frees all type opcodes.
+ * Frees all type opcodes.
*/
void finish_tpop(void);
/**
- * Returns the size of the attribute to this kind
- * of type.
- *
- * Internal feature.
+ * Returns the size of the attribute to this kind
+ * of type.
*
- * @param op The type opcode to get the size for.
- * @return The size of the attribute of types with this opcode.
+ * Internal feature.
*
+ * @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 tp_opcode
_get_tpop_code(const tp_op *op) {
- return op->code;
+ return op->code;
}
static INLINE ident *
_get_tpop_ident(const tp_op *op){
- return op->name;
+ return op->name;
}
static INLINE size_t
_get_tpop_attr_size(const tp_op *op) {
- return op->attr_size;
+ 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_ */
+#endif /* FIRM_TR_TPOP_T_H */