X-Git-Url: https://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace2%2Fvalue-const.h;h=f42f60d80e98e7cfe03d88e2b68a0fbe72718a5c;hb=901f0ce8eca409028109888889ddeafb08d7dd69;hp=2f1ffe779b653bfdfc241f545b1de325fd15d366;hpb=ca914e549e4ff113292102d27edd6af662b860d3;p=babeltrace.git diff --git a/include/babeltrace2/value-const.h b/include/babeltrace2/value-const.h index 2f1ffe77..f42f60d8 100644 --- a/include/babeltrace2/value-const.h +++ b/include/babeltrace2/value-const.h @@ -38,32 +38,41 @@ extern "C" { typedef enum bt_value_type { /// Null value object. - BT_VALUE_TYPE_NULL = 0, + BT_VALUE_TYPE_NULL = 1 << 0, /// Boolean value object (holds #BT_TRUE or #BT_FALSE). - BT_VALUE_TYPE_BOOL = 1, + BT_VALUE_TYPE_BOOL = 1 << 1, + + BT_VALUE_TYPE_INTEGER = 1 << 2, /// Unsigned integer value object (holds an unsigned 64-bit integer raw value). - BT_VALUE_TYPE_UNSIGNED_INTEGER = 2, + BT_VALUE_TYPE_UNSIGNED_INTEGER = (1 << 3) | BT_VALUE_TYPE_INTEGER, /// Signed integer value object (holds a signed 64-bit integer raw value). - BT_VALUE_TYPE_SIGNED_INTEGER = 3, + BT_VALUE_TYPE_SIGNED_INTEGER = (1 << 4) | BT_VALUE_TYPE_INTEGER, /// Floating point number value object (holds a \c double raw value). - BT_VALUE_TYPE_REAL = 4, + BT_VALUE_TYPE_REAL = 1 << 5, /// String value object. - BT_VALUE_TYPE_STRING = 5, + BT_VALUE_TYPE_STRING = 1 << 6, /// Array value object. - BT_VALUE_TYPE_ARRAY = 6, + BT_VALUE_TYPE_ARRAY = 1 << 7, /// Map value object. - BT_VALUE_TYPE_MAP = 7, + BT_VALUE_TYPE_MAP = 1 << 8, } bt_value_type; extern bt_value_type bt_value_get_type(const bt_value *object); +static inline +bt_bool bt_value_type_is(const bt_value_type type, + const bt_value_type type_to_check) +{ + return (type & type_to_check) == type_to_check; +} + static inline bt_bool bt_value_is_null(const bt_value *object) { @@ -155,11 +164,22 @@ bt_bool bt_value_map_is_empty(const bt_value *map_obj) extern const bt_value *bt_value_map_borrow_entry_value_const( const bt_value *map_obj, const char *key); -typedef bt_bool (* bt_value_map_foreach_entry_const_func)(const char *key, - const bt_value *object, void *data); +typedef enum bt_value_map_foreach_entry_const_func_status { + BT_VALUE_MAP_FOREACH_ENTRY_CONST_FUNC_STATUS_OK = __BT_FUNC_STATUS_OK, + BT_VALUE_MAP_FOREACH_ENTRY_CONST_FUNC_STATUS_ERROR = __BT_FUNC_STATUS_ERROR, + BT_VALUE_MAP_FOREACH_ENTRY_CONST_FUNC_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, + BT_VALUE_MAP_FOREACH_ENTRY_CONST_FUNC_STATUS_INTERRUPT = __BT_FUNC_STATUS_INTERRUPTED, +} bt_value_map_foreach_entry_const_func_status; + +typedef bt_value_map_foreach_entry_const_func_status + (* bt_value_map_foreach_entry_const_func)(const char *key, + const bt_value *object, void *data); typedef enum bt_value_map_foreach_entry_const_status { BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_OK = __BT_FUNC_STATUS_OK, + BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_ERROR = __BT_FUNC_STATUS_ERROR, + BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, + BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_USER_ERROR = __BT_FUNC_STATUS_USER_ERROR, BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_INTERRUPTED = __BT_FUNC_STATUS_INTERRUPTED, } bt_value_map_foreach_entry_const_status;