commit b9a6331f4400d1372d2747c8dd371fefe6576a60
parent 401efa0d74d58e83b9f8754f738679c132742123
Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
Date: Fri, 2 May 2014 20:10:14 +0200
Move type definition constant to a common header
These definitions maybe are going to be used in both programs,
so the best option is to remove hardcoded constant and put them
in a common place.
Diffstat:
M | cc1/cc1.h | | | 15 | +-------------- |
M | cc1/types.c | | | 46 | +++++++++++++++++++++++----------------------- |
M | inc/cc.h | | | 48 | ++++++++++++++++++++++++++++++++++++++++++++++++ |
3 files changed, 72 insertions(+), 37 deletions(-)
diff --git a/cc1/cc1.h b/cc1/cc1.h
@@ -2,6 +2,7 @@
#define CC1_H
+
struct user_opt {
unsigned char implicit;
unsigned char mixdcls;
@@ -31,20 +32,6 @@ enum {
struct funpars;
struct symbol;
-#define RANK_BOOL 0
-#define RANK_SCHAR 1
-#define RANK_UCHAR 2
-#define RANK_SHORT 3
-#define RANK_USHORT 4
-#define RANK_INT 5
-#define RANK_UINT 6
-#define RANK_LONG 7
-#define RANK_ULONG 8
-#define RANK_LLONG 9
-#define RANK_ULLONG 10
-#define RANK_FLOAT 11
-#define RANK_DOUBLE 12
-#define RANK_LDOUBLE 13
struct ctype {
uint8_t op; /* type builder operator */
diff --git a/cc1/types.c b/cc1/types.c
@@ -12,104 +12,104 @@
Type
*voidtype = &(Type) {
.op = VOID,
- .letter = 'W'
+ .letter = L_VOID
},
*pvoidtype = &(Type) {
.op = PTR,
- .letter = 'R'
+ .letter = L_POINTER
},
*booltype = &(Type) {
.op = INT,
- .letter = 'B',
+ .letter = L_BOOL,
.defined = 1,
.u.rank = RANK_BOOL
},
*schartype = &(Type) {
.op = INT,
- .letter = 'M',
+ .letter = L_SCHAR,
.defined = 1,
.u.rank = RANK_SCHAR
},
*uchartype = &(Type) {
.op = INT,
- .letter = 'C',
+ .letter = L_UCHAR,
.sign = 1,
.defined = 1,
.u.rank = RANK_UCHAR
},
*chartype = &(Type) {
.op = INT,
- .letter = 'C',
+ .letter = L_CHAR,
.sign = 1,
.defined = 1,
- .u.rank = RANK_UCHAR
+ .u.rank = RANK_CHAR
},
*ushortype = &(Type) {
.op = INT,
- .letter = 'E',
+ .letter = L_USHORT,
.defined = 1,
.u.rank = RANK_USHORT
},
*shortype = &(Type) {
.op = INT,
- .letter = 'K',
+ .letter = L_SHORT,
.defined = 1,
.u.rank = RANK_SHORT
},
*uinttype = &(Type) {
.op = INT,
- .letter = 'U',
+ .letter = L_UINT,
.sign = 1,
.defined = 1,
.u.rank = RANK_UINT
},
*inttype = &(Type) {
.op = INT,
- .letter = 'I',
+ .letter = L_INT,
.defined = 1,
.u.rank = RANK_INT
},
*longtype = &(Type) {
.op = INT,
- .letter = 'L',
+ .letter = L_LONG,
.defined = 1,
.u.rank = RANK_LONG
},
*ulongtype = &(Type) {
.op = INT,
- .letter = 'Z',
+ .letter = L_ULONG,
.sign = 1,
.defined = 1,
.u.rank = RANK_ULONG
},
*ullongtype = &(Type) {
.op = INT,
- .letter = 'O',
+ .letter = L_ULLONG,
.sign = 1,
.defined = 1,
.u.rank = RANK_ULLONG
},
*llongtype = &(Type) {
.op = INT,
- .letter = 'J',
+ .letter = L_LLONG,
.defined = 1,
.u.rank = RANK_LLONG
},
*floattype = &(Type) {
.op = FLOAT,
- .letter = 'F',
+ .letter = L_FLOAT,
.defined = 1,
.u.rank = RANK_FLOAT
},
*doubletype = &(Type) {
.op = FLOAT,
- .letter = 'D',
+ .letter = L_DOUBLE,
.defined = 1,
.u.rank = RANK_DOUBLE
},
*ldoubletype = &(Type) {
.op = FLOAT,
- .letter = 'H',
+ .letter = L_LDOUBLE,
.defined = 1,
.u.rank = RANK_LDOUBLE
};
@@ -164,11 +164,11 @@ mktype(Type *tp, uint8_t op,
}
switch (op) {
- case PTR: letter = 'R'; break;
- case FTN: letter = 'F'; break;
- case ARY: letter = 'V'; break;
- case ENUM: letter = 'E'; break;
- case STRUCT: letter = 'S'; break;
+ case PTR: letter = L_POINTER; break;
+ case FTN: letter = L_FUNCTION; break;
+ case ARY: letter = L_ARRAY; break;
+ case ENUM: letter = L_INT; break;
+ case STRUCT: letter = L_STRUCT; break;
default: letter = tp->letter;
}
bp = xmalloc(sizeof(*bp));
diff --git a/inc/cc.h b/inc/cc.h
@@ -6,6 +6,54 @@
#include <stdbool.h>
#endif
+#define RANK_BOOL 0
+#define RANK_SCHAR 1
+#define RANK_UCHAR 2
+#define RANK_CHAR 3
+#define RANK_SHORT 4
+#define RANK_USHORT 5
+#define RANK_INT 6
+#define RANK_UINT 7
+#define RANK_LONG 8
+#define RANK_ULONG 9
+#define RANK_LLONG 10
+#define RANK_ULLONG 11
+#define RANK_FLOAT 12
+#define RANK_DOUBLE 13
+#define RANK_LDOUBLE 15
+
+#define L_INT8 'C'
+#define L_INT16 'I'
+#define L_INT32 'L'
+#define L_INT64 'Q'
+#define L_UINT8 'M'
+#define L_UINT16 'N'
+#define L_UINT32 'Z'
+#define L_UINT64 'O'
+
+#define L_VOID '0'
+#define L_POINTER 'P'
+#define L_FUNCTION 'F'
+#define L_ARRAY 'V'
+#define L_UNION 'U'
+#define L_STRUCT 'S'
+
+#define L_SCHAR L_INT8
+#define L_UCHAR L_UINT8
+#define L_CHAR L_UINT8
+#define L_SHORT L_INT16
+#define L_USHORT L_UINT16
+#define L_INT L_INT16
+#define L_UINT L_UINT16
+#define L_LONG L_INT32
+#define L_ULONG L_UINT32
+#define L_LLONG L_INT64
+#define L_ULLONG L_UINT64
+#define L_BOOL 'B'
+#define L_FLOAT 'J'
+#define L_DOUBLE 'D'
+#define L_LDOUBLE 'H'
+
extern void die(const char *fmt, ...);
extern void *xmalloc(size_t size);
extern void *xcalloc(size_t nmemb, size_t size);