KDevelop API Documentation

BitSet.cpp

Go to the documentation of this file.
00001 /* ANTLR Translator Generator
00002  * Project led by Terence Parr at http://www.jGuru.com
00003  * Software rights: http://www.antlr.org/RIGHTS.html
00004  *
00005  * $Id: BitSet.cpp,v 1.2 2003/05/02 00:36:20 okellogg Exp $
00006  */
00007 #include "antlr/BitSet.hpp"
00008 #include <string>
00009 
00010 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00011 namespace antlr {
00012 #endif
00013 
00014 BitSet::BitSet(unsigned int nbits)
00015 : storage(nbits)
00016 {
00017     for (unsigned int i = 0; i < nbits ; i++ )
00018         storage[i] = false;
00019 }
00020 
00021 BitSet::BitSet( const unsigned long* bits_, unsigned int nlongs )
00022 : storage(nlongs*32)
00023 {
00024     for ( unsigned int i = 0 ; i < (nlongs * 32); i++)
00025         storage[i] = (bits_[i>>5] & (1UL << (i&31))) ? true : false;
00026 }
00027 
00028 BitSet::~BitSet()
00029 {
00030 }
00031 
00032 void BitSet::add(unsigned int el)
00033 {
00034     if( el >= storage.size() )
00035         storage.resize( el+1, false );
00036 
00037     storage[el] = true;
00038 }
00039 
00040 bool BitSet::member(unsigned int el) const
00041 {
00042     if ( el >= storage.size())
00043         return false;
00044 
00045     return storage[el];
00046 }
00047 
00048 ANTLR_USE_NAMESPACE(std)vector<unsigned int> BitSet::toArray() const
00049 {
00050     ANTLR_USE_NAMESPACE(std)vector<unsigned int> elems;
00051     for (unsigned int i = 0; i < storage.size(); i++)
00052     {
00053         if (storage[i])
00054             elems.push_back(i);
00055     }
00056 
00057     return elems;
00058 }
00059 
00060 #ifdef ANTLR_CXX_SUPPORTS_NAMESPACE
00061 }
00062 #endif
KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:22:34 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003