| 
    IDA SDK
    
   | 
 
This class manages the offset and size of a value that occupies a number of contiguous bits within some container - generally a byte array.
A special state - empty range (both offset and size are zeroes) - determines the value as all bits of the container.
Public Member Functions | |||||||||
| bitrange_t (uint16 bit_ofs=0, uint16 size_in_bits=0) | |||||||||
| Constructor.  | |||||||||
| void | init (uint16 bit_ofs, uint16 size_in_bits) | ||||||||
| Initialize offset and size to given values.  | |||||||||
| void | reset () | ||||||||
| Make the bitrange empty.  | |||||||||
| bool | empty () const | ||||||||
| Is the bitrange empty?  | |||||||||
| uint | bitoff () const | ||||||||
| Get offset of 1st bit.  | |||||||||
| uint | bitsize () const | ||||||||
| Get size of the value in bits.  | |||||||||
| uint | bytesize () const | ||||||||
| Size of the value in bytes.  | |||||||||
| uint64 | mask64 () const | ||||||||
| Convert to mask of 64 bits.  | |||||||||
| bool | has_common (const bitrange_t &r) const | ||||||||
| Does have common bits with another bitrange?  | |||||||||
| bool | apply_mask (const bitrange_t &subrange) | ||||||||
| Apply mask to a bitrange.  More... | |||||||||
| void | intersect (const bitrange_t &r) | ||||||||
| Intersect two ranges.  | |||||||||
| void | create_union (const bitrange_t &r) | ||||||||
| Create union of 2 ranges including the hole between them.  | |||||||||
| bool | sub (const bitrange_t &r) | ||||||||
| Subtract a bitrange.  | |||||||||
| void | shift_down (uint cnt) | ||||||||
| Shift range down (left)  | |||||||||
| void | shift_up (uint cnt) | ||||||||
| Shift range up (right)  | |||||||||
| template<class T > | |||||||||
| void | assign_max_nonzero (T mask) | ||||||||
| Initialize bitrange_t with offset/size defined by given mask.  | |||||||||
Extract  | |||||||||
Extract a value from 'src' according to the bitrange 
  | |||||||||
| bool | extract (bytevec_t *dst, const void *src, size_t src_size, bool is_mf) const | ||||||||
| bool | extract (void *dst, size_t dst_size, const void *src, size_t src_size, bool is_mf) const | ||||||||
Inject  | |||||||||
Inject a value into 'dst' according to the bitrange 
  | |||||||||
| bool | inject (void *dst, size_t dst_size, const void *src, size_t src_size, bool is_mf) const | ||||||||
| bool | inject (void *dst, size_t dst_size, const bytevec_t &src, bool is_mf) const | ||||||||
      
  | 
  inline | 
Apply mask to a bitrange.
| subrange | range *inside* the main bitrange to keep After this operation the main bitrange will be truncated to have only the bits that are specified by subrange. Example: [off=8,nbits=4], subrange[off=1,nbits=2] => [off=9,nbits=2] |