PixelLightAPI  .
Public Member Functions
PLCore::Bitset Class Reference

Bit set class. More...

#include <Bitset.h>

Inheritance diagram for PLCore::Bitset:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 Bitset (uint32 nMaxNumOfElements=0, bool bAdded=true, bool bInit=false)
 Constructor.
 Bitset (const Bitset &lstSource, uint32 nStart=0, uint32 nCount=0)
 Copy constructor.
 Bitset (const Container< bool > &lstSource, uint32 nStart=0, uint32 nCount=0)
 Copy constructor.
virtual ~Bitset ()
 Destructor.
Container< bool > & operator= (const Bitset &lstSource)
 Copy operator.
uint32 GetMaxNumOfElements () const
 Returns the maximum number of elements in the bit set.
bool Resize (uint32 nMaxNumOfElements, bool bAdded=true, bool bInit=false)
 Sets the maximum number of elements in the bit set.
uint32 GetResizeCount () const
 Returns the number of elements automatically added if the bit set size is to small.
bool SetResizeCount (uint32 nCount=64)
 Sets the number of elements automatically added if the bit set size is to small.
bool Clear (uint32 nIndex)
 Clears a bit to 0.
void ClearAll ()
 Clears all bits to 0.
bool Set (uint32 nIndex)
 Sets the desired bit.
void SetAll ()
 Sets all bits to 1.
bool Invert (uint32 nIndex)
 Inverts the desired bit.
void InvertAll ()
 Inverts all bits.
bool IsSet (uint32 nIndex) const
 Returns if the desired bit slot is a 1 or a 0.
uint32 GetNumOfSetBits () const
 Returns the number of set bits (value = 'true')
uint32 GetNumOfIntegers () const
 Returns the internal number of integers (32 bit) used to store the bits.
const uint32 * GetIntegers () const
 Returns the internal integers (32 bit) used to store the bits.
void Reset ()
 Resets the bitset.
virtual Iterator< bool > GetIterator (uint32 nIndex=0) const override
 Returns an iterator operating on the derived data structure.
virtual ConstIterator< bool > GetConstIterator (uint32 nIndex=0) const override
 Returns a constant iterator operating on the derived data structure.
virtual Iterator< bool > GetEndIterator () const override
 Returns an iterator operating on the derived data structure and starting at the end.
virtual ConstIterator< bool > GetConstEndIterator () const override
 Returns a constant iterator operating on the derived data structure and starting at the end.
virtual bool IsEmpty () const
 Checks whether the container is complete empty.
virtual uint32 GetNumOfElements () const
 Returns the number of elements.
virtual uint32 GetElementSize () const
 Returns the size of a single container element (in bytes)
virtual uint32 GetSize () const
 Returns the total size of all container elements (in bytes)
virtual void Clear () override
 Clears the whole container.
virtual bool IsElement (const bool &Element) const
 Returns whether the given element is within the container or not.
virtual int GetIndex (const bool &Element) const
 Returns the index of an element (first appearance)
virtual bool & Get (uint32 nIndex) const
 Returns an element.
virtual bool & operator[] (uint32 nIndex) const
 Returns an element.
virtual bool Replace (const bool &Element1, const bool &Element2)
 Replaces an element (first appearance) through another element.
virtual bool ReplaceAtIndex (uint32 nIndex, const bool &Element)
 Replaces an element at the given index through another element.
virtual bool & Add () override
 Appends an element to the container.
virtual bool & Add (const bool &Element) override
 Appends an element to the container.
virtual uint32 Add (const bool *pElements, uint32 nCount) override
 Adds elements from a given C-array.
virtual Container< bool > & operator+= (const bool &Element)
 Appends an element to the container.
virtual bool Add (const Container< bool > &lstContainer, uint32 nStart=0, uint32 nCount=0) override
 Appends an container to this container.
virtual Container< bool > & operator+= (const Container< bool > &lstContainer)
 Appends an container to this container.
virtual bool & AddAtIndex (int nIndex) override
 Appends an element to the container at the given index.
virtual bool & AddAtIndex (const bool &Element, int nIndex) override
 Appends an element to the container at the given index.
virtual bool Remove (const bool &Element)
 Removes an element (first appearance) from the container.
virtual bool RemoveAtIndex (uint32 nElement) override
 Removes the element at the given index from the container.
virtual Container< bool > & operator-= (const bool &Element)
 Removes an element from the container.
virtual bool Remove (const Container< bool > &lstContainer, uint32 nStart=0, uint32 nCount=0) override
 Removes the elements of an container from this container.
virtual Container< bool > & operator-= (const Container< bool > &lstContainer)
 Removes the elements of an container from this container.
virtual bool Copy (const Container< bool > &lstContainer, uint32 nStart=0, uint32 nCount=0) override
 Makes this container to a copy of another container.
virtual Container< bool > & operator= (const Container< bool > &lstContainer)
 Makes this container to a copy of another container.
virtual bool Compare (const Container< bool > &lstContainer, uint32 nStart=0, uint32 nCount=0) const override
 Compares two containers.
virtual bool operator== (const Container< bool > &lstContainer) const
 Compares two containers.
virtual bool operator!= (const Container< bool > &lstContainer) const
 Compares two containers.

Detailed Description

Bit set class.

Remarks:
The bit set class which is useful when dealing with many binary states because many bits will be put together in variables to save memory. The bit set is resized automatically if required.

Constructor & Destructor Documentation

PLCore::Bitset::Bitset ( uint32  nMaxNumOfElements = 0,
bool  bAdded = true,
bool  bInit = false 
)

Constructor.

Parameters:
[in]nMaxNumOfElementsMaximum number of elements within the bit set
[in]bAddedAre all elements added? (GetNumOfElements() = GetMaxNumOfElements())
[in]bInitInitialize new elements by setting them to null?
PLCore::Bitset::Bitset ( const Bitset lstSource,
uint32  nStart = 0,
uint32  nCount = 0 
)

Copy constructor.

Parameters:
[in]lstSourceBitset to copy from
[in]nStartIndex the copy operation should start
[in]nCountNumber of elements to copy, if 0 copy all elements of lstSource behind nStart
PLCore::Bitset::Bitset ( const Container< bool > &  lstSource,
uint32  nStart = 0,
uint32  nCount = 0 
)

Copy constructor.

Parameters:
[in]lstSourceContainer to copy from
[in]nStartIndex the copy operation should start
[in]nCountNumber of elements to copy, if 0 copy all elements of lstSource behind nStart
virtual PLCore::Bitset::~Bitset ( ) [virtual]

Destructor.


Member Function Documentation

Container< bool > & PLCore::Bitset::operator= ( const Bitset lstSource) [inline]

Copy operator.

Parameters:
[in]lstSourceBitset to copy from
Returns:
Reference to this instance
uint32 PLCore::Bitset::GetMaxNumOfElements ( ) const [inline]

Returns the maximum number of elements in the bit set.

Returns:
Maximum number of element in the bit set
bool PLCore::Bitset::Resize ( uint32  nMaxNumOfElements,
bool  bAdded = true,
bool  bInit = false 
)

Sets the maximum number of elements in the bit set.

Parameters:
[in]nMaxNumOfElementsNew maximum number of elements (0 = clear bit set)
[in]bAddedAre all elements added? (GetNumOfElements() = GetMaxNumOfElements())
[in]bInitInitialize new elements by setting them to null?
Returns:
'true' if all went fine, else 'false'
uint32 PLCore::Bitset::GetResizeCount ( ) const [inline]

Returns the number of elements automatically added if the bit set size is to small.

Returns:
Number of elements automatically added if the bit set size is to small
bool PLCore::Bitset::SetResizeCount ( uint32  nCount = 64) [inline]

Sets the number of elements automatically added if the bit set size is to small.

Parameters:
[in]nCountNumber of elements automatically added if the bit set size is to small
Returns:
'true' if all went fine, else 'false'
Note:
  • If nCount is 0, the array size isn't changed automatically
bool PLCore::Bitset::Clear ( uint32  nIndex) [inline]

Clears a bit to 0.

Parameters:
[in]nIndexIndex of the bit to clear
Returns:
'true' if all went fine, else 'false'

Clears all bits to 0.

bool PLCore::Bitset::Set ( uint32  nIndex) [inline]

Sets the desired bit.

Parameters:
[in]nIndexIndex of the bit to set
Returns:
'true' if all went fine, else 'false'

Sets all bits to 1.

bool PLCore::Bitset::Invert ( uint32  nIndex) [inline]

Inverts the desired bit.

Parameters:
[in]nIndexIndex of the bit to invert
Returns:
'true' if all went fine, else 'false'
void PLCore::Bitset::InvertAll ( ) [inline]

Inverts all bits.

bool PLCore::Bitset::IsSet ( uint32  nIndex) const [inline]

Returns if the desired bit slot is a 1 or a 0.

Parameters:
[in]nIndexIndex of the bit to check
Returns:
'true' if the bit is set, else 'false'

Returns the number of set bits (value = 'true')

Returns:
The number of set bits (value = 'true')
uint32 PLCore::Bitset::GetNumOfIntegers ( ) const [inline]

Returns the internal number of integers (32 bit) used to store the bits.

Returns:
The internal number of integers used to store the bits
const uint32 * PLCore::Bitset::GetIntegers ( ) const [inline]

Returns the internal integers (32 bit) used to store the bits.

Returns:
The internal integers used to store the bits, can be a null pointer, DON'T delete the memory!
void PLCore::Bitset::Reset ( ) [inline]

Resets the bitset.

Remarks:
While the Clear() function destroys also the data, this function will only reset the current number of elements within the array to 0.
virtual Iterator<bool> PLCore::Bitset::GetIterator ( uint32  nIndex = 0) const [override, virtual]

Returns an iterator operating on the derived data structure.

Parameters:
[in]nIndexStart index, if >= 'total number of elements' the index is set to the last valid index
Returns:
Iterator operating on the derived

Implements PLCore::Iterable< bool >.

virtual ConstIterator<bool> PLCore::Bitset::GetConstIterator ( uint32  nIndex = 0) const [override, virtual]

Returns a constant iterator operating on the derived data structure.

Parameters:
[in]nIndexStart index, if >= 'total number of elements' the index is set to the last valid index
Returns:
Constant iterator operating on the derived

Implements PLCore::Iterable< bool >.

virtual Iterator<bool> PLCore::Bitset::GetEndIterator ( ) const [override, virtual]

Returns an iterator operating on the derived data structure and starting at the end.

Returns:
Iterator operating on the derived,
Remarks:
Use this function to get an iterator if you want to iterate in reversed order starting at the end last element.

Implements PLCore::Iterable< bool >.

virtual ConstIterator<bool> PLCore::Bitset::GetConstEndIterator ( ) const [override, virtual]

Returns a constant iterator operating on the derived data structure and starting at the end.

Returns:
Constant iterator operating on the derived,
Remarks:
Use this function to get a constant iterator if you want to iterate in reversed order starting at the end last element.

Implements PLCore::Iterable< bool >.

bool PLCore::Bitset::IsEmpty ( ) const [inline, virtual]

Checks whether the container is complete empty.

Returns:
'true' if the container is empty, else 'false'

Implements PLCore::Container< bool >.

uint32 PLCore::Bitset::GetNumOfElements ( ) const [inline, virtual]

Returns the number of elements.

Returns:
Number of container elements

Implements PLCore::Container< bool >.

uint32 PLCore::Bitset::GetElementSize ( ) const [inline, virtual]

Returns the size of a single container element (in bytes)

Returns:
Size of a single container element (in bytes)

Implements PLCore::Container< bool >.

uint32 PLCore::Bitset::GetSize ( ) const [inline, virtual]

Returns the total size of all container elements (in bytes)

Returns:
Total size of all container elements (in bytes)
Remarks:
You can NOT assume that GetElementSize()*GetNumOfElements() = GetSize() is always true. For instance the Bitset implementation will store the bits tightly packed and therefore in this case GetElementSize()*GetNumOfElements() != GetSize(). GetSize() will only give you a hind how many bytes are currently required to store all elements WITHOUT further implementation dependent things like pointers from one to the next element.

Implements PLCore::Container< bool >.

virtual void PLCore::Bitset::Clear ( ) [override, virtual]

Clears the whole container.

Implements PLCore::Container< bool >.

bool PLCore::Bitset::IsElement ( const bool &  Element) const [inline, virtual]

Returns whether the given element is within the container or not.

Parameters:
[in]ElementElement to check
Returns:
'true' if the element is within the container, else 'false'

Implements PLCore::Container< bool >.

int PLCore::Bitset::GetIndex ( const bool &  Element) const [inline, virtual]

Returns the index of an element (first appearance)

Parameters:
[in]ElementElement to get the index from
Returns:
Index of the given element, < 0 if it's not in the container

Implements PLCore::Container< bool >.

bool & PLCore::Bitset::Get ( uint32  nIndex) const [inline, virtual]

Returns an element.

Parameters:
[in]nIndexIndex of the element to return
Returns:
Reference to the element at the given index, reference to the 'Null'-object on error

Implements PLCore::Container< bool >.

bool & PLCore::Bitset::operator[] ( uint32  nIndex) const [inline, virtual]

Returns an element.

Parameters:
[in]nIndexIndex of the element to return
Returns:
Reference to the element at the given index, reference to the 'Null'-object on error

Implements PLCore::Container< bool >.

bool PLCore::Bitset::Replace ( const bool &  Element1,
const bool &  Element2 
) [inline, virtual]

Replaces an element (first appearance) through another element.

Parameters:
[in]Element1Element to replace
[in]Element2The element which should replace the old one
Returns:
'true' if all went fine, else 'false' (maybe 'Element1' is not within the container?)

Implements PLCore::Container< bool >.

bool PLCore::Bitset::ReplaceAtIndex ( uint32  nIndex,
const bool &  Element 
) [inline, virtual]

Replaces an element at the given index through another element.

Parameters:
[in]nIndexIndex of the element to replace
[in]ElementThe element which should replace the old one
Returns:
'true' if all went fine, else 'false' (maybe invalid index?)

Implements PLCore::Container< bool >.

virtual bool& PLCore::Bitset::Add ( ) [override, virtual]

Appends an element to the container.

Returns:
Reference to the new element, reference to the 'Null'-object on error

Implements PLCore::Container< bool >.

virtual bool& PLCore::Bitset::Add ( const bool &  Element) [override, virtual]

Appends an element to the container.

Parameters:
[in]ElementElement to add
Returns:
Reference to the new element, reference to the 'Null'-object on error

Implements PLCore::Container< bool >.

virtual uint32 PLCore::Bitset::Add ( const bool *  pElements,
uint32  nCount 
) [override, virtual]

Adds elements from a given C-array.

Parameters:
[in]pElementsPointer to C-array with the elements to add, if a null pointer, nothing is done
[in]nCountNumber of elements to add, the given C-array MUST have at least nCount elements!
Returns:
Number of added elements -> if the array is full and resizing is not allowed, this number may differ from the given nCount

Implements PLCore::Container< bool >.

Container< bool > & PLCore::Bitset::operator+= ( const bool &  Element) [inline, virtual]

Appends an element to the container.

Parameters:
[in]ElementElement to add
Returns:
This container

Implements PLCore::Container< bool >.

virtual bool PLCore::Bitset::Add ( const Container< bool > &  lstContainer,
uint32  nStart = 0,
uint32  nCount = 0 
) [override, virtual]

Appends an container to this container.

Parameters:
[in]lstContainerContainer to add
[in]nStartIndex the copy operation should start
[in]nCountNumber of elements to copy, if 0 copy all elements of lstContainer behind nStart
Returns:
'true' if all went fine, else 'false'

Implements PLCore::Container< bool >.

Container< bool > & PLCore::Bitset::operator+= ( const Container< bool > &  lstContainer) [inline, virtual]

Appends an container to this container.

Parameters:
[in]lstContainerContainer to add
Returns:
This container

Implements PLCore::Container< bool >.

virtual bool& PLCore::Bitset::AddAtIndex ( int  nIndex) [override, virtual]

Appends an element to the container at the given index.

Parameters:
[in]nIndexIndex were to add the new element, if < 0 add at end, must be <= 'GetNumOfElements()'
Returns:
Reference to the new element, reference to the 'Null'-object on error (maybe invalid index?)
Note:
  • If the given index is equal to 'GetNumOfElements()' the element is appended at the end of the container
  • The container is only enlarged by one element, this means that if 'GetNumOfElements()' is currently 0 and you give an index of 5 the container is NOT automatically resized to 6 elements!

Implements PLCore::Container< bool >.

virtual bool& PLCore::Bitset::AddAtIndex ( const bool &  Element,
int  nIndex 
) [override, virtual]

Appends an element to the container at the given index.

Parameters:
[in]ElementElement to add
[in]nIndexIndex were to add the new element, if < 0 add at end, must be <= 'GetNumOfElements()'
Returns:
Reference to the new element, reference to the 'Null'-object on error (maybe invalid index?)
See also:

Implements PLCore::Container< bool >.

bool PLCore::Bitset::Remove ( const bool &  Element) [inline, virtual]

Removes an element (first appearance) from the container.

Parameters:
[in]ElementElement to remove
Returns:
'true' if all went fine, else 'false' (maybe 'Element' is not within the container?)

Implements PLCore::Container< bool >.

virtual bool PLCore::Bitset::RemoveAtIndex ( uint32  nElement) [override, virtual]

Removes the element at the given index from the container.

Parameters:
[in]nElementIndex of the element to remove
Returns:
'true' if all went fine, else 'false' (maybe invalid index?)

Implements PLCore::Container< bool >.

Container< bool > & PLCore::Bitset::operator-= ( const bool &  Element) [inline, virtual]

Removes an element from the container.

Parameters:
[in]ElementElement to remove
Returns:
This container

Implements PLCore::Container< bool >.

virtual bool PLCore::Bitset::Remove ( const Container< bool > &  lstContainer,
uint32  nStart = 0,
uint32  nCount = 0 
) [override, virtual]

Removes the elements of an container from this container.

Parameters:
[in]lstContainerContainer to remove the elements from this container
[in]nStartIndex the remove operation should start
[in]nCountNumber of elements to remove, if 0 remove all elements of lstContainer behind nStart
Returns:
'true' if all went fine, else 'false'

Implements PLCore::Container< bool >.

Container< bool > & PLCore::Bitset::operator-= ( const Container< bool > &  lstContainer) [inline, virtual]

Removes the elements of an container from this container.

Parameters:
[in]lstContainerContainer to remove the elements from this container
Returns:
This container

Implements PLCore::Container< bool >.

virtual bool PLCore::Bitset::Copy ( const Container< bool > &  lstContainer,
uint32  nStart = 0,
uint32  nCount = 0 
) [override, virtual]

Makes this container to a copy of another container.

Parameters:
[in]lstContainerContainer to copy from
[in]nStartIndex the copy operation should start
[in]nCountNumber of elements to copy, if 0 copy all elements of lstContainer behind nStart
Returns:
'true' if all went fine, else 'false'

Implements PLCore::Container< bool >.

Container< bool > & PLCore::Bitset::operator= ( const Container< bool > &  lstContainer) [inline, virtual]

Makes this container to a copy of another container.

Parameters:
[in]lstContainerContainer to copy from
Returns:
Reference to this instance

Implements PLCore::Container< bool >.

virtual bool PLCore::Bitset::Compare ( const Container< bool > &  lstContainer,
uint32  nStart = 0,
uint32  nCount = 0 
) const [override, virtual]

Compares two containers.

Parameters:
[in]lstContainerContainer to compare with
[in]nStartIndex the compare operation should start
[in]nCountNumber of elements to compare, if 0 compare all elements of lstContainer behind nStart
Returns:
'true' if both containers are equal, else 'false'

Implements PLCore::Container< bool >.

bool PLCore::Bitset::operator== ( const Container< bool > &  lstContainer) const [inline, virtual]

Compares two containers.

Parameters:
[in]lstContainerContainer to compare with
Returns:
'true' if both containers are equal, else 'false'

Implements PLCore::Container< bool >.

bool PLCore::Bitset::operator!= ( const Container< bool > &  lstContainer) const [inline, virtual]

Compares two containers.

Parameters:
[in]lstContainerContainer to compare with
Returns:
'true' if both containers are not equal, else 'false'

Implements PLCore::Container< bool >.


The documentation for this class was generated from the following files:


PixelLight PixelLight 0.9.10-R1
Copyright (C) 2002-2011 by The PixelLight Team
Last modified Fri Dec 23 2011 15:51:13
The content of this PixelLight document is published under the
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported