]> gitweb.factorcode.org Git - factor.git/blob - core/byte-vectors/byte-vectors.factor
206a23f43bf789ce69a4a604d90d97ba8fb12504
[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 ) BV{ } clone-like ;\r
18 \r
19 M: byte-vector like\r
20     drop dup byte-vector? [\r
21         dup byte-array?\r
22         [ dup length byte-array>vector ] [ >byte-vector ] if\r
23     ] unless ;\r
24 \r
25 M: byte-vector new-sequence\r
26     drop [ <byte-array> ] keep >fixnum byte-array>vector ;\r
27 \r
28 M: byte-vector equal?\r
29     over byte-vector? [ sequence= ] [ 2drop f ] if ;\r
30 \r
31 M: byte-array new-resizable drop <byte-vector> ;\r
32 \r
33 INSTANCE: byte-vector growable\r