2008-10-18 22:14:51 -04:00
|
|
|
! Copyright (C) 2008 Doug Coleman.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-09-17 23:07:21 -04:00
|
|
|
USING: alien alien.c-types alien.data alien.strings
|
2009-09-09 23:33:34 -04:00
|
|
|
combinators.short-circuit fry kernel layouts sequences accessors
|
|
|
|
specialized-arrays ;
|
2008-10-18 22:14:51 -04:00
|
|
|
IN: unix.utilities
|
|
|
|
|
2009-09-09 23:33:34 -04:00
|
|
|
SPECIALIZED-ARRAY: void*
|
|
|
|
|
2008-10-18 22:14:51 -04:00
|
|
|
: more? ( alien -- ? )
|
|
|
|
{ [ ] [ *void* ] } 1&& ;
|
|
|
|
|
|
|
|
: advance ( void* -- void* )
|
|
|
|
cell swap <displaced-alien> ;
|
|
|
|
|
|
|
|
: alien>strings ( alien encoding -- strings )
|
|
|
|
[ [ dup more? ] ] dip
|
|
|
|
'[ [ advance ] [ *void* _ alien>string ] bi ]
|
2009-02-28 16:31:34 -05:00
|
|
|
produce nip ;
|
2008-10-18 22:14:51 -04:00
|
|
|
|
2009-02-06 05:37:28 -05:00
|
|
|
: strings>alien ( strings encoding -- array )
|
|
|
|
'[ _ malloc-string ] void*-array{ } map-as f suffix ;
|