X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Ftrace-ir%2Fevent-class.c;h=db3911a083b6dd06adfc3af5bd50f1ce8e6ffb59;hb=68b66a256a54d32992dfefeaad11eea88b7df234;hp=7c09f78bf468305fce15d568124a392e9086b137;hpb=605e1019783967f33d86967e7c98dd52cbd69a4c;p=babeltrace.git diff --git a/lib/trace-ir/event-class.c b/lib/trace-ir/event-class.c index 7c09f78b..db3911a0 100644 --- a/lib/trace-ir/event-class.c +++ b/lib/trace-ir/event-class.c @@ -22,28 +22,28 @@ */ #define BT_LOG_TAG "EVENT-CLASS" -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -192,8 +192,8 @@ const char *bt_event_class_get_name(const struct bt_event_class *event_class) return event_class->name.value; } -int bt_event_class_set_name(struct bt_event_class *event_class, - const char *name) +enum bt_event_class_status bt_event_class_set_name( + struct bt_event_class *event_class, const char *name) { BT_ASSERT_PRE_NON_NULL(event_class, "Event class"); BT_ASSERT_PRE_NON_NULL(name, "Name"); @@ -201,7 +201,7 @@ int bt_event_class_set_name(struct bt_event_class *event_class, g_string_assign(event_class->name.str, name); event_class->name.value = event_class->name.str->str; BT_LIB_LOGV("Set event class's name: %!+E", event_class); - return 0; + return BT_EVENT_CLASS_STATUS_OK; } uint64_t bt_event_class_get_id(const struct bt_event_class *event_class) @@ -238,7 +238,7 @@ const char *bt_event_class_get_emf_uri(const struct bt_event_class *event_class) return event_class->emf_uri.value; } -int bt_event_class_set_emf_uri( +enum bt_event_class_status bt_event_class_set_emf_uri( struct bt_event_class *event_class, const char *emf_uri) { @@ -248,7 +248,7 @@ int bt_event_class_set_emf_uri( g_string_assign(event_class->emf_uri.str, emf_uri); event_class->emf_uri.value = event_class->emf_uri.str->str; BT_LIB_LOGV("Set event class's EMF URI: %!+E", event_class); - return 0; + return BT_EVENT_CLASS_STATUS_OK; } struct bt_stream_class *bt_event_class_borrow_stream_class( @@ -273,17 +273,22 @@ bt_event_class_borrow_specific_context_field_class_const( return event_class->specific_context_fc; } -int bt_event_class_set_specific_context_field_class( +struct bt_field_class * +bt_event_class_borrow_specific_context_field_class( + struct bt_event_class *event_class) +{ + BT_ASSERT_PRE_NON_NULL(event_class, "Event class"); + return event_class->specific_context_fc; +} + +enum bt_event_class_status bt_event_class_set_specific_context_field_class( struct bt_event_class *event_class, struct bt_field_class *field_class) { int ret; struct bt_stream_class *stream_class; - struct bt_trace_class *trace_class; struct bt_resolve_field_path_context resolve_ctx = { - .packet_header = NULL, .packet_context = NULL, - .event_header = NULL, .event_common_context = NULL, .event_specific_context = field_class, .event_payload = NULL, @@ -298,15 +303,18 @@ int bt_event_class_set_specific_context_field_class( "%!+F", field_class); stream_class = bt_event_class_borrow_stream_class_inline( event_class); - trace_class = bt_stream_class_borrow_trace_class_inline(stream_class); - resolve_ctx.packet_header = trace_class->packet_header_fc; resolve_ctx.packet_context = stream_class->packet_context_fc; - resolve_ctx.event_header = stream_class->event_header_fc; resolve_ctx.event_common_context = stream_class->event_common_context_fc; ret = bt_resolve_field_paths(field_class, &resolve_ctx); if (ret) { + /* + * This is the only reason for which + * bt_resolve_field_paths() can fail: anything else + * would be because a precondition is not satisfied. + */ + ret = BT_EVENT_CLASS_STATUS_NOMEM; goto end; } @@ -329,17 +337,21 @@ const struct bt_field_class *bt_event_class_borrow_payload_field_class_const( return event_class->payload_fc; } -int bt_event_class_set_payload_field_class( +struct bt_field_class *bt_event_class_borrow_payload_field_class( + struct bt_event_class *event_class) +{ + BT_ASSERT_PRE_NON_NULL(event_class, "Event class"); + return event_class->payload_fc; +} + +enum bt_event_class_status bt_event_class_set_payload_field_class( struct bt_event_class *event_class, struct bt_field_class *field_class) { int ret; struct bt_stream_class *stream_class; - struct bt_trace_class *trace_class; struct bt_resolve_field_path_context resolve_ctx = { - .packet_header = NULL, .packet_context = NULL, - .event_header = NULL, .event_common_context = NULL, .event_specific_context = NULL, .event_payload = field_class, @@ -354,16 +366,19 @@ int bt_event_class_set_payload_field_class( field_class); stream_class = bt_event_class_borrow_stream_class_inline( event_class); - trace_class = bt_stream_class_borrow_trace_class_inline(stream_class); - resolve_ctx.packet_header = trace_class->packet_header_fc; resolve_ctx.packet_context = stream_class->packet_context_fc; - resolve_ctx.event_header = stream_class->event_header_fc; resolve_ctx.event_common_context = stream_class->event_common_context_fc; resolve_ctx.event_specific_context = event_class->specific_context_fc; ret = bt_resolve_field_paths(field_class, &resolve_ctx); if (ret) { + /* + * This is the only reason for which + * bt_resolve_field_paths() can fail: anything else + * would be because a precondition is not satisfied. + */ + ret = BT_EVENT_CLASS_STATUS_NOMEM; goto end; }