50 :mCoeff(wCoeff),mState(0),
51 mMask((1ULL<<wLen)-1),
52 mLen(wLen),mLen_1(wLen-1)
59 uint64_t
state()
const {
return mState & mMask; }
60 unsigned size()
const {
return mLen; }
69 const unsigned fb = (mState>>(mLen_1)) & 0x01;
70 mState = (mState<<1) ^ (inBit & 0x01);
71 if (fb) mState ^= mCoeff;
80 const unsigned fb = ((mState>>(mLen_1)) ^ inBit) & 0x01;
82 if (fb) mState ^= mCoeff;
100 Parity(uint64_t wCoefficients,
unsigned wParitySize,
unsigned wCodewordSize)
102 mCodewordSize(wCodewordSize)
109 uint64_t syndrome(
const BitVector& receivedCodeword);
127 if (other.getData()) {
130 this->makeAlias(other);
143 assert(this->getData() == 0);
144 this->vConcat(other1,other2);
157 char* wStart = this->begin() + start;
158 char* wEnd = wStart + span;
159 assert(wEnd<=this->end());
160 #if BITVECTOR_REFCNTS 217 uint64_t peekField(
size_t readIndex,
unsigned length)
const;
218 uint64_t peekFieldReversed(
size_t readIndex,
unsigned length)
const;
219 uint64_t readField(
size_t& readIndex,
unsigned length)
const;
220 uint64_t readFieldReversed(
size_t& readIndex,
unsigned length)
const;
221 void fillField(
size_t writeIndex, uint64_t value,
unsigned length);
222 void fillFieldReversed(
size_t writeIndex, uint64_t value,
unsigned length);
223 void writeField(
size_t& writeIndex, uint64_t value,
unsigned length);
224 void writeFieldReversed(
size_t& writeIndex, uint64_t value,
unsigned length);
225 void write0(
size_t& writeIndex) { writeField(writeIndex,0,1); }
226 void write1(
size_t& writeIndex) { writeField(writeIndex,1,1); }
231 unsigned sum()
const;
234 void map(
const unsigned *map,
size_t mapSize,
BitVector& dest)
const;
237 void unmap(
const unsigned *map,
size_t mapSize,
BitVector& dest)
const;
240 void pack(
unsigned char*)
const;
243 void pack2(
unsigned char*)
const;
246 std::string packToString()
const;
249 void unpack(
const unsigned char*);
252 void hex(std::ostream&)
const;
253 std::string hexstr()
const;
257 bool unhex(
const char*);
263 void dup(
BitVector other) { assert(!this->getData()); makeAlias(other); assert(this->mStart == other.
mStart); }
268 printf(
"BitVector::operator=\n");
277 void copyPunctured(
BitVector &dst,
const unsigned *puncture,
const size_t plth);
281 bool bit(
size_t index)
const 284 const char *dp = this->begin()+index;
285 assert(dp<this->end());
291 assert(this->mStart+index<this->mEnd);
292 return this->mStart[index];
297 assert(this->mStart+index<this->mEnd);
298 return this->mStart[index];
304 char *dp = this->mStart+index;
305 assert(dp<this->mEnd);
314 #define BitVector2 BitVector 346 :
Vector<float>(wData,length)
350 :
Vector<float>(wData,wStart,wEnd)
366 float* wStart = mStart + start;
367 float* wEnd = wStart + span;
373 {
return segment(0,
size()); }
387 float getEnergy(
float *low=0)
const;
388 float getSNR()
const;
394 bool bit(
size_t index)
const 396 const float *dp = mStart+index;
405 void copyUnPunctured(
SoftVector &dst,
const unsigned *puncture,
const size_t plth);
410 const float *dp = mStart+index;
418 float *dp = mStart+index;
BitVector(VectorDataType wData, char *wStart, char *wEnd)
Definition: BitVector.h:122
T * mStart
start of useful data
Definition: Vector.h:132
SoftVector(Vector< float > source)
Definition: BitVector.h:357
void encoderShift(unsigned inBit)
Definition: BitVector.h:78
float softbit(size_t index) const
Definition: BitVector.h:408
void clear()
Definition: BitVector.h:55
SoftVector(float *wData, float *wStart, float *wEnd)
Definition: BitVector.h:349
unsigned size() const
Definition: BitVector.h:60
const SoftVector head(size_t span) const
Definition: BitVector.h:379
BitVector(const BitVector &other1, const BitVector &other2)
Definition: BitVector.h:141
Definition: BitVector.h:92
char * iterator
Definition: BitVector.h:309
SoftVector tail(size_t start)
Definition: BitVector.h:380
std::ostream & operator<<(std::ostream &, const BitVector &)
void syndromeShift(unsigned inBit)
Definition: BitVector.h:67
const BitVector cloneSegment(size_t start, size_t span) const
Definition: BitVector.h:169
const char & operator[](size_t index) const
Definition: BitVector.h:295
uint8_t data[0]
Definition: gsm_04_08.h:52
Definition: BitVector.h:115
BitVector tail(size_t start)
Definition: BitVector.h:184
BitVector alias() const
Definition: BitVector.h:179
char * VectorDataType
Definition: Vector.h:129
void write1(size_t &writeIndex)
Definition: BitVector.h:226
void dup(BitVector other)
Definition: BitVector.h:263
BitVector head(size_t span)
Definition: BitVector.h:183
SoftVector alias()
Definition: BitVector.h:372
Parity(uint64_t wCoefficients, unsigned wParitySize, unsigned wCodewordSize)
Definition: BitVector.h:100
Definition: BitVector.h:328
SoftVector segment(size_t start, size_t span)
Definition: BitVector.h:364
BitVector segment(size_t start, size_t span)
Definition: BitVector.h:155
void write0(size_t &writeIndex)
Definition: BitVector.h:225
BitVector(const BitVector &other)
Definition: BitVector.h:125
void dup(BitVector &other)
Definition: BitVector.h:264
#define VECTORDEBUG(...)
Definition: Vector.h:39
bool bit(size_t index) const
Definition: BitVector.h:394
SoftVector(size_t wSize=0)
Definition: BitVector.h:333
Vector< T > segment(size_t start, size_t span)
Definition: Vector.h:351
void unknown()
Definition: BitVector.h:391
void clone(const VectorBase< T > &other)
Definition: Vector.h:192
BitVector(size_t len)
Definition: BitVector.h:137
uint64_t state() const
Definition: BitVector.h:59
bool bit(size_t index) const
Definition: BitVector.h:281
Generator(uint64_t wCoeff, unsigned wLen)
Definition: BitVector.h:49
Definition: BitVector.h:37
SoftVector(float *wData, unsigned length)
Definition: BitVector.h:345
const SoftVector tail(size_t start) const
Definition: BitVector.h:381
void zero()
Definition: BitVector.h:193
BitVector()
Definition: BitVector.h:138
void settfb(size_t index, float value)
Definition: BitVector.h:416
bool operator==(const time_spec_t &, const time_spec_t &)
Implement equality_comparable interface.
char & operator[](size_t index)
Definition: BitVector.h:289
const SoftVector segment(size_t start, size_t span) const
Definition: BitVector.h:375
void settfb(size_t index, int value)
Definition: BitVector.h:302
const char * const_iterator
Definition: BitVector.h:310
unsigned mCodewordSize
Definition: BitVector.h:96
SoftVector head(size_t span)
Definition: BitVector.h:378