@@ -97,12 +97,12 @@ impl SmallBitv {
9797 pub fn set_all ( & mut self ) { self . bits = !0 ; }
9898
9999 #[ inline]
100- pub fn is_true ( & self , nbits : uint ) -> bool {
100+ pub fn all ( & self , nbits : uint ) -> bool {
101101 small_mask ( nbits) & !self . bits == 0
102102 }
103103
104104 #[ inline]
105- pub fn is_false ( & self , nbits : uint ) -> bool {
105+ pub fn none ( & self , nbits : uint ) -> bool {
106106 small_mask ( nbits) & self . bits == 0
107107 }
108108
@@ -412,13 +412,10 @@ impl Bitv {
412412
413413 /// Returns `true` if all bits are 1
414414 #[ inline]
415- pub fn is_true ( & self ) -> bool {
415+ pub fn all ( & self ) -> bool {
416416 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)
422419 }
423420 }
424421
@@ -433,16 +430,19 @@ impl Bitv {
433430 }
434431
435432 /// Returns `true` if all bits are 0
436- pub fn is_false ( & self ) -> bool {
433+ pub fn none ( & self ) -> bool {
437434 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)
443437 }
444438 }
445439
440+ #[ inline]
441+ /// Returns `true` if any bit is 1
442+ pub fn any ( & self ) -> bool {
443+ !self . none ( )
444+ }
445+
446446 pub fn init_to_vec ( & self , i : uint ) -> uint {
447447 return if self . get ( i) { 1 } else { 0 } ;
448448 }
@@ -1551,6 +1551,51 @@ mod tests {
15511551 assert ! ( b. contains( & 1000 ) ) ;
15521552 }
15531553
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+
15541599 fn rng ( ) -> rand:: IsaacRng {
15551600 let seed = & [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ] ;
15561601 rand:: SeedableRng :: from_seed ( seed)
0 commit comments