]> gitweb.factorcode.org Git - factor.git/blob - basis/alien/utilities/utilities.factor
factor: trim using lists
[factor.git] / basis / alien / utilities / utilities.factor
1 ! Copyright (C) 2008 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.data alien.strings
4 combinators.short-circuit kernel layouts sequences
5 specialized-arrays ;
6 IN: alien.utilities
7
8 SPECIALIZED-ARRAY: void*
9
10 : more? ( alien -- ? )
11     { [ ] [ void* deref ] } 1&& ;
12
13 : advance ( void* -- void* )
14     cell swap <displaced-alien> ;
15
16 : alien>strings ( alien encoding -- strings )
17     [ [ dup more? ] ] dip
18     '[ [ advance ] [ void* deref _ alien>string ] bi ]
19     produce nip ;
20
21 : strings>alien ( strings encoding -- array )
22     '[ _ malloc-string ] void*-array{ } map-as f suffix ;