Remove vecs from std::bitv
This commit is contained in:
parent
72773e6d4d
commit
5c042a02cd
2 changed files with 85 additions and 105 deletions
|
@ -14,9 +14,9 @@ export difference;
|
|||
export set;
|
||||
export is_true;
|
||||
export is_false;
|
||||
export to_vec;
|
||||
export to_ivec;
|
||||
export to_str;
|
||||
export eq_vec;
|
||||
export eq_ivec;
|
||||
|
||||
|
||||
// FIXME: With recursive object types, we could implement binary methods like
|
||||
|
@ -145,11 +145,6 @@ fn is_false(v: &t) -> bool {
|
|||
|
||||
fn init_to_vec(v: t, i: uint) -> uint { ret if get(v, i) { 1u } else { 0u }; }
|
||||
|
||||
fn to_vec(v: &t) -> vec[uint] {
|
||||
let sub = bind init_to_vec(v, _);
|
||||
ret vec::init_fn[uint](sub, v.nbits);
|
||||
}
|
||||
|
||||
fn to_ivec(v: &t) -> [uint] {
|
||||
let sub = bind init_to_vec(v, _);
|
||||
ret ivec::init_fn[uint](sub, v.nbits);
|
||||
|
@ -157,27 +152,12 @@ fn to_ivec(v: &t) -> [uint] {
|
|||
|
||||
fn to_str(v: &t) -> str {
|
||||
let rs = "";
|
||||
for i: uint in bitv::to_vec(v) {
|
||||
for i: uint in to_ivec(v) {
|
||||
if i == 1u { rs += "1"; } else { rs += "0"; }
|
||||
}
|
||||
ret rs;
|
||||
}
|
||||
|
||||
|
||||
// FIXME: can we just use structural equality on to_vec?
|
||||
fn eq_vec(v0: &t, v1: &vec[uint]) -> bool {
|
||||
assert (v0.nbits == vec::len[uint](v1));
|
||||
let len = v0.nbits;
|
||||
let i = 0u;
|
||||
while i < len {
|
||||
let w0 = get(v0, i);
|
||||
let w1 = v1.(i);
|
||||
if !w0 && w1 != 0u || w0 && w1 == 0u { ret false; }
|
||||
i = i + 1u;
|
||||
}
|
||||
ret true;
|
||||
}
|
||||
|
||||
fn eq_ivec(v0: &t, v1: &[uint]) -> bool {
|
||||
assert (v0.nbits == ivec::len[uint](v1));
|
||||
let len = v0.nbits;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
|
||||
use std;
|
||||
import std::vec;
|
||||
import std::ivec;
|
||||
import std::bitv;
|
||||
|
||||
#[test]
|
||||
|
@ -8,19 +8,19 @@ fn test_0_elements() {
|
|||
let act;
|
||||
let exp;
|
||||
act = bitv::create(0u, false);
|
||||
exp = vec::init_elt[uint](0u, 0u);
|
||||
exp = ivec::init_elt[uint](0u, 0u);
|
||||
// FIXME: why can't I write vec[uint]()?
|
||||
|
||||
assert (bitv::eq_vec(act, exp));
|
||||
assert (bitv::eq_ivec(act, exp));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_1_element() {
|
||||
let act;
|
||||
act = bitv::create(1u, false);
|
||||
assert (bitv::eq_vec(act, [0u]));
|
||||
assert (bitv::eq_ivec(act, ~[0u]));
|
||||
act = bitv::create(1u, true);
|
||||
assert (bitv::eq_vec(act, [1u]));
|
||||
assert (bitv::eq_ivec(act, ~[1u]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -29,11 +29,11 @@ fn test_10_elements() {
|
|||
// all 0
|
||||
|
||||
act = bitv::create(10u, false);
|
||||
assert (bitv::eq_vec(act, [0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
assert (bitv::eq_ivec(act, ~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// all 1
|
||||
|
||||
act = bitv::create(10u, true);
|
||||
assert (bitv::eq_vec(act, [1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u]));
|
||||
assert (bitv::eq_ivec(act, ~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u]));
|
||||
// mixed
|
||||
|
||||
act = bitv::create(10u, false);
|
||||
|
@ -42,7 +42,7 @@ fn test_10_elements() {
|
|||
bitv::set(act, 2u, true);
|
||||
bitv::set(act, 3u, true);
|
||||
bitv::set(act, 4u, true);
|
||||
assert (bitv::eq_vec(act, [1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u]));
|
||||
assert (bitv::eq_ivec(act, ~[1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// mixed
|
||||
|
||||
act = bitv::create(10u, false);
|
||||
|
@ -51,7 +51,7 @@ fn test_10_elements() {
|
|||
bitv::set(act, 7u, true);
|
||||
bitv::set(act, 8u, true);
|
||||
bitv::set(act, 9u, true);
|
||||
assert (bitv::eq_vec(act, [0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u]));
|
||||
assert (bitv::eq_ivec(act, ~[0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u]));
|
||||
// mixed
|
||||
|
||||
act = bitv::create(10u, false);
|
||||
|
@ -59,7 +59,7 @@ fn test_10_elements() {
|
|||
bitv::set(act, 3u, true);
|
||||
bitv::set(act, 6u, true);
|
||||
bitv::set(act, 9u, true);
|
||||
assert (bitv::eq_vec(act, [1u, 0u, 0u, 1u, 0u, 0u, 1u, 0u, 0u, 1u]));
|
||||
assert (bitv::eq_ivec(act, ~[1u, 0u, 0u, 1u, 0u, 0u, 1u, 0u, 0u, 1u]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -68,15 +68,15 @@ fn test_31_elements() {
|
|||
// all 0
|
||||
|
||||
act = bitv::create(31u, false);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u]));
|
||||
// all 1
|
||||
|
||||
act = bitv::create(31u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u]));
|
||||
// mixed
|
||||
|
@ -90,8 +90,8 @@ fn test_31_elements() {
|
|||
bitv::set(act, 5u, true);
|
||||
bitv::set(act, 6u, true);
|
||||
bitv::set(act, 7u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u]));
|
||||
// mixed
|
||||
|
@ -105,8 +105,8 @@ fn test_31_elements() {
|
|||
bitv::set(act, 21u, true);
|
||||
bitv::set(act, 22u, true);
|
||||
bitv::set(act, 23u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u]));
|
||||
// mixed
|
||||
|
@ -119,8 +119,8 @@ fn test_31_elements() {
|
|||
bitv::set(act, 28u, true);
|
||||
bitv::set(act, 29u, true);
|
||||
bitv::set(act, 30u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u]));
|
||||
// mixed
|
||||
|
@ -129,8 +129,8 @@ fn test_31_elements() {
|
|||
bitv::set(act, 3u, true);
|
||||
bitv::set(act, 17u, true);
|
||||
bitv::set(act, 30u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 1u]));
|
||||
}
|
||||
|
@ -141,15 +141,15 @@ fn test_32_elements() {
|
|||
// all 0
|
||||
|
||||
act = bitv::create(32u, false);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// all 1
|
||||
|
||||
act = bitv::create(32u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u, 1u]));
|
||||
// mixed
|
||||
|
@ -163,8 +163,8 @@ fn test_32_elements() {
|
|||
bitv::set(act, 5u, true);
|
||||
bitv::set(act, 6u, true);
|
||||
bitv::set(act, 7u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// mixed
|
||||
|
@ -178,8 +178,8 @@ fn test_32_elements() {
|
|||
bitv::set(act, 21u, true);
|
||||
bitv::set(act, 22u, true);
|
||||
bitv::set(act, 23u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// mixed
|
||||
|
@ -193,8 +193,8 @@ fn test_32_elements() {
|
|||
bitv::set(act, 29u, true);
|
||||
bitv::set(act, 30u, true);
|
||||
bitv::set(act, 31u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u, 1u]));
|
||||
// mixed
|
||||
|
@ -204,8 +204,8 @@ fn test_32_elements() {
|
|||
bitv::set(act, 17u, true);
|
||||
bitv::set(act, 30u, true);
|
||||
bitv::set(act, 31u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 1u, 1u]));
|
||||
}
|
||||
|
@ -216,15 +216,15 @@ fn test_33_elements() {
|
|||
// all 0
|
||||
|
||||
act = bitv::create(33u, false);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// all 1
|
||||
|
||||
act = bitv::create(33u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u, 1u, 1u]));
|
||||
// mixed
|
||||
|
@ -238,8 +238,8 @@ fn test_33_elements() {
|
|||
bitv::set(act, 5u, true);
|
||||
bitv::set(act, 6u, true);
|
||||
bitv::set(act, 7u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// mixed
|
||||
|
@ -253,8 +253,8 @@ fn test_33_elements() {
|
|||
bitv::set(act, 21u, true);
|
||||
bitv::set(act, 22u, true);
|
||||
bitv::set(act, 23u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u]));
|
||||
// mixed
|
||||
|
@ -268,8 +268,8 @@ fn test_33_elements() {
|
|||
bitv::set(act, 29u, true);
|
||||
bitv::set(act, 30u, true);
|
||||
bitv::set(act, 31u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u,
|
||||
1u, 1u, 1u, 1u, 1u, 1u, 0u]));
|
||||
// mixed
|
||||
|
@ -280,8 +280,8 @@ fn test_33_elements() {
|
|||
bitv::set(act, 30u, true);
|
||||
bitv::set(act, 31u, true);
|
||||
bitv::set(act, 32u, true);
|
||||
assert (bitv::eq_vec(act,
|
||||
[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
assert (bitv::eq_ivec(act,
|
||||
~[0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u,
|
||||
0u, 0u, 0u, 0u, 1u, 1u, 1u]));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue