|
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< 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 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 |
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().
1.8.8