X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=include%2Fbabeltrace2%2Fvalue-const.h;h=f42f60d80e98e7cfe03d88e2b68a0fbe72718a5c;hb=44e2e039eb4bea7100896f504f6e6a40b20b6a1e;hp=a3760c07bd6c4fba155a7fcb911009fb8e1ac804;hpb=959b3d46dc042fe1df34592f528f866dd200f395;p=babeltrace.git diff --git a/include/babeltrace2/value-const.h b/include/babeltrace2/value-const.h index a3760c07..f42f60d8 100644 --- a/include/babeltrace2/value-const.h +++ b/include/babeltrace2/value-const.h @@ -2,7 +2,7 @@ #define BABELTRACE2_VALUE_CONST_H /* - * Copyright (c) 2015-2018 Philippe Proulx + * Copyright (c) 2010-2019 EfficiOS Inc. and Linux Foundation * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -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) { @@ -120,25 +129,25 @@ typedef enum bt_value_copy_status { extern bt_value_copy_status bt_value_copy(const bt_value *object, bt_value **copy); -extern bt_bool bt_value_compare(const bt_value *object_a, +extern bt_bool bt_value_is_equal(const bt_value *object_a, const bt_value *object_b); extern bt_bool bt_value_bool_get(const bt_value *bool_obj); -extern uint64_t bt_value_unsigned_integer_get(const bt_value *integer_obj); +extern uint64_t bt_value_integer_unsigned_get(const bt_value *integer_obj); -extern int64_t bt_value_signed_integer_get(const bt_value *integer_obj); +extern int64_t bt_value_integer_signed_get(const bt_value *integer_obj); extern double bt_value_real_get(const bt_value *real_obj); extern const char *bt_value_string_get(const bt_value *string_obj); -extern uint64_t bt_value_array_get_size(const bt_value *array_obj); +extern uint64_t bt_value_array_get_length(const bt_value *array_obj); static inline bt_bool bt_value_array_is_empty(const bt_value *array_obj) { - return bt_value_array_get_size(array_obj) == 0; + return bt_value_array_get_length(array_obj) == 0; } extern const bt_value *bt_value_array_borrow_element_by_index_const( @@ -155,13 +164,23 @@ 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_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_OK = __BT_FUNC_STATUS_OK, - BT_VALUE_MAP_FOREACH_ENTRY_CONST_STATUS_CANCELED = __BT_FUNC_STATUS_CANCELED, + 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; extern bt_value_map_foreach_entry_const_status bt_value_map_foreach_entry_const( @@ -171,16 +190,6 @@ extern bt_value_map_foreach_entry_const_status bt_value_map_foreach_entry_const( extern bt_bool bt_value_map_has_entry(const bt_value *map_obj, const char *key); -typedef enum bt_value_map_extend_status { - BT_VALUE_MAP_EXTEND_STATUS_MEMORY_ERROR = __BT_FUNC_STATUS_MEMORY_ERROR, - BT_VALUE_MAP_EXTEND_STATUS_OK = __BT_FUNC_STATUS_OK, -} bt_value_map_extend_status; - -extern bt_value_map_extend_status bt_value_map_extend( - const bt_value *base_map_obj, - const bt_value *extension_map_obj, - bt_value **extended_map_obj); - extern void bt_value_get_ref(const bt_value *value); extern void bt_value_put_ref(const bt_value *value);