dup "c-type" word-prop resolve-typedef
[ ] [ no-c-type ] ?if ;
-
GENERIC: c-type-class ( name -- class )
M: abstract-c-type c-type-class class>> ;
: set-alien-element ( value n c-ptr c-type -- )
array-accessor set-alien-value ; inline
-PROTOCOL: c-type-protocol
+PROTOCOL: c-type-protocol
c-type-class
c-type-boxed-class
c-type-boxer-quot
SYMBOLS:
ptrdiff_t intptr_t uintptr_t size_t
- c-string ;
+ c-string int8_t uint8_t int16_t uint16_t
+ int32_t uint32_t int64_t uint64_t ;
CONSTANT: primitive-types
{
"to_signed_4" >>unboxer
[ >fixnum ] >>unboxer-quot
\ int typedef
-
+
! 64bit-vm uint
<c-type>
fixnum >>class
"to_fixnum" >>unboxer
[ >integer ] >>unboxer-quot
\ int typedef
-
+
! 32bit-vm uint
<c-type>
integer >>class
object >>boxed-class
\ bool typedef
+ \ char lookup-c-type int8_t typedef
+ \ short lookup-c-type int16_t typedef
+ \ int lookup-c-type int32_t typedef
+ \ longlong lookup-c-type int64_t typedef
+
+ \ uchar lookup-c-type uint8_t typedef
+ \ ushort lookup-c-type uint16_t typedef
+ \ uint lookup-c-type uint32_t typedef
+ \ ulonglong lookup-c-type uint64_t typedef
+
] with-compilation-unit
M: char-16-rep rep-component-type drop char ;
FROM: sequences => append ;
IN: unix.types
-TYPEDEF: char int8_t
-TYPEDEF: short int16_t
-TYPEDEF: int int32_t
-TYPEDEF: longlong int64_t
-
-TYPEDEF: uchar uint8_t
-TYPEDEF: ushort uint16_t
-TYPEDEF: uint uint32_t
-TYPEDEF: ulonglong uint64_t
-
TYPEDEF: uchar u_int8_t
TYPEDEF: ushort u_int16_t
TYPEDEF: uint u_int32_t
TYPEDEF: uint socklen_t
TYPEDEF: __uint64_t fsblkcnt_t
-TYPEDEF: fsblkcnt_t __fsblkcnt_t
+TYPEDEF: fsblkcnt_t __fsblkcnt_t
TYPEDEF: __uint64_t fsfilcnt_t
TYPEDEF: fsfilcnt_t __fsfilcnt_t
TYPEDEF: __uint64_t rlim_t