*** empty log message ***
[libfirm] / ir / tr / entity.c
1 /* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
2 ** All rights reserved.
3 **
4 ** Authors: Martin Trapp, Christian Schaefer
5 **
6 */
7
8 # include <stdlib.h>
9 # include "entity_t.h"
10 # include "entity.h"
11 # include "mangle.h"
12
13 /*******************************************************************/
14 /** general                                                       **/
15 /*******************************************************************/
16
17 void
18 init_entity (void)
19 {
20 }
21
22 /*******************************************************************/
23 /** ENTITY                                                        **/
24 /*******************************************************************/
25
26 entity *
27 new_entity (type *owner, ident *name, type *type)
28 {
29   entity *res;
30
31   res = (entity *) malloc (sizeof (entity));
32   res->kind = k_entity;
33   assert_legal_owner_of_ent(owner);
34   res->owner = owner;
35   res->name = name;
36   res->type = type;
37   res->ld_name = NULL;
38
39   res->visit = 0;
40
41   /* add entity to the list of entities of the owner. */
42   // res->owner->member[res->owner->n_members] = res;
43   // res->owner->n_members ++;
44
45   return res;
46 }
47
48 #if 0
49 inline char *
50 get_entity_name (entity *ent) {
51   assert (ent);
52   return id_to_str(get_entity_ident(ent));
53   /* GL:
54      entity.c:52: warning: return discards `const' from pointer target type
55      -- ned so guud
56   */
57 }
58 #endif
59
60 ident *
61 get_entity_ident    (entity *ent) {
62   assert(ent);
63   return ent->name;
64 }
65
66 /*
67 void   set_entity_ld_name  (entity *, char *ld_name);
68 void   set_entity_ld_ident (entity *, ident *ld_ident);
69 */
70
71 inline type *
72 get_entity_owner (entity *ent) {
73   return ent->owner;
74 }
75
76 inline void
77 set_entity_owner (entity *ent, type *owner) {
78   assert_legal_owner_of_ent(owner);
79   ent->owner = owner;
80 }
81
82 inline void   /* should this go into type.c? */
83 assert_legal_owner_of_ent(type *owner) {
84   assert (owner->clss.kind   == k_type_class ||
85           owner->uni.kind    == k_type_union ||
86           owner->array.kind  == k_type_array ||
87           owner->method.kind == k_type_method );
88 }
89
90 inline ident *
91 get_entity_ld_name (entity *ent)
92 {
93   if (ent->ld_name != NULL) return ent->ld_name;
94   return mangle_entity (ent);
95 }
96
97 /*
98 char  *get_entity_ld_name  (entity *);
99 void   set_entity_ld_name  (entity *, char *ld_name);
100 void   set_entity_ld_ident (entity *, ident *ld_ident);
101 */
102
103 inline type *
104 get_entity_type (entity *ent) {
105   return ent->type;
106 }
107
108 inline void
109 set_entity_type (entity *ent, type *type) {
110   ent->type = type;
111 }
112
113 inline ir_graph *
114 get_entity_irg(entity *ent) {
115   assert (ent);
116   assert (get_kind(ent->type) == k_type_method);
117   return ent->irg;
118 }
119
120 inline void
121 set_entity_irg(entity *ent, ir_graph *irg) {
122   assert (ent && ent->type);
123   assert (irg);
124   assert (get_kind(ent->type) == k_type_method);
125   ent->irg = irg;
126 }