X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fctf%2Fctf-types-bitfield.h;fp=include%2Fctf%2Fctf-types-bitfield.h;h=a6764bf5bdb72ab1f94dd5d9f050870dbfa1c8ce;hp=4657a28fa7d4bbf035d26d4458e92d29503c535c;hb=0822882635143b2de9b1d9488cb8b24f2a6d90a2;hpb=6dc2ca620b58bbd67df61d8a5265ee4292f2dd37 diff --git a/include/ctf/ctf-types-bitfield.h b/include/ctf/ctf-types-bitfield.h index 4657a28f..a6764bf5 100644 --- a/include/ctf/ctf-types-bitfield.h +++ b/include/ctf/ctf-types-bitfield.h @@ -14,14 +14,33 @@ #include #include -/* - * ctf_bitfield_unsigned_read and ctf_bitfield_signed_read are defined by - * bitfield.h. - * - * The write primitives below are provided as wrappers over - * ctf_bitfield_write_le and ctf_bitfield_write_be to specify per-byte write of - * signed/unsigned integers through a standard API. - */ +static inline +uint64_t ctf_bitfield_unsigned_read(const uint8_t *ptr, + unsigned long start, unsigned long len, + int byte_order) +{ + uint64_t v; + + if (byte_order == LITTLE_ENDIAN) + ctf_bitfield_read_le(ptr, start, len, &v); + else + ctf_bitfield_read_be(ptr, start, len, &v); + return v; +} + +static inline +int64_t ctf_bitfield_signed_read(const uint8_t *ptr, + unsigned long start, unsigned long len, + int byte_order) +{ + int64_t v; + + if (byte_order == LITTLE_ENDIAN) + ctf_bitfield_read_le(ptr, start, len, &v); + else + ctf_bitfield_read_be(ptr, start, len, &v); + return v; +} static inline size_t ctf_bitfield_unsigned_write(uint8_t *ptr,