alien.marshall: rewrote bool marshalling
parent
c0714c6135
commit
c5e30fee3e
|
@ -14,8 +14,8 @@ specialized-arrays.ulonglong specialized-arrays.ushort strings
|
|||
unix.utilities vocabs.parser words libc.private struct-arrays ;
|
||||
IN: alien.marshall
|
||||
|
||||
<< primitive-types [ "void*" = not ] filter
|
||||
[ define-primitive-marshallers ] each >>
|
||||
<< primitive-types [ [ "void*" = ] [ "bool" = ] bi or not ]
|
||||
filter [ define-primitive-marshallers ] each >>
|
||||
|
||||
TUPLE: alien-wrapper { underlying alien } ;
|
||||
TUPLE: struct-wrapper < alien-wrapper disposed ;
|
||||
|
@ -56,6 +56,32 @@ M: struct-wrapper unmarshall-cast ;
|
|||
: marshall-char**-or-strings ( n/string -- alien )
|
||||
[ (marshall-char**-or-strings) ] ptr-pass-through ;
|
||||
|
||||
: marshall-bool ( ? -- n )
|
||||
>boolean [ 1 ] [ 0 ] if ;
|
||||
|
||||
: (marshall-bool*) ( ?/seq -- alien )
|
||||
[ marshall-bool <bool> malloc-byte-array ]
|
||||
[ >bool-array malloc-underlying ]
|
||||
marshall-x* ;
|
||||
|
||||
: marshall-bool* ( ?/seq -- alien )
|
||||
[ (marshall-bool*) ] ptr-pass-through ;
|
||||
|
||||
: (marshall-bool**) ( seq -- alien )
|
||||
[ marshall-bool* ] map >void*-array malloc-underlying ;
|
||||
|
||||
: marshall-bool** ( seq -- alien )
|
||||
[ (marshall-bool**) ] ptr-pass-through ;
|
||||
|
||||
: unmarshall-bool ( n -- ? )
|
||||
0 = not ;
|
||||
|
||||
: unmarshall-bool* ( alien -- ? )
|
||||
*bool unmarshall-bool ;
|
||||
|
||||
: unmarshall-bool*-free ( alien -- ? )
|
||||
[ *bool unmarshall-bool ] keep add-malloc free ;
|
||||
|
||||
: primitive-marshaller ( type -- quot/f )
|
||||
{
|
||||
{ "bool" [ [ marshall-bool ] ] }
|
||||
|
@ -138,9 +164,6 @@ M: struct-wrapper unmarshall-cast ;
|
|||
: unmarshall-char*-to-string-free ( alien -- string )
|
||||
[ unmarshall-char*-to-string ] keep add-malloc free ;
|
||||
|
||||
: unmarshall-bool ( n -- ? )
|
||||
0 = not ;
|
||||
|
||||
: primitive-unmarshaller ( type -- quot/f )
|
||||
{
|
||||
{ "bool" [ [ unmarshall-bool ] ] }
|
||||
|
|
Loading…
Reference in New Issue