1 USING: alien compiler kernel kernel-internals math namespaces ;
3 [ alien-unsigned-cell <alien> ]
4 [ >r >r alien-address r> r> set-alien-unsigned-cell ]
8 "void*" define-primitive-type
11 [ set-alien-signed-8 ]
15 "longlong" define-primitive-type
18 [ set-alien-unsigned-8 ]
22 "ulonglong" define-primitive-type
25 [ set-alien-signed-cell ]
29 "long" define-primitive-type
31 [ alien-unsigned-cell ]
32 [ set-alien-unsigned-cell ]
36 "ulong" define-primitive-type
39 [ set-alien-signed-4 ]
43 "int" define-primitive-type
46 [ set-alien-unsigned-4 ]
50 "uint" define-primitive-type
53 [ set-alien-signed-2 ]
57 "short" define-primitive-type
60 [ set-alien-unsigned-2 ]
64 "ushort" define-primitive-type
67 [ set-alien-signed-1 ]
71 "char" define-primitive-type
74 [ set-alien-unsigned-1 ]
78 "uchar" define-primitive-type
80 ! This is a hack; we need better ways of handling arrays
82 [ swap <displaced-alien> alien>char-string ]
83 [ swap <displaced-alien> swap set-alien-unsigned-1 ]
87 "char[]" define-primitive-type
89 [ alien-unsigned-4 zero? not ]
90 [ 1 0 ? set-alien-unsigned-4 ]
94 "bool" define-primitive-type
97 [ >r >r >float r> r> set-alien-float ]
101 "float" define-primitive-type
103 T{ float-regs f 4 } "float" c-type set-c-type-reg-class
104 [ >float ] "float" c-type set-c-type-prep
107 [ >r >r >float r> r> set-alien-double ]
111 "double" define-primitive-type
113 T{ float-regs f 8 } "double" c-type set-c-type-reg-class
114 [ >float ] "double" c-type set-c-type-prep
116 [ alien-unsigned-cell <alien> alien>char-string ]
117 [ >r >r alien-address r> r> set-alien-unsigned-cell ]
121 "char*" define-primitive-type
123 [ string>char-alien ] "char*" c-type set-c-type-prep
125 [ alien-unsigned-cell <alien> alien>u16-string ]
126 [ >r >r alien-address r> r> set-alien-unsigned-cell ]
130 "ushort*" define-primitive-type
132 [ string>u16-alien ] "ushort*" c-type set-c-type-prep