get_member_index type operation added
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 27 Jan 2006 17:00:48 +0000 (17:00 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Fri, 27 Jan 2006 17:00:48 +0000 (17:00 +0000)
[r7278]

ir/tr/tpop.c
ir/tr/tpop_t.h

index 738b8b5..6eb6852 100644 (file)
@@ -63,7 +63,8 @@ static const tp_op_ops
     set_class_mode,
     set_class_size_bits,
     get_class_n_members,
-    get_class_member
+    get_class_member,
+    get_class_member_index
   },
   /** tpop operations for struct types */
   struct_ops = {
@@ -73,7 +74,8 @@ static const tp_op_ops
     set_struct_mode,
     set_struct_size_bits,
     get_struct_n_members,
-    get_struct_member
+    get_struct_member,
+    get_struct_member_index
   },
   /** tpop operations for method types */
   method_ops = {
@@ -83,6 +85,7 @@ static const tp_op_ops
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
   },
   /** tpop operations for union types */
@@ -93,7 +96,8 @@ static const tp_op_ops
     NULL,
     set_union_size_bits,
     get_union_n_members,
-    get_union_member
+    get_union_member,
+    get_union_member_index
   },
   /** tpop operations for array types */
   array_ops = {
@@ -103,6 +107,7 @@ static const tp_op_ops
     NULL,
     set_array_size_bits,
     NULL,
+    NULL,
     NULL
   },
   /** tpop operations for enumeration types */
@@ -113,6 +118,7 @@ static const tp_op_ops
     set_enumeration_mode,
     NULL,
     NULL,
+    NULL,
     NULL
   },
   /** tpop operations for pointer types */
@@ -123,6 +129,7 @@ static const tp_op_ops
     set_pointer_mode,
     NULL,
     NULL,
+    NULL,
     NULL
   },
   /** tpop operations for pseudo types */
@@ -133,6 +140,7 @@ static const tp_op_ops
     NULL,
     set_default_size_bits,
     NULL,
+    NULL,
     NULL
   },
   /** tpop operations for primitive types */
@@ -143,6 +151,7 @@ static const tp_op_ops
     NULL,
     NULL,
     NULL,
+    NULL,
     NULL
   };
 
index 87b8718..91c4829 100644 (file)
@@ -48,10 +48,11 @@ typedef int (*get_n_members_func)(const ir_type *tp);
 /** A function called to get the pos'th compound member */
 typedef entity *(*get_member_func)(const ir_type *tp, int pos);
 
+typedef int (*get_member_index_func)(const ir_type *tp, entity *member);
+
 /** A function called to insert an entity into the type */
 typedef void (*insert_entity_func)(ir_type *tp, entity *member);
 
-
 /**
  * tp_op operations.
  */
@@ -63,6 +64,7 @@ typedef struct _tp_op_ops {
   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 */