Initial revision
[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.h"
10 # include "mangle.h"
11
12 /*******************************************************************/
13 /** general                                                       **/
14 /*******************************************************************/
15
16 void
17 init_entity (void)
18 {
19 }
20
21 /*******************************************************************/
22 /** ENTITY                                                        **/
23 /*******************************************************************/
24
25 entity *
26 // new_entity (type_class *owner, ident *name, type *type)
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 /*
49   char  *get_entity_name     (entity *);  */
50
51 ident *
52 get_entity_ident    (entity *ent) {
53   assert(ent);
54   return ent->name;
55 }
56 /*
57 void   set_entity_ld_name  (entity *, char *ld_name);
58 void   set_entity_ld_ident (entity *, ident *ld_ident);
59 */
60
61 //inline type_class *
62 inline type *
63 get_entity_owner (entity *entity) {
64   return entity->owner;
65 }
66
67 inline void
68 // set_entity_owner (entity *entity, type_class *owner) {
69 set_entity_owner (entity *entity, type *owner) {
70   assert_legal_owner_of_ent(owner);
71   entity->owner = owner;
72 }
73
74 inline void   /* should this go into type.c? */
75 assert_legal_owner_of_ent(type *type) {
76   assert (type->clss.kind   == k_type_class ||
77           type->uni.kind    == k_type_union ||
78           type->array.kind  == k_type_array ||
79           type->method.kind == k_type_method );
80 }
81
82 inline ident *
83 get_entity_ld_name (entity *ent)
84 {
85   if (ent->ld_name != NULL) return ent->ld_name;
86   return mangle_entity (ent);
87 }
88
89 /*
90 char  *get_entity_ld_name  (entity *);
91 void   set_entity_ld_name  (entity *, char *ld_name);
92 void   set_entity_ld_ident (entity *, ident *ld_ident);
93 */
94
95 inline type *
96 get_entity_type (entity *entity) {
97   return entity->type;
98 }
99
100 inline void
101 set_entity_type (entity *entity, type *type) {
102   entity->type = type;
103 }