lib: add integer range and integer range set API
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Fri, 12 Jul 2019 17:50:39 +0000 (13:50 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Thu, 18 Jul 2019 13:42:13 +0000 (09:42 -0400)
commitfb91c0ef1aa2dbb0eef476a3c876f5ff85e36fc4
treeb85cff031af8fc52f3adb75caf4c5fdbeacb4eb0
parent4af85094dcfc7edd45e2c31cd0c01371f32be2ef
lib: add integer range and integer range set API

This patch adds an integer range and range set API.

An integer range is a pair of lower and upper integer values. It can be
signed (`int64_t`) or unsigned (`uint64_t`).

An integer range set is a set of integer ranges, also either signed or
unsigned.

The goal of this is to use this API for enumeration field class mappings
and, with a subsequent patch, for the integer range set of the option of
a variant field class which has a selector.

You can create an integer range set with
bt_integer_range_set_unsigned_create() or
bt_integer_range_set_signed_create(). Integer range sets have a
reference count.

You can add an integer range to an integer range set with
bt_integer_range_set_unsigned_add_range() or
bt_integer_range_set_signed_add_range().

You can borrow an integer range object (unique, no reference count) from
an integer range set by index with
bt_integer_range_set_unsigned_borrow_range_by_index_const() or
bt_integer_range_set_signed_borrow_range_by_index_const().

As of this patch, you cannot remove an integer range from an integer
range set.

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Change-Id: I0ba5c33a38a33c2ff2f92fbbd8f871ff6635eac8
Reviewed-on: https://review.lttng.org/c/babeltrace/+/1715
include/Makefile.am
include/babeltrace2/babeltrace.h
include/babeltrace2/integer-range-set-const.h [new file with mode: 0644]
include/babeltrace2/integer-range-set.h [new file with mode: 0644]
include/babeltrace2/types.h
src/lib/Makefile.am
src/lib/integer-range-set.c [new file with mode: 0644]
src/lib/integer-range-set.h [new file with mode: 0644]
This page took 0.024288 seconds and 4 git commands to generate.