]> gitweb.factorcode.org Git - factor.git/blob - core/compiler/alien/primitive-types.factor
b7a07d722d7b21b2716c501204dcd423afb3829e
[factor.git] / core / compiler / alien / primitive-types.factor
1 USING: alien compiler kernel kernel-internals math namespaces ;
2
3 [ alien-unsigned-cell <alien> ]
4 [ >r >r alien-address r> r> set-alien-unsigned-cell ]
5 bootstrap-cell
6 "box_alien"
7 "unbox_alien"
8 "void*" define-primitive-type
9
10 [ alien-signed-8 ]
11 [ set-alien-signed-8 ]
12 8
13 "box_signed_8"
14 "unbox_signed_8"
15 "longlong" define-primitive-type
16
17 [ alien-unsigned-8 ]
18 [ set-alien-unsigned-8 ]
19 8
20 "box_unsigned_8"
21 "unbox_unsigned_8"
22 "ulonglong" define-primitive-type
23
24 [ alien-signed-cell ]
25 [ set-alien-signed-cell ]
26 bootstrap-cell
27 "box_signed_cell"
28 "unbox_signed_cell"
29 "long" define-primitive-type
30
31 [ alien-unsigned-cell ]
32 [ set-alien-unsigned-cell ]
33 bootstrap-cell
34 "box_unsigned_cell"
35 "unbox_unsigned_cell"
36 "ulong" define-primitive-type
37
38 [ alien-signed-4 ]
39 [ set-alien-signed-4 ]
40 4
41 "box_signed_4"
42 "unbox_signed_4"
43 "int" define-primitive-type
44
45 [ alien-unsigned-4 ]
46 [ set-alien-unsigned-4 ]
47 4
48 "box_unsigned_4"
49 "unbox_unsigned_4"
50 "uint" define-primitive-type
51
52 [ alien-signed-2 ]
53 [ set-alien-signed-2 ]
54 2
55 "box_signed_2"
56 "unbox_signed_2"
57 "short" define-primitive-type
58
59 [ alien-unsigned-2 ]
60 [ set-alien-unsigned-2 ]
61 2
62 "box_unsigned_2"
63 "unbox_unsigned_2"
64 "ushort" define-primitive-type
65
66 [ alien-signed-1 ]
67 [ set-alien-signed-1 ]
68 1
69 "box_signed_1"
70 "unbox_signed_1"
71 "char" define-primitive-type
72
73 [ alien-unsigned-1 ]
74 [ set-alien-unsigned-1 ]
75 1
76 "box_unsigned_1"
77 "unbox_unsigned_1"
78 "uchar" define-primitive-type
79
80 ! This is a hack; we need better ways of handling arrays
81 ! inline structs
82 [ swap <displaced-alien> alien>char-string ]
83 [ swap <displaced-alien> swap set-alien-unsigned-1 ]
84 1
85 f
86 f
87 "char[]" define-primitive-type
88
89 [ alien-unsigned-4 zero? not ]
90 [ 1 0 ? set-alien-unsigned-4 ]
91 4
92 "box_boolean"
93 "unbox_boolean"
94 "bool" define-primitive-type
95
96 [ alien-float ]
97 [ >r >r >float r> r> set-alien-float ]
98 4
99 "box_float"
100 "unbox_float"
101 "float" define-primitive-type
102
103 T{ float-regs f 4 } "float" c-type set-c-type-reg-class
104 [ >float ] "float" c-type set-c-type-prep
105
106 [ alien-double ]
107 [ >r >r >float r> r> set-alien-double ]
108 8
109 "box_double"
110 "unbox_double"
111 "double" define-primitive-type
112
113 T{ float-regs f 8 } "double" c-type set-c-type-reg-class
114 [ >float ] "double" c-type set-c-type-prep
115
116 [ alien-unsigned-cell <alien> alien>char-string ]
117 [ >r >r alien-address r> r> set-alien-unsigned-cell ]
118 bootstrap-cell
119 "box_char_string"
120 "unbox_alien"
121 "char*" define-primitive-type
122
123 [ string>char-alien ] "char*" c-type set-c-type-prep
124
125 [ alien-unsigned-cell <alien> alien>u16-string ]
126 [ >r >r alien-address r> r> set-alien-unsigned-cell ]
127 4
128 "box_u16_string"
129 "unbox_alien"
130 "ushort*" define-primitive-type
131
132 [ string>u16-alien ] "ushort*" c-type set-c-type-prep