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)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 18 Jul 2019 15:53:36 +0000 (11:53 -0400)
commitba38aae75b0a86ae2778d982ad51403e5f524196
tree2e00f353299f2a08752e680bbe4e0c921c0e13af
parent1564e3dc3eb444ff2b4188a5cf657dc2b697c728
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.026298 seconds and 4 git commands to generate.