Yate: BitVector Class Reference

Yate

Public Member Functions | List of all members
BitVector Class Reference

A slice vector holding bits. More...

`#include <yatemath.h>`

Inheritance diagram for BitVector:

## Public Member Functions
| BitVector ()
| BitVector (const BitVector &other)
| BitVector (unsigned int len, unsigned int maxLen=0)
| BitVector (const BitVector &other, unsigned int offs, unsigned int len=0)
| BitVector (const char *str, unsigned int maxLen=0)
bool | valid () const
bool | get (FloatVector &dest) const
bool | set (const FloatVector &input)
void | xorMsb (uint32_t value, unsigned int offs=0, uint8_t len=32)
void | xorMsb16 (uint16_t value, unsigned int offs=0, uint8_t len=16)
uint64_t | pack (unsigned int offs=0, int len=-1) const
void | unpack (uint64_t value, unsigned int offs=0, uint8_t len=64)
void | unpackMsb (uint32_t value, unsigned int offs=0, uint8_t len=32)
void | unpackMsb16 (uint16_t value, unsigned int offs=0, uint8_t len=16)
bool | pack (ByteVector &dest) const
bool | unpack (const ByteVector &src)
String & | appendTo (String &buf, unsigned int offs=0, int len=-1) const
String | toString (unsigned int offs, int len=-1) const
bool | setSlice (const BitVector &other, unsigned int offs=0, unsigned int len=0)
BitVector | head (unsigned int len) const
bool | head (BitVector &dest, unsigned int len) const
BitVector | tail (unsigned int len) const
bool | tail (BitVector &dest, unsigned int len) const
BitVector | slice (unsigned int offs, unsigned int len) const
bool | slice (BitVector &dest, unsigned int offs, unsigned int len=0) const
Public Member Functions inherited from SliceVector< Obj >
| SliceVector ()
| SliceVector (const SliceVector &other)
| SliceVector (unsigned int len, const Obj *buf=0, unsigned int maxLen=0)
| SliceVector (const SliceVector &v1, const SliceVector &v2)
| SliceVector (const SliceVector &v1, const SliceVector &v2, const SliceVector &v3)
| SliceVector (const SliceVector &other, unsigned int offs, unsigned int len=0)
virtual | ~SliceVector ()
Obj * | data (unsigned int offs, unsigned int len)
const Obj * | data (unsigned int offs, unsigned int len) const
Obj * | data (unsigned int offs=0)
const Obj * | data (unsigned int offs=0) const
Obj * | data (unsigned int offs, unsigned int len, Obj *&eod)
const Obj * | data (unsigned int offs, unsigned int len, const Obj *&eod) const
unsigned int | length () const
unsigned int | maxLen () const
unsigned int | size () const
unsigned int | available (unsigned int offs, int len=-1) const
unsigned int | availableClamp (unsigned int clamp, unsigned int offs=0, int len=-1) const
virtual unsigned int | vectorSize () const
bool | resize (unsigned int len)
void | resizeMax ()
void | steal (SliceVector &other)
void | resetStorage (unsigned int len, unsigned int maxLen=0)
bool | setSlice (const SliceVector &other, unsigned int offs=0, unsigned int len=0)
SliceVector | head (unsigned int len) const
bool | head (SliceVector &dest, unsigned int len) const
SliceVector | tail (unsigned int len) const
bool | tail (SliceVector &dest, unsigned int len) const
SliceVector | slice (unsigned int offs, unsigned int len) const
bool | slice (SliceVector &dest, unsigned int offs, unsigned int len=0) const
bool | copy (const SliceVector &src, unsigned int len, unsigned int offs=0, unsigned int srcOffs=0)
void | bzero (unsigned int offs, unsigned int len)
void | bzero ()
void | fill (const Obj &value)
void | apply (void(*func)(Obj &))
Obj | sum () const
Obj | sumApply (Obj(*func)(const Obj &)) const
float | sumApplyF (float(*func)(const Obj &)) const
bool | sum (const SliceVector &other)
void | sum (const Obj &value)
bool | sub (const SliceVector &other)
void | sub (const Obj &value)
bool | mul (const SliceVector &other)
void | mul (const Obj &value)
void | mul (float value)
Obj & | operator[] (unsigned int index)
const Obj & | operator[] (unsigned int index) const
Obj & | operator[] (signed int index)
const Obj & | operator[] (signed int index) const
bool | operator== (const SliceVector &other) const
bool | operator!= (const SliceVector &other) const
SliceVector & | operator= (const SliceVector &other)
SliceVector & | operator+= (const SliceVector &other)
SliceVector & | operator+= (const Obj &value)
SliceVector & | operator-= (const SliceVector &other)
SliceVector & | operator-= (const Obj &value)
SliceVector & | operator*= (const SliceVector &other)
SliceVector & | operator*= (const Obj &value)
SliceVector & | operator*= (float value)
bool | equals (const SliceVector &other) const
String & | dump (String &buf, String &(*func)(String &s, const Obj &o, const char *sep, const char *fmt), const char *sep=",", const char *fmt=0) const
String & | dump (String &buf, unsigned int lineLen, String &(*func)(String &s, const Obj &o, const char *sep, const char *fmt), unsigned int offset=0, const char *linePrefix=0, const char *suffix="\r\n", const char *sep=",", const char *fmt=0) const
String & | hexify (String &buf, char sep=0) const
String & | dumpHex (String &buf, unsigned int lineLen, unsigned int offset=0, const char *linePrefix=0, const char *suffix="\r\n") const
int | unHexify (const char *str, unsigned int len, int sep=255)
int | unHexify (const String &str, int sep=255)
Public Member Functions inherited from MathVectorBase
virtual | ~MathVectorBase ()
Public Member Functions inherited from GenObject
| GenObject ()
virtual | ~GenObject ()
virtual bool | alive () const
virtual void | destruct ()
virtual const String & | toString () const
virtual const String & | traceId () const
virtual void * | getObject (const String &name) const
NamedCounter * | getObjCounter () const
NamedCounter * | setObjCounter (NamedCounter *counter)

## Additional Inherited Members
Static Public Member Functions inherited from SliceVector< Obj >
static unsigned int | objSize ()
static unsigned int | size (unsigned int len)
Static Public Member Functions inherited from GenObject
static void * | getObject (const String &name, const GenObject *obj)
static bool | getObjCounting ()
static void | setObjCounting (bool enable)
static NamedCounter * | getObjCounter (const String &name, bool create=true)
static ObjList & | getObjCounters ()
Protected Member Functions inherited from SliceVector< Obj >
Obj * | end (Obj *start, unsigned int len)
const Obj * | end (const Obj *start, unsigned int len) const
bool | setData (Obj *data=0, unsigned int len=0, unsigned int maxLen=0)
bool | initStorage (unsigned int len, const Obj *data=0, unsigned int maxLen=0)
bool | initSlice (bool del, const SliceVector &other, unsigned int offs=0, unsigned int len=0)
Protected Attributes inherited from SliceVector< Obj >
RefStorage * | m_storage
Obj * | m_data
unsigned int | m_length
unsigned int | m_maxLen

## Detailed Description

A slice vector holding bits.

This vector holds bit values using 1 byte. It implements methods operating on bits. NOTE: The array indexing operator allows setting invalid values (not 1 or 0). The pack/unpack methods are safe (they will handle non 0 values as bit 1). The comparison operators may fail for vectors containing values other than 0 or 1.

## Constructor & Destructor Documentation

## ◆ BitVector() [1/5]

BitVector | ( |  | ) |
| inline

Constructor

Referenced by BitVector::slice(), and BitVector::tail().

## ◆ BitVector() [2/5]

BitVector | ( | const BitVector & | other | ) |
| inline

Copy constructor. Builds a slice of another vector

Parameters

  other | Original vector

## ◆ BitVector() [3/5]

BitVector | ( | unsigned int | len,
|  | unsigned int | maxLen = 0 )
| inlineexplicit

Constructor. Build the vector storage

Parameters

  len | Length of data
  maxLen | Optional vector maximum length (it will be adjusted to be at least len)

## ◆ BitVector() [4/5]

BitVector | ( | const BitVector & | other,
|  | unsigned int | offs,
|  | unsigned int | len = 0 )
| inlineexplicit

Constructor. Builds a slice of another vector

Parameters

  other | Original vector
  offs | Offset in the original vector
  len | The number of elements (0 to use all available from offset)

## ◆ BitVector() [5/5]

BitVector | ( | const char * | str,
|  | unsigned int | maxLen = 0 )
| explicit

Constructor. Build from string bits

Parameters

  str | String bits ('1' -> 1, else -> 0)
  maxLen | Optional vector maximum length

## Member Function Documentation

## ◆ appendTo()

String & appendTo | ( | String & | buf,
|  | unsigned int | offs = 0,
|  | int | len = -1 ) const

Append bits to string

Parameters

  buf | Destination string
  offs | Optional starting index
  len | The number of elements to be added (negative to add all)

Returns
  Destination string address

Referenced by TelEngine::operator<<(), and BitVector::toString().

## ◆ get()

bool get | ( | FloatVector & | dest | ) | const

Set float bit values from this vector (0 -> 0.0F, non 0 -> 1.0F). The destination vector will be resized to this vector's length

Parameters

  dest | The destination vector

Returns
  True on success, false if destination resize failed

## ◆ head() [1/2]

bool head | ( | BitVector & | dest,
|  | unsigned int | len ) const
| inline

Retrieve vector head

Parameters

  dest | Destination vector
  len | The number of elements to retrieve

Returns
  True on success, false on failure (not enough data in our vector)

References BitVector::slice().

## ◆ head() [2/2]

BitVector head | ( | unsigned int | len | ) | const
| inline

Retrieve vector head

Parameters

  len | The number of elements to retrieve

Returns
  A vector containing the first elements of this vector

References BitVector::slice().

## ◆ pack() [1/2]

bool pack | ( | ByteVector & | dest | ) | const

Pack bits into a ByteVector (LSB source to MSB in destination). MSB of first byte in destination will have the same value of the first bit in this vector. Remaining elements in destination are left untouched

Parameters

  dest | Destination vector

Returns
  True on success, false on failure (not enough space in destination vector)

## ◆ pack() [2/2]

uint64_t pack | ( | unsigned int | offs = 0,
|  | int | len = -1 ) const

Pack up to 64 bits, LSB-first (i.e. first bit goes to LSB in destination)

Parameters

  offs | The start offset
  len | The number of elements to be packed (-1 to pack all available). No more than 64 bits will be packed

Returns
  The packed 64-bit value

## ◆ set()

bool set | ( | const FloatVector & | input | ) |

Initializes this vector from float values (0.0F -> 0, non 0 -> 1). The vector will be resized to input length

Parameters

  input | The input vector

Returns
  True on success, false if resize failed

## ◆ setSlice()

bool setSlice | ( | const BitVector & | other,
|  | unsigned int | offs = 0,
|  | unsigned int | len = 0 )
| inline

Set a slice containing another vector

Parameters

  other | Original vector
  offs | Offset in the original vector
  len | The number of elements (0 to use all available from offset)

Returns
  True on success, false on failure

## ◆ slice() [1/2]

bool slice | ( | BitVector & | dest,
|  | unsigned int | offs,
|  | unsigned int | len = 0 ) const
| inline

Set a slice of this vector to another one. The destination vector will be changed

Parameters

  dest | Destination vector
  offs | Offset in our vector
  len | The number of elements (0 to use all available from offset)

Returns
  True on success, false on failure (not enough data in our vector)

## ◆ slice() [2/2]

BitVector slice | ( | unsigned int | offs,
|  | unsigned int | len ) const
| inline

Retrieve a vector slice

Parameters

  offs | Offset in our vector
  len | The number of elements to retrieve

Returns
  A vector containing the requested slice (empty if offset/length are invalid)

References BitVector::BitVector().

Referenced by BitVector::head(), and BitVector::head().

## ◆ tail() [1/2]

bool tail | ( | BitVector & | dest,
|  | unsigned int | len ) const
| inline

Retrieve vector tail (last elements)

Parameters

  len | The number of elements to retrieve
  dest | Destination vector

Returns
  True on success, false on failure (not enough data in our vector)

References SliceVector< Obj >::length().

## ◆ tail() [2/2]

BitVector tail | ( | unsigned int | len | ) | const
| inline

Retrieve vector tail (last elements)

Parameters

  len | The number of elements to retrieve

Returns
  A vector containing the last elements of this vector

References BitVector::BitVector(), and SliceVector< Obj >::length().

## ◆ toString()

String toString | ( | unsigned int | offs,
|  | int | len = -1 ) const
| inline

Build a String from vector bits and return it

Parameters

  offs | Optional starting index
  len | The number of elements to be added (negative to add all)

Returns
  A newly created String containing vector bits

References BitVector::appendTo().

## ◆ unpack() [1/2]

bool unpack | ( | const ByteVector & | src | ) |

Unpack a ByteVector into this BitVector. MSB of the first element in source goes to first bit in this vector. Remaining bits are left untouched

Parameters

  src | Source byte vector

Returns
  True on success, false if there is not enough space to unpack

## ◆ unpack() [2/2]

void unpack | ( | uint64_t | value,
|  | unsigned int | offs = 0,
|  | uint8_t | len = 64 )

Unpack up to 64 bits into this vector, LSB first

Parameters

  value | Value to unpack
  offs | Optional start offset
  len | The number of bits to unpack

## ◆ unpackMsb()

void unpackMsb | ( | uint32_t | value,
|  | unsigned int | offs = 0,
|  | uint8_t | len = 32 )

Unpack up to 32 bits into this vector (MSB to LSB). MSB from value is the first unpacked bit

Parameters

  value | The value to be unpacked
  offs | Optional start offset
  len | The number of bits to unpack

Referenced by BitVector::unpackMsb16().

## ◆ unpackMsb16()

void unpackMsb16 | ( | uint16_t | value,
|  | unsigned int | offs = 0,
|  | uint8_t | len = 16 )
| inline

Unpack up to 16 bits into this vector (MSB to LSB). MSB from value is the first unpacked bit

Parameters

  value | The value to be unpacked
  offs | Optional start offset
  len | The number of bits to unpack

References BitVector::unpackMsb().

## ◆ valid()

bool valid | ( |  | ) | const

Check if this vector contains valid values (0 or 1)

Returns
  True on success, false if the vector contains values other than 0 or 1

## ◆ xorMsb()

void xorMsb | ( | uint32_t | value,
|  | unsigned int | offs = 0,
|  | uint8_t | len = 32 )

Apply XOR on vector elements using a given value's bits, MSB first. Given v31,v30,...,v0 the value's bits in MSB order the result will be data()[offs] ^= v31, data()[offs+1] ^= v30 ...

Parameters

  value | Value to use
  offs | Start position in this BitVector
  len | The number of bits to use

Referenced by BitVector::xorMsb16().

## ◆ xorMsb16()

void xorMsb16 | ( | uint16_t | value,
|  | unsigned int | offs = 0,
|  | uint8_t | len = 16 )
| inline

Apply XOR on vector elements using a given value's bits, MSB first. Given v15,v14,...,v0 the value's bits in MSB order the result will be data()[offs] ^= v15, data()[offs+1] ^= v14 ...

Parameters

  value | Value to use
  offs | Start position in this BitVector
  len | The number of bits to use

References BitVector::xorMsb().

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

- yatemath.h