]> gitweb.factorcode.org Git - factor.git/blob - core/byte-vectors/byte-vectors.factor
e80b797a8d42d7376ff920528dd8136d68b4f772
[factor.git] / core / byte-vectors / byte-vectors.factor
1 ! Copyright (C) 2008 Slava Pestov.\r
2 ! See http://factorcode.org/license.txt for BSD license.\r
3 USING: arrays kernel kernel.private math sequences\r
4 sequences.private growable byte-arrays ;\r
5 IN: byte-vectors\r
6 \r
7 <PRIVATE\r
8 \r
9 : byte-array>vector ( byte-array length -- byte-vector )\r
10     byte-vector boa ; inline\r
11 \r
12 PRIVATE>\r
13 \r
14 : <byte-vector> ( n -- byte-vector )\r
15     <byte-array> 0 byte-array>vector ; inline\r
16 \r
17 : >byte-vector ( seq -- byte-vector )\r
18     T{ byte-vector f B{ } 0 } clone-like ;\r
19 \r
20 M: byte-vector like\r
21     drop dup byte-vector? [\r
22         dup byte-array?\r
23         [ dup length byte-array>vector ] [ >byte-vector ] if\r
24     ] unless ;\r
25 \r
26 M: byte-vector new-sequence\r
27     drop [ <byte-array> ] keep >fixnum byte-array>vector ;\r
28 \r
29 M: byte-vector equal?\r
30     over byte-vector? [ sequence= ] [ 2drop f ] if ;\r
31 \r
32 M: byte-array new-resizable drop <byte-vector> ;\r
33 \r
34 INSTANCE: byte-vector growable\r