@@ -97,12 +97,12 @@ impl SmallBitv {
97
97
pub fn set_all ( & mut self ) { self . bits = !0 ; }
98
98
99
99
#[ inline]
100
- pub fn is_true ( & self , nbits : uint ) -> bool {
100
+ pub fn all ( & self , nbits : uint ) -> bool {
101
101
small_mask ( nbits) & !self . bits == 0
102
102
}
103
103
104
104
#[ inline]
105
- pub fn is_false ( & self , nbits : uint ) -> bool {
105
+ pub fn none ( & self , nbits : uint ) -> bool {
106
106
small_mask ( nbits) & self . bits == 0
107
107
}
108
108
@@ -412,13 +412,10 @@ impl Bitv {
412
412
413
413
/// Returns `true` if all bits are 1
414
414
#[ inline]
415
- pub fn is_true ( & self ) -> bool {
415
+ pub fn all ( & self ) -> bool {
416
416
match self . rep {
417
- Small ( ref b) => b. is_true ( self . nbits ) ,
418
- _ => {
419
- for i in self . iter ( ) { if !i { return false ; } }
420
- true
421
- }
417
+ Small ( ref b) => b. all ( self . nbits ) ,
418
+ _ => self . iter ( ) . all ( |x| x)
422
419
}
423
420
}
424
421
@@ -433,16 +430,19 @@ impl Bitv {
433
430
}
434
431
435
432
/// Returns `true` if all bits are 0
436
- pub fn is_false ( & self ) -> bool {
433
+ pub fn none ( & self ) -> bool {
437
434
match self . rep {
438
- Small ( ref b) => b. is_false ( self . nbits ) ,
439
- Big ( _) => {
440
- for i in self . iter ( ) { if i { return false ; } }
441
- true
442
- }
435
+ Small ( ref b) => b. none ( self . nbits ) ,
436
+ _ => self . iter ( ) . all ( |x| !x)
443
437
}
444
438
}
445
439
440
+ #[ inline]
441
+ /// Returns `true` if any bit is 1
442
+ pub fn any ( & self ) -> bool {
443
+ !self . none ( )
444
+ }
445
+
446
446
pub fn init_to_vec ( & self , i : uint ) -> uint {
447
447
return if self . get ( i) { 1 } else { 0 } ;
448
448
}
@@ -1551,6 +1551,51 @@ mod tests {
1551
1551
assert ! ( b. contains( & 1000 ) ) ;
1552
1552
}
1553
1553
1554
+ #[ test]
1555
+ fn test_small_bitv_tests ( ) {
1556
+ let v = from_bytes ( [ 0 ] ) ;
1557
+ assert ! ( !v. all( ) ) ;
1558
+ assert ! ( !v. any( ) ) ;
1559
+ assert ! ( v. none( ) ) ;
1560
+
1561
+ let v = from_bytes ( [ 0b00010100 ] ) ;
1562
+ assert ! ( !v. all( ) ) ;
1563
+ assert ! ( v. any( ) ) ;
1564
+ assert ! ( !v. none( ) ) ;
1565
+
1566
+ let v = from_bytes ( [ 0xFF ] ) ;
1567
+ assert ! ( v. all( ) ) ;
1568
+ assert ! ( v. any( ) ) ;
1569
+ assert ! ( !v. none( ) ) ;
1570
+ }
1571
+
1572
+ #[ test]
1573
+ fn test_big_bitv_tests ( ) {
1574
+ let v = from_bytes ( [ // 88 bits
1575
+ 0 , 0 , 0 , 0 ,
1576
+ 0 , 0 , 0 , 0 ,
1577
+ 0 , 0 , 0 ] ) ;
1578
+ assert ! ( !v. all( ) ) ;
1579
+ assert ! ( !v. any( ) ) ;
1580
+ assert ! ( v. none( ) ) ;
1581
+
1582
+ let v = from_bytes ( [ // 88 bits
1583
+ 0 , 0 , 0b00010100 , 0 ,
1584
+ 0 , 0 , 0 , 0b00110100 ,
1585
+ 0 , 0 , 0 ] ) ;
1586
+ assert ! ( !v. all( ) ) ;
1587
+ assert ! ( v. any( ) ) ;
1588
+ assert ! ( !v. none( ) ) ;
1589
+
1590
+ let v = from_bytes ( [ // 88 bits
1591
+ 0xFF , 0xFF , 0xFF , 0xFF ,
1592
+ 0xFF , 0xFF , 0xFF , 0xFF ,
1593
+ 0xFF , 0xFF , 0xFF ] ) ;
1594
+ assert ! ( v. all( ) ) ;
1595
+ assert ! ( v. any( ) ) ;
1596
+ assert ! ( !v. none( ) ) ;
1597
+ }
1598
+
1554
1599
fn rng ( ) -> rand:: IsaacRng {
1555
1600
let seed = & [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ;
1556
1601
rand:: SeedableRng :: from_seed ( seed)
0 commit comments