Yate
|
A slice vector holding bits. More...
#include <yatemath.h>
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 |
![]() | |
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) |
![]() | |
virtual | ~MathVectorBase () |
![]() | |
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 unsigned int | objSize () |
static unsigned int | size (unsigned int len) |
![]() | |
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 () |
![]() | |
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) |
![]() | |
RefStorage * | m_storage |
Obj * | m_data |
unsigned int | m_length |
unsigned int | m_maxLen |
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.
|
inline |
Constructor
Referenced by BitVector::slice(), and BitVector::tail().
Copy constructor. Builds a slice of another vector
other | Original vector |
|
inlineexplicit |
Constructor. Build the vector storage
len | Length of data |
maxLen | Optional vector maximum length (it will be adjusted to be at least len) |
Constructor. Builds a slice of another vector
other | Original vector |
offs | Offset in the original vector |
len | The number of elements (0 to use all available from offset) |
|
explicit |
Constructor. Build from string bits
str | String bits ('1' -> 1, else -> 0) |
maxLen | Optional vector maximum length |
Append bits to string
buf | Destination string |
offs | Optional starting index |
len | The number of elements to be added (negative to add all) |
Referenced by TelEngine::operator<<(), and BitVector::toString().
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
dest | The destination vector |
|
inline |
Retrieve vector head
len | The number of elements to retrieve |
References BitVector::slice().
|
inline |
Retrieve vector head
dest | Destination vector |
len | The number of elements to retrieve |
References BitVector::slice().
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)
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 |
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
dest | Destination vector |
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
input | The input vector |
|
inline |
Set a slice containing another vector
other | Original vector |
offs | Offset in the original vector |
len | The number of elements (0 to use all available from offset) |
|
inline |
Retrieve a vector slice
offs | Offset in our vector |
len | The number of elements to retrieve |
References BitVector::BitVector().
Referenced by BitVector::head().
|
inline |
Set a slice of this vector to another one. The destination vector will be changed
dest | Destination vector |
offs | Offset in our vector |
len | The number of elements (0 to use all available from offset) |
|
inline |
Retrieve vector tail (last elements)
len | The number of elements to retrieve |
References BitVector::BitVector(), and SliceVector< Obj >::length().
|
inline |
Retrieve vector tail (last elements)
len | The number of elements to retrieve |
dest | Destination vector |
References SliceVector< Obj >::length().
|
inline |
Build a String from vector bits and return it
offs | Optional starting index |
len | The number of elements to be added (negative to add all) |
References BitVector::appendTo().
void unpack | ( | uint64_t | value, |
unsigned int | offs = 0 , |
||
uint8_t | len = 64 |
||
) |
Unpack up to 64 bits into this vector, LSB first
value | Value to unpack |
offs | Optional start offset |
len | The number of bits to unpack |
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
src | Source byte vector |
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
value | The value to be unpacked |
offs | Optional start offset |
len | The number of bits to unpack |
Referenced by BitVector::unpackMsb16().
|
inline |
Unpack up to 16 bits into this vector (MSB to LSB). MSB from value is the first unpacked bit
value | The value to be unpacked |
offs | Optional start offset |
len | The number of bits to unpack |
References BitVector::unpackMsb().
bool valid | ( | ) | const |
Check if this vector contains valid values (0 or 1)
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 ...
value | Value to use |
offs | Start position in this BitVector |
len | The number of bits to use |
Referenced by BitVector::xorMsb16().
|
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 ...
value | Value to use |
offs | Start position in this BitVector |
len | The number of bits to use |
References BitVector::xorMsb().