adedd missing assert.h
[libfirm] / ir / tv / tv_t.h
1 /*
2  * Project:     libFIRM
3  * File name:   ir/tv/tv_t.h
4  * Purpose:     Representation of and static computations on target machine
5  *              values -- private header.
6  * Author:      Mathias Heil
7  * Modified by:
8  * Created:
9  * CVS-ID:      $Id$
10  * Copyright:   (c) 2003 Universität Karlsruhe
11  * Licence:     This file protected by GPL -  GNU GENERAL PUBLIC LICENSE.
12  */
13 #ifndef _TV_T_H_
14 #define _TV_T_H_
15
16 #include "firm_config.h"
17
18 #include <assert.h>
19 #include "entity.h"
20 #include "irmode.h"
21 #include "tv.h"
22
23 /**
24  * Initialization of the tarval module.
25  *
26  * Call before init_mode().
27  */
28 void init_tarval_1(void);
29
30 /**
31  * Initialization of the tarval module.
32  *
33  * Call after init_mode().
34  */
35 void init_tarval_2(void);
36
37 /**
38  * Free all memory occupied by the tarval module.
39  */
40 void finish_tarval(void);
41
42 /**
43  * This struct represents the afore mentioned tarvals.
44  *
45  * A tarval struct consists of an internal representation of the
46  * value and some additional fields further describing the value.
47  *
48  * ATTRIBUTES:
49  *   - ir_mode *mode     The mode of the stored value
50  *   - void *value       The internal representation
51  *
52  * @sa
53  *   irmode.h for predefined modes
54  */
55 struct tarval {
56   firm_kind kind;         /**< must be k_tarval */
57   ir_mode   *mode;        /**< the mode of the stored value */
58   const void *value;      /**< the value stored in an internal way... */
59   unsigned int length;    /**< the length of the stored value */
60 };
61
62 /** remove tarval representing an entity that is about to be destroyed */
63 void free_tarval_entity(entity *ent);
64
65 /* inline functions */
66 /*
67  * Access routines for tarval fields ========================================
68  */
69 static INLINE ir_mode *
70 _get_tarval_mode(const tarval *tv) {
71   assert(tv);
72   return tv->mode;
73 }
74
75 static INLINE tarval *
76 _get_tarval_bad(void) {
77   return tarval_bad;
78 }
79
80 static INLINE tarval *
81 _get_tarval_undefined(void) {
82   return tarval_undefined;
83 }
84
85 static INLINE tarval *
86 _get_tarval_b_false(void) {
87   return tarval_b_false;
88 }
89
90 static INLINE tarval *
91 _get_tarval_b_true(void) {
92   return tarval_b_true;
93 }
94
95 static INLINE tarval *
96 _get_tarval_P_void(void) {
97   return tarval_P_void;
98 }
99
100 #define get_tarval_mode(tv)     _get_tarval_mode(tv)
101 #define get_tarval_bad()        _get_tarval_bad()
102 #define get_tarval_undefined()  _get_tarval_undefined()
103 #define get_tarval_b_false()    _get_tarval_b_false()
104 #define get_tarval_b_true()     _get_tarval_b_true()
105 #define get_tarval_P_void()     _get_tarval_P_void()
106
107 #endif /* _TV_T_H_ */