diff --git a/src/bitvector.cpp b/src/bitvector.cpp index 43feebc5..10284073 100644 --- a/src/bitvector.cpp +++ b/src/bitvector.cpp @@ -117,3 +117,21 @@ int bitvec_write_field(struct bitvec *bv, unsigned& write_index, uint64_t val, u write_index += len; return 0; } + +int bitvec_write_field_lh(struct bitvec *bv, unsigned& write_index, + uint64_t val, unsigned len) +{ + unsigned int i; + int rc; + bv->cur_bit = write_index; + for (i = 0; i < len; i++) { + bit_value bit = L; + if (val & ((uint64_t)1 << (len - i - 1))) + bit = H; + rc = bitvec_set_bit(bv, bit); + if (rc) + return rc; + } + write_index += len; + return 0; +} diff --git a/src/bitvector.h b/src/bitvector.h index 36bdbaba..b14d2040 100644 --- a/src/bitvector.h +++ b/src/bitvector.h @@ -39,6 +39,7 @@ unsigned int bitvec_pack(struct bitvec *bv, uint8_t *buffer); unsigned int bitvec_unpack(struct bitvec *bv, uint8_t *buffer); uint64_t bitvec_read_field(struct bitvec *bv, unsigned& read_index, unsigned len); int bitvec_write_field(struct bitvec *bv, unsigned& write_index, uint64_t val, unsigned len); +int bitvec_write_field_lh(struct bitvec *bv, unsigned& write_index, uint64_t val, unsigned len); /*! }@ */