-/* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
-** All rights reserved.
+/*
+** Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
+** All rights reserved.
**
-** Authors: Christian Schaefer
+** Authors: Christian Schaefer
+**
+** irop.h operators of firm nodes
+**
+** This module specifies the opcodes possible for ir nodes. Their
+** definition is close to the operations specified in UKA Tech-Report 1999-44
**
*/
# ifndef _IROP_H_
# define _IROP_H_
+# include <stddef.h>
# include "ident.h"
-# include "type.h"
typedef enum {
iro_Block,
iro_Proj, iro_Tuple, iro_Id, iro_Bad
} opcode;
-typedef struct {
- opcode code;
- ident *name;
- size_t attr_size;
- int labeled;
-} ir_op;
+typedef struct ir_op ir_op;
extern ir_op *op_Block;
extern ir_op *op_Cond;
extern ir_op *op_Return;
extern ir_op *op_Raise;
-
extern ir_op *op_Sel;
extern ir_op *op_Const;
extern ir_op *op_Id;
extern ir_op *op_Bad;
-/* create a new ir operation */
-ir_op * new_ir_op (opcode code, ident *name, size_t attr_size, int labeled);
-void init_op (void);
+
+/* Returns the string for the opcode. */
+const char *get_op_name (ir_op *op);
+
+/* Returns the enum for the opcode */
+opcode get_op_code (ir_op *op);
+
+/* Returns the ident for the opcode name */
+ident *get_op_ident (ir_op *op);
+
+/* Returns the attribute size of the opcode.
+ Use not encouraged, internal feature. */
+int get_op_attr_size (ir_op *op);
# endif /* _IROP_H_ */