about summary refs log tree commit diff
path: root/src/libextra
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-02-21 05:26:58 -0800
committerbors <bors@rust-lang.org>2014-02-21 05:26:58 -0800
commit2fa7d6b44fcc329e849f4dd43e11c6fdd43ebd76 (patch)
treeb36e2936bb56f9179d0f634b3f63b70dccc8486b /src/libextra
parentc9864cec2be8af2090a83355dc8894ccdb9a73d4 (diff)
parent5bf8d3289f155964bdcb9c0ef65d010ac0ff1388 (diff)
downloadrust-2fa7d6b44fcc329e849f4dd43e11c6fdd43ebd76.tar.gz
rust-2fa7d6b44fcc329e849f4dd43e11c6fdd43ebd76.zip
auto merge of #12415 : HeroesGrave/rust/move-enum-set, r=alexcrichton
Part of #8784

Also removed the one glob import.
Diffstat (limited to 'src/libextra')
-rw-r--r--src/libextra/enum_set.rs294
-rw-r--r--src/libextra/lib.rs1
2 files changed, 0 insertions, 295 deletions
diff --git a/src/libextra/enum_set.rs b/src/libextra/enum_set.rs
deleted file mode 100644
index d036f2c70d7..00000000000
--- a/src/libextra/enum_set.rs
+++ /dev/null
@@ -1,294 +0,0 @@
-// Copyright 2012 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-//! A structure for holding a set of enum variants
-//!
-//! This module defines a container which uses an efficient bit mask
-//! representation to hold C-like enum variants.
-
-use std::num::Bitwise;
-
-#[deriving(Clone, Eq, IterBytes, ToStr, Encodable, Decodable)]
-/// A specialized Set implementation to use enum types.
-pub struct EnumSet<E> {
-    // We must maintain the invariant that no bits are set
-    // for which no variant exists
-    priv bits: uint
-}
-
-/// An interface for casting C-like enum to uint and back.
-pub trait CLike {
-    /// Converts C-like enum to uint.
-    fn to_uint(&self) -> uint;
-    /// Converts uint to C-like enum.
-    fn from_uint(uint) -> Self;
-}
-
-fn bit<E:CLike>(e: E) -> uint {
-    1 << e.to_uint()
-}
-
-impl<E:CLike> EnumSet<E> {
-    /// Returns an empty EnumSet.
-    pub fn empty() -> EnumSet<E> {
-        EnumSet {bits: 0}
-    }
-
-    /// Returns true if an EnumSet is empty.
-    pub fn is_empty(&self) -> bool {
-        self.bits == 0
-    }
-
-    /// Returns true if an EnumSet contains any enum of a given EnumSet
-    pub fn intersects(&self, e: EnumSet<E>) -> bool {
-        (self.bits & e.bits) != 0
-    }
-
-    /// Returns an intersection of both EnumSets.
-    pub fn intersection(&self, e: EnumSet<E>) -> EnumSet<E> {
-        EnumSet {bits: self.bits & e.bits}
-    }
-
-    /// Returns true if a given EnumSet is included in an EnumSet.
-    pub fn contains(&self, e: EnumSet<E>) -> bool {
-        (self.bits & e.bits) == e.bits
-    }
-
-    /// Returns a union of both EnumSets.
-    pub fn union(&self, e: EnumSet<E>) -> EnumSet<E> {
-        EnumSet {bits: self.bits | e.bits}
-    }
-
-    /// Add an enum to an EnumSet
-    pub fn add(&mut self, e: E) {
-        self.bits |= bit(e);
-    }
-
-    /// Returns true if an EnumSet contains a given enum
-    pub fn contains_elem(&self, e: E) -> bool {
-        (self.bits & bit(e)) != 0
-    }
-
-    /// Returns an iterator over an EnumSet
-    pub fn iter(&self) -> Items<E> {
-        Items::new(self.bits)
-    }
-}
-
-impl<E:CLike> Sub<EnumSet<E>, EnumSet<E>> for EnumSet<E> {
-    fn sub(&self, e: &EnumSet<E>) -> EnumSet<E> {
-        EnumSet {bits: self.bits & !e.bits}
-    }
-}
-
-impl<E:CLike> BitOr<EnumSet<E>, EnumSet<E>> for EnumSet<E> {
-    fn bitor(&self, e: &EnumSet<E>) -> EnumSet<E> {
-        EnumSet {bits: self.bits | e.bits}
-    }
-}
-
-impl<E:CLike> BitAnd<EnumSet<E>, EnumSet<E>> for EnumSet<E> {
-    fn bitand(&self, e: &EnumSet<E>) -> EnumSet<E> {
-        EnumSet {bits: self.bits & e.bits}
-    }
-}
-
-/// An iterator over an EnumSet
-pub struct Items<E> {
-    priv index: uint,
-    priv bits: uint,
-}
-
-impl<E:CLike> Items<E> {
-    fn new(bits: uint) -> Items<E> {
-        Items { index: 0, bits: bits }
-    }
-}
-
-impl<E:CLike> Iterator<E> for Items<E> {
-    fn next(&mut self) -> Option<E> {
-        if self.bits == 0 {
-            return None;
-        }
-
-        while (self.bits & 1) == 0 {
-            self.index += 1;
-            self.bits >>= 1;
-        }
-        let elem = CLike::from_uint(self.index);
-        self.index += 1;
-        self.bits >>= 1;
-        Some(elem)
-    }
-
-    fn size_hint(&self) -> (uint, Option<uint>) {
-        let exact = self.bits.count_ones();
-        (exact, Some(exact))
-    }
-}
-
-#[cfg(test)]
-mod test {
-
-    use std::cast;
-
-    use enum_set::*;
-
-    #[deriving(Eq)]
-    #[repr(uint)]
-    enum Foo {
-        A, B, C
-    }
-
-    impl CLike for Foo {
-        fn to_uint(&self) -> uint {
-            *self as uint
-        }
-
-        fn from_uint(v: uint) -> Foo {
-            unsafe { cast::transmute(v) }
-        }
-    }
-
-    #[test]
-    fn test_empty() {
-        let e: EnumSet<Foo> = EnumSet::empty();
-        assert!(e.is_empty());
-    }
-
-    ///////////////////////////////////////////////////////////////////////////
-    // intersect
-
-    #[test]
-    fn test_two_empties_do_not_intersect() {
-        let e1: EnumSet<Foo> = EnumSet::empty();
-        let e2: EnumSet<Foo> = EnumSet::empty();
-        assert!(!e1.intersects(e2));
-    }
-
-    #[test]
-    fn test_empty_does_not_intersect_with_full() {
-        let e1: EnumSet<Foo> = EnumSet::empty();
-
-        let mut e2: EnumSet<Foo> = EnumSet::empty();
-        e2.add(A);
-        e2.add(B);
-        e2.add(C);
-
-        assert!(!e1.intersects(e2));
-    }
-
-    #[test]
-    fn test_disjoint_intersects() {
-        let mut e1: EnumSet<Foo> = EnumSet::empty();
-        e1.add(A);
-
-        let mut e2: EnumSet<Foo> = EnumSet::empty();
-        e2.add(B);
-
-        assert!(!e1.intersects(e2));
-    }
-
-    #[test]
-    fn test_overlapping_intersects() {
-        let mut e1: EnumSet<Foo> = EnumSet::empty();
-        e1.add(A);
-
-        let mut e2: EnumSet<Foo> = EnumSet::empty();
-        e2.add(A);
-        e2.add(B);
-
-        assert!(e1.intersects(e2));
-    }
-
-    ///////////////////////////////////////////////////////////////////////////
-    // contains and contains_elem
-
-    #[test]
-    fn test_contains() {
-        let mut e1: EnumSet<Foo> = EnumSet::empty();
-        e1.add(A);
-
-        let mut e2: EnumSet<Foo> = EnumSet::empty();
-        e2.add(A);
-        e2.add(B);
-
-        assert!(!e1.contains(e2));
-        assert!(e2.contains(e1));
-    }
-
-    #[test]
-    fn test_contains_elem() {
-        let mut e1: EnumSet<Foo> = EnumSet::empty();
-        e1.add(A);
-        assert!(e1.contains_elem(A));
-        assert!(!e1.contains_elem(B));
-        assert!(!e1.contains_elem(C));
-
-        e1.add(A);
-        e1.add(B);
-        assert!(e1.contains_elem(A));
-        assert!(e1.contains_elem(B));
-        assert!(!e1.contains_elem(C));
-    }
-
-    ///////////////////////////////////////////////////////////////////////////
-    // iter
-
-    #[test]
-    fn test_iterator() {
-        let mut e1: EnumSet<Foo> = EnumSet::empty();
-
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[], elems)
-
-        e1.add(A);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A], elems)
-
-        e1.add(C);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A,C], elems)
-
-        e1.add(C);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A,C], elems)
-
-        e1.add(B);
-        let elems: ~[Foo] = e1.iter().collect();
-        assert_eq!(~[A,B,C], elems)
-    }
-
-    ///////////////////////////////////////////////////////////////////////////
-    // operators
-
-    #[test]
-    fn test_operators() {
-        let mut e1: EnumSet<Foo> = EnumSet::empty();
-        e1.add(A);
-        e1.add(C);
-
-        let mut e2: EnumSet<Foo> = EnumSet::empty();
-        e2.add(B);
-        e2.add(C);
-
-        let e_union = e1 | e2;
-        let elems: ~[Foo] = e_union.iter().collect();
-        assert_eq!(~[A,B,C], elems)
-
-        let e_intersection = e1 & e2;
-        let elems: ~[Foo] = e_intersection.iter().collect();
-        assert_eq!(~[C], elems)
-
-        let e_subtract = e1 - e2;
-        let elems: ~[Foo] = e_subtract.iter().collect();
-        assert_eq!(~[A], elems)
-    }
-}
diff --git a/src/libextra/lib.rs b/src/libextra/lib.rs
index dc5624f9de9..d05fc00f06e 100644
--- a/src/libextra/lib.rs
+++ b/src/libextra/lib.rs
@@ -45,7 +45,6 @@ pub mod json;
 pub mod tempfile;
 pub mod time;
 pub mod workcache;
-pub mod enum_set;
 pub mod stats;
 
 #[cfg(unicode)]