|
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 |
| Public Member Functions inherited from SliceVector< uint8_t > | |
| SliceVector () | |
| SliceVector (const SliceVector &other) | |
| SliceVector (unsigned int len, const uint8_t *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 () |
| uint8_t * | data (unsigned int offs, unsigned int len) |
| const uint8_t * | data (unsigned int offs, unsigned int len) const |
| uint8_t * | data (unsigned int offs=0) |
| const uint8_t * | data (unsigned int offs=0) const |
| uint8_t * | data (unsigned int offs, unsigned int len, uint8_t *&eod) |
| const uint8_t * | data (unsigned int offs, unsigned int len, const uint8_t *&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 uint8_t &value) |
| void | apply (void(*func)(uint8_t &)) |
| uint8_t | sum () const |
| uint8_t | sumApply (uint8_t(*func)(const uint8_t &)) const |
| float | sumApplyF (float(*func)(const uint8_t &)) const |
| bool | sum (const SliceVector &other) |
| void | sum (const uint8_t &value) |
| bool | sub (const SliceVector &other) |
| void | sub (const uint8_t &value) |
| bool | mul (const SliceVector &other) |
| void | mul (const uint8_t &value) |
| void | mul (float value) |
| uint8_t & | operator[] (unsigned int index) |
| const uint8_t & | operator[] (unsigned int index) const |
| uint8_t & | operator[] (signed int index) |
| const uint8_t & | 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 uint8_t &value) |
| SliceVector & | operator-= (const SliceVector &other) |
| SliceVector & | operator-= (const uint8_t &value) |
| SliceVector & | operator*= (const SliceVector &other) |
| SliceVector & | operator*= (const uint8_t &value) |
| SliceVector & | operator*= (float value) |
| bool | equals (const SliceVector &other) const |
| String & | dump (String &buf, String &(*func)(String &s, const uint8_t &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 uint8_t &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< uint8_t > | |
| 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< uint8_t > | |
| uint8_t * | end (uint8_t *start, unsigned int len) |
| const uint8_t * | end (const uint8_t *start, unsigned int len) const |
| bool | setData (uint8_t *data=0, unsigned int len=0, unsigned int maxLen=0) |
| bool | initStorage (unsigned int len, const uint8_t *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< uint8_t > | |
| RefStorage * | m_storage |
| uint8_t * | 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(), BitVector(), head(), head(), setSlice(), slice(), slice(), tail(), and tail().
|
inline |
Copy constructor. Builds a slice of another vector
| other | Original vector |
References BitVector().
|
inlineexplicit |
Constructor. Build the vector storage
| len | Length of data |
| maxLen | Optional vector maximum length (it will be adjusted to be at least len) |
References SliceVector< uint8_t >::maxLen().
|
inlineexplicit |
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) |
References BitVector().
|
explicit |
Constructor. Build from string bits
References SliceVector< uint8_t >::maxLen().
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 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
| dest | Destination vector |
| len | The number of elements to retrieve |
References BitVector(), and slice().
|
inline |
Retrieve vector head
| len | The number of elements to retrieve |
References BitVector(), and slice().
| 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 |
| 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 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) |
References BitVector().
|
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) |
References BitVector().
|
inline |
Retrieve a vector slice
| offs | Offset in our vector |
| len | The number of elements to retrieve |
References BitVector().
|
inline |
Retrieve vector tail (last elements)
| len | The number of elements to retrieve |
| dest | Destination vector |
References BitVector(), and SliceVector< uint8_t >::length().
|
inline |
Retrieve vector tail (last elements)
| len | The number of elements to retrieve |
References BitVector(), and SliceVector< uint8_t >::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 appendTo().
| 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 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 |
| 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 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 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 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 xorMsb().