BitString Class Reference

a string of bits More...

#include <BitString.h>

List of all members.

Public Member Functions

 BitString (EmbValue arity=2)
 BitString (const BitString &bs)
 BitString (const unsigned long l)
 BitString (const std::vector< BYTE > &d)
 BitString (const std::string &d)
void setArity (EmbValue arity)
EmbValue getArity (void) const
UWORD32 getLength (void) const
UWORD32 getNAryLength (void) const
BitStringclear (void)
BitStringappend (const BIT v)
BitStringappend (const BYTE v, const unsigned short n=8)
BitStringappend (const UWORD16 v, const unsigned short n=16)
BitStringappend (const UWORD32 v, const unsigned short n=32)
BitStringappend (const std::string &v)
BitStringappend (const std::vector< BYTE > &v)
BitStringappend (const BitString &v)
BitStringsetBit (unsigned long i, BIT v)
BitString getBits (const unsigned long s, const unsigned long l) const
BitString cutBits (const unsigned long s, const unsigned long l)
UWORD32 getValue (const unsigned long s, const unsigned short l) const
const std::vector< BYTE > & getBytes (void) const
BitStringtruncate (const unsigned long s, const unsigned long e)
BitStringpad (const unsigned long mult, const BIT v)
BitStringpadRandom (const unsigned long mult)
BYTE getNAry (unsigned long p) const
void appendNAry (BYTE v)
BIT operator[] (const unsigned long i) const
BitStringoperator^= (const BitString &v)
bool operator== (const BitString &v) const
bool operator!= (const BitString &v) const
void print (unsigned short spc=0) const

Private Member Functions

void _append (BIT v)
void clearUnused (void)

Private Attributes

UWORD32 Length
 the number of bits in Data
EmbValue Arity
 the arity that will be used for getLength/getNAry/appendNAry
unsigned short ArityNBits
 the number of Bits per n-ary digit (where n is Arity)
std::vector< BYTEData
 the actual data

Detailed Description

This class provides a way to conveniently store and manipulate a string of bits. Various objects can be appended to a BitString.

For data storage a vector of BYTEs is used with little endian bit encoding, i.e. the first bit is the least significant bit of the first byte and so on.


Constructor & Destructor Documentation

BitString::BitString ( EmbValue  arity = 2  ) 

construct an empty BitString

BitString::BitString ( const BitString bs  ) 

copy constructor

BitString::BitString ( const unsigned long  l  ) 

construct a BitString containing l bits with value zero

BitString::BitString ( const std::vector< BYTE > &  d  ) 

construct a BitString containing the data in d

BitString::BitString ( const std::string &  d  ) 

construct a BitString containing the characters in d as 8 bit unsigned chars


Member Function Documentation

void BitString::_append ( BIT  v  )  [private]
BitString & BitString::append ( const BitString v  ) 

append the BitString v to this BitString

Parameters:
v the BitString to be appended
BitString & BitString::append ( const std::vector< BYTE > &  v  ) 

append the vector v byte-wise to this BitString

BitString & BitString::append ( const std::string &  v  ) 

append the string v to this BitString

BitString & BitString::append ( const UWORD32  v,
const unsigned short  n = 32 
)

append n lower order bits of v to this BitString

Parameters:
v the value to be appended
n the number of bits to be appended
BitString & BitString::append ( const UWORD16  v,
const unsigned short  n = 16 
)

append n lower order bits of v to this BitString

Parameters:
v the value to be appended
n the number of bits to be appended
BitString & BitString::append ( const BYTE  v,
const unsigned short  n = 8 
)

append n lower order bits of v to this BitString

Parameters:
v the value to be appended
n the number of bits to be appended
BitString & BitString::append ( const BIT  v  ) 

append the bit v to this BitString

void BitString::appendNAry ( BYTE  v  ) 

append an n-ary digit to this BitString

Parameters:
v the n-ary value to be appended
BitString & BitString::clear ( void   ) 

delete the contents of this Bitstring

void BitString::clearUnused ( void   )  [private]

clear unused part of last byte (_append depends on this)

BitString BitString::cutBits ( const unsigned long  s,
const unsigned long  l 
)

cut some bits out of this BitString

Parameters:
s the index of the first bit to be removed from this BitString
l the total number of bits to be removed
Returns:
the BitString containing of the bits [s...s+(l-1)] of this BitString

After calling cutBits, this BitString consists of the bits 0,...,s-1,s+l,... .

EmbValue BitString::getArity ( void   )  const [inline]
BitString BitString::getBits ( const unsigned long  s,
const unsigned long  l 
) const

get a BitString that is a part of this BitString

Parameters:
s the index of the first bit to be copied from this BitString
l the total number of bits to be used for the return value
Returns:
the BitString containing of the bits [s...s+(l-1)] of this BitString
const std::vector< BYTE > & BitString::getBytes ( void   )  const

get the contents of this BitString as vector of bytes

Returns:
the contents of this BitString as vector of bytes

getLength() % 8 must be 0 to call this function

UWORD32 BitString::getLength ( void   )  const [inline]

get the number of bits in this BitString

BYTE BitString::getNAry ( unsigned long  p  )  const

get an n-ary digit from this BitString

Parameters:
p the position (in the n-ary representation of this BitString)
Returns:
the p-th n-ary digit
UWORD32 BitString::getNAryLength ( void   )  const [inline]

get the number of EmbValues in this BitString (using this BitString's arity)

UWORD32 BitString::getValue ( const unsigned long  s,
const unsigned short  l 
) const

return a value composed from bits in this BitString

Parameters:
s the index of the first bit to be used for the return value
l the total number of bits to be used for the return value (must be <= 32)
Returns:
the value (*this)[s],...,(*this)[s+l-1]
bool BitString::operator!= ( const BitString v  )  const

compare this BitString with the BitString v

Returns:
true iff the lengths are not equal or there exists an index with different values
bool BitString::operator== ( const BitString v  )  const

compare this BitString with the BitString v

Returns:
true iff the lengths are equal and for every valid index the value is equal
BIT BitString::operator[] ( const unsigned long  i  )  const

get the value of the i-th bit

BitString & BitString::operator^= ( const BitString v  ) 

xor v with this BitString, saving the result in this Bitstring. The result has the same length as this BitString.

BitString & BitString::pad ( const unsigned long  mult,
const BIT  v 
)

pad this BitString with the value in v

Parameters:
mult this BitString is padded until size is a multiple of mult (given in bits)
v the value this BitString should be padded with
BitString & BitString::padRandom ( const unsigned long  mult  ) 

pad this BitString with random data

Parameters:
mult this BitString is padded until size is a multiple of mult (given in bits)
void BitString::print ( unsigned short  spc = 0  )  const
void BitString::setArity ( EmbValue  arity  ) 
BitString & BitString::setBit ( unsigned long  i,
BIT  v 
)

set the p-th bit to v

Parameters:
i the index (must be < getLength())
v the value
BitString & BitString::truncate ( const unsigned long  s,
const unsigned long  e 
)

truncate this BitString

Parameters:
s start
e end
Returns:
this BitString modified to contain only (*this)[s]...(*this)[e - 1]

Member Data Documentation

unsigned short BitString::ArityNBits [private]
std::vector<BYTE> BitString::Data [private]

The documentation for this class was generated from the following files:
Generated on Mon Jan 3 13:40:20 2011 for steghide by  doxygen 1.6.3