Merge branch 'master' of git://factorcode.org/git/factor
[factor/jcg.git] / core / byte-arrays / byte-arrays.factor
blobf0d188ce4a705855a356eb3b07c3e332a55e090a
1 ! Copyright (C) 2007, 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel kernel.private alien.accessors sequences
4 sequences.private math ;
5 IN: byte-arrays
7 M: byte-array clone (clone) ;
8 M: byte-array length length>> ;
9 M: byte-array nth-unsafe swap >fixnum alien-unsigned-1 ;
10 M: byte-array set-nth-unsafe swap >fixnum set-alien-unsigned-1 ;
11 : >byte-array ( seq -- byte-array ) B{ } clone-like ; inline
12 M: byte-array new-sequence drop (byte-array) ;
14 M: byte-array equal?
15     over byte-array? [ sequence= ] [ 2drop f ] if ;
17 M: byte-array resize
18     resize-byte-array ;
20 INSTANCE: byte-array sequence
22 : 1byte-array ( x -- byte-array ) 1 <byte-array> [ set-first ] keep ; inline
24 : 2byte-array ( x y -- byte-array ) B{ } 2sequence ; inline
26 : 3byte-array ( x y z -- byte-array ) B{ } 3sequence ; inline
28 : 4byte-array ( w x y z -- byte-array ) B{ } 4sequence ; inline