X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=blobdiff_plain;f=include%2Fctf%2Fctf-types-bitfield.h;h=82ee1120192858cd3d10ed134e898ee1cd6d0d9f;hp=4657a28fa7d4bbf035d26d4458e92d29503c535c;hb=de0ba614e2c8243bfcd107febdaa44a19e658300;hpb=6dc2ca620b58bbd67df61d8a5265ee4292f2dd37 diff --git a/include/ctf/ctf-types-bitfield.h b/include/ctf/ctf-types-bitfield.h index 4657a28f..82ee1120 100644 --- a/include/ctf/ctf-types-bitfield.h +++ b/include/ctf/ctf-types-bitfield.h @@ -6,25 +6,56 @@ * * Bitfields read/write functions. * - * Copyright 2010 - Mathieu Desnoyers + * Copyright (c) 2010 Mathieu Desnoyers * - * Dual LGPL v2.1/GPL v2 license. + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #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 unsigned char *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 unsigned char *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, +size_t ctf_bitfield_unsigned_write(unsigned char *ptr, unsigned long start, unsigned long len, int byte_order, uint64_t v) { @@ -39,7 +70,7 @@ end: } static inline -size_t ctf_bitfield_signed_write(uint8_t *ptr, +size_t ctf_bitfield_signed_write(unsigned char *ptr, unsigned long start, unsigned long len, int byte_order, int64_t v) {