From 7c6f29083581365894d4521e81867f877f4a5a75 Mon Sep 17 00:00:00 2001 From: =?utf8?q?G=C3=B6tz=20Lindenmaier?= Date: Sat, 17 Apr 2004 13:58:58 +0000 Subject: [PATCH] new access routine [r2671] --- ir/tr/type.c | 11 +++++++++++ ir/tr/type.h | 4 ++++ 2 files changed, 15 insertions(+) diff --git a/ir/tr/type.c b/ir/tr/type.c index 2ce4ff2f6..ac45ba1c5 100644 --- a/ir/tr/type.c +++ b/ir/tr/type.c @@ -660,6 +660,17 @@ entity *get_class_member (type *clss, int pos) { assert(pos >= 0 && pos < get_class_n_members(clss)); return clss->attr.ca.members[pos+1]; } +entity *get_class_member_by_name(type *clss, ident *name) { + int i, n_mem; + assert(clss && (clss->type_op == type_class)); + n_mem = get_class_n_members(clss); + for (i = 0; i < n_mem; ++i) { + entity *mem = get_class_member(clss, i); + if (get_entity_ident(mem) == name) return mem; + } + return NULL; +} + void set_class_member (type *clss, entity *member, int pos) { assert(clss && (clss->type_op == type_class)); assert(pos >= 0 && pos < get_class_n_members(clss)); diff --git a/ir/tr/type.h b/ir/tr/type.h index b2b07af15..3a16942f4 100644 --- a/ir/tr/type.h +++ b/ir/tr/type.h @@ -349,6 +349,10 @@ entity *get_class_member (type *clss, int pos); /** Returns index of mem in clss, -1 if not contained. */ int get_class_member_index(type *clss, entity *mem); +/** Finds the member with name 'name'. If several members with the same + name returns one of them. Returns NULL if no member found. */ +entity *get_class_member_by_name(type *clss, ident *name); + /** Overwrites the member at position pos, 0 <= pos < n_member with the passed entity. */ void set_class_member (type *clss, entity *member, int pos); -- 2.20.1