From: Simon Marchi Date: Mon, 6 May 2024 18:59:50 +0000 (-0400) Subject: lib: remove some unnecessary uses of `GString` X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=b91e063189ef7284d403912e8db0a3dee5d1b662;p=babeltrace.git lib: remove some unnecessary uses of `GString` The use of `GString` is unnecessary for these fields. In fact, I think it just makes things more complicated for nothing. Change to use `gchar *`, allocated with `g_strdup()` and freed with `g_free()`. Change-Id: I03c6662e97d9cad6e0395fa1e3b29154604e786e Signed-off-by: Simon Marchi Reviewed-on: https://review.lttng.org/c/babeltrace/+/12523 Tested-by: jenkins Reviewed-by: Philippe Proulx --- diff --git a/src/lib/lib-logging.c b/src/lib/lib-logging.c index a22e000f..6d98a0ce 100644 --- a/src/lib/lib-logging.c +++ b/src/lib/lib-logging.c @@ -497,8 +497,8 @@ static inline void format_trace(char **buf_ch, bool extended, { char tmp_prefix[TMP_PREFIX_LEN]; - if (trace->name.value) { - BUF_APPEND(", %sname=\"%s\"", PRFIELD(trace->name.value)); + if (trace->name) { + BUF_APPEND(", %sname=\"%s\"", PRFIELD(trace->name)); } if (!extended) { @@ -534,9 +534,9 @@ static inline void format_stream_class(char **buf_ch, bool extended, BUF_APPEND(", %sid=%" PRIu64, PRFIELD(stream_class->id)); - if (stream_class->name.value) { + if (stream_class->name) { BUF_APPEND(", %sname=\"%s\"", - PRFIELD(stream_class->name.value)); + PRFIELD(stream_class->name)); } if (!extended) { @@ -593,9 +593,9 @@ static inline void format_event_class(char **buf_ch, bool extended, BUF_APPEND(", %sid=%" PRIu64, PRFIELD(event_class->id)); - if (event_class->name.value) { + if (event_class->name) { BUF_APPEND(", %sname=\"%s\"", - PRFIELD(event_class->name.value)); + PRFIELD(event_class->name)); } if (!extended) { @@ -610,9 +610,9 @@ static inline void format_event_class(char **buf_ch, bool extended, (int) event_class->log_level.value))); } - if (event_class->emf_uri.value) { + if (event_class->emf_uri) { BUF_APPEND(", %semf-uri=\"%s\"", - PRFIELD(event_class->emf_uri.value)); + PRFIELD(event_class->emf_uri)); } BUF_APPEND(", %sspecific-context-fc-addr=%p, %spayload-fc-addr=%p", @@ -649,8 +649,8 @@ static inline void format_stream(char **buf_ch, bool extended, BUF_APPEND(", %sid=%" PRIu64, PRFIELD(stream->id)); - if (stream->name.value) { - BUF_APPEND(", %sname=\"%s\"", PRFIELD(stream->name.value)); + if (stream->name) { + BUF_APPEND(", %sname=\"%s\"", PRFIELD(stream->name)); } if (!extended) { @@ -777,8 +777,8 @@ static inline void format_clock_class(char **buf_ch, bool extended, { char tmp_prefix[TMP_PREFIX_LEN]; - if (clock_class->name.value) { - BUF_APPEND(", %sname=\"%s\"", PRFIELD(clock_class->name.value)); + if (clock_class->name) { + BUF_APPEND(", %sname=\"%s\"", PRFIELD(clock_class->name)); } BUF_APPEND(", %sfreq=%" PRIu64, PRFIELD(clock_class->frequency)); @@ -787,9 +787,9 @@ static inline void format_clock_class(char **buf_ch, bool extended, return; } - if (clock_class->description.value) { + if (clock_class->description) { BUF_APPEND(", %spartial-descr=\"%.32s\"", - PRFIELD(clock_class->description.value)); + PRFIELD(clock_class->description)); } if (clock_class->uuid.value) { diff --git a/src/lib/trace-ir/clock-class.c b/src/lib/trace-ir/clock-class.c index 10030155..886501ec 100644 --- a/src/lib/trace-ir/clock-class.c +++ b/src/lib/trace-ir/clock-class.c @@ -35,18 +35,8 @@ void destroy_clock_class(struct bt_object *obj) BT_LIB_LOGD("Destroying clock class: %!+K", clock_class); BT_OBJECT_PUT_REF_AND_RESET(clock_class->user_attributes); - if (clock_class->name.str) { - g_string_free(clock_class->name.str, TRUE); - clock_class->name.str = NULL; - clock_class->name.value = NULL; - } - - if (clock_class->description.str) { - g_string_free(clock_class->description.str, TRUE); - clock_class->description.str = NULL; - clock_class->description.value = NULL; - } - + g_free(clock_class->name); + g_free(clock_class->description); bt_object_pool_finalize(&clock_class->cs_pool); g_free(clock_class); } @@ -91,18 +81,6 @@ struct bt_clock_class *bt_clock_class_create(bt_self_component *self_comp) goto error; } - clock_class->name.str = g_string_new(NULL); - if (!clock_class->name.str) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); - goto error; - } - - clock_class->description.str = g_string_new(NULL); - if (!clock_class->description.str) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); - goto error; - } - clock_class->frequency = UINT64_C(1000000000); clock_class->origin_is_unix_epoch = BT_TRUE; set_base_offset(clock_class); @@ -132,7 +110,7 @@ BT_EXPORT const char *bt_clock_class_get_name(const struct bt_clock_class *clock_class) { BT_ASSERT_PRE_DEV_CLK_CLS_NON_NULL(clock_class); - return clock_class->name.value; + return clock_class->name; } BT_EXPORT @@ -143,8 +121,8 @@ enum bt_clock_class_set_name_status bt_clock_class_set_name( BT_ASSERT_PRE_CLK_CLS_NON_NULL(clock_class); BT_ASSERT_PRE_NAME_NON_NULL(name); BT_ASSERT_PRE_DEV_CLOCK_CLASS_HOT(clock_class); - g_string_assign(clock_class->name.str, name); - clock_class->name.value = clock_class->name.str->str; + g_free(clock_class->name); + clock_class->name = g_strdup(name); BT_LIB_LOGD("Set clock class's name: %!+K", clock_class); return BT_FUNC_STATUS_OK; } @@ -154,7 +132,7 @@ const char *bt_clock_class_get_description( const struct bt_clock_class *clock_class) { BT_ASSERT_PRE_DEV_CLK_CLS_NON_NULL(clock_class); - return clock_class->description.value; + return clock_class->description; } BT_EXPORT @@ -165,8 +143,8 @@ enum bt_clock_class_set_description_status bt_clock_class_set_description( BT_ASSERT_PRE_CLK_CLS_NON_NULL(clock_class); BT_ASSERT_PRE_DESCR_NON_NULL(descr); BT_ASSERT_PRE_DEV_CLOCK_CLASS_HOT(clock_class); - g_string_assign(clock_class->description.str, descr); - clock_class->description.value = clock_class->description.str->str; + g_free(clock_class->description); + clock_class->description = g_strdup(descr); BT_LIB_LOGD("Set clock class's description: %!+K", clock_class); return BT_FUNC_STATUS_OK; diff --git a/src/lib/trace-ir/clock-class.h b/src/lib/trace-ir/clock-class.h index e2e90412..54eeb0c8 100644 --- a/src/lib/trace-ir/clock-class.h +++ b/src/lib/trace-ir/clock-class.h @@ -27,19 +27,8 @@ struct bt_clock_class { /* Owned by this */ struct bt_value *user_attributes; - struct { - GString *str; - - /* NULL or `str->str` above */ - const char *value; - } name; - - struct { - GString *str; - - /* NULL or `str->str` above */ - const char *value; - } description; + gchar *name; + gchar *description; uint64_t frequency; uint64_t precision; diff --git a/src/lib/trace-ir/event-class.c b/src/lib/trace-ir/event-class.c index 0d907175..76ad226b 100644 --- a/src/lib/trace-ir/event-class.c +++ b/src/lib/trace-ir/event-class.c @@ -41,16 +41,8 @@ void destroy_event_class(struct bt_object *obj) BT_LIB_LOGD("Destroying event class: %!+E", event_class); BT_OBJECT_PUT_REF_AND_RESET(event_class->user_attributes); - if (event_class->name.str) { - g_string_free(event_class->name.str, TRUE); - event_class->name.str = NULL; - } - - if (event_class->emf_uri.str) { - g_string_free(event_class->emf_uri.str, TRUE); - event_class->emf_uri.str = NULL; - } - + g_free(event_class->name); + g_free(event_class->emf_uri); BT_LOGD_STR("Putting context field class."); BT_OBJECT_PUT_REF_AND_RESET(event_class->specific_context_fc); BT_LOGD_STR("Putting payload field class."); @@ -119,17 +111,6 @@ struct bt_event_class *create_event_class_with_id( event_class->id = id; bt_property_uint_init(&event_class->log_level, BT_PROPERTY_AVAILABILITY_NOT_AVAILABLE, 0); - event_class->name.str = g_string_new(NULL); - if (!event_class->name.str) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); - goto error; - } - - event_class->emf_uri.str = g_string_new(NULL); - if (!event_class->emf_uri.str) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); - goto error; - } ret = bt_object_pool_initialize(&event_class->event_pool, (bt_object_pool_new_object_func) bt_event_new, @@ -187,7 +168,7 @@ BT_EXPORT const char *bt_event_class_get_name(const struct bt_event_class *event_class) { BT_ASSERT_PRE_DEV_EC_NON_NULL(event_class); - return event_class->name.value; + return event_class->name; } BT_EXPORT @@ -198,8 +179,8 @@ enum bt_event_class_set_name_status bt_event_class_set_name( BT_ASSERT_PRE_EC_NON_NULL(event_class); BT_ASSERT_PRE_NAME_NON_NULL(name); BT_ASSERT_PRE_DEV_EVENT_CLASS_HOT(event_class); - g_string_assign(event_class->name.str, name); - event_class->name.value = event_class->name.str->str; + g_free(event_class->name); + event_class->name = g_strdup(name); BT_LIB_LOGD("Set event class's name: %!+E", event_class); return BT_FUNC_STATUS_OK; } @@ -240,7 +221,7 @@ BT_EXPORT const char *bt_event_class_get_emf_uri(const struct bt_event_class *event_class) { BT_ASSERT_PRE_DEV_EC_NON_NULL(event_class); - return event_class->emf_uri.value; + return event_class->emf_uri; } BT_EXPORT @@ -252,8 +233,8 @@ enum bt_event_class_set_emf_uri_status bt_event_class_set_emf_uri( BT_ASSERT_PRE_EC_NON_NULL(event_class); BT_ASSERT_PRE_NON_NULL("emf-uri", emf_uri, "EMF URI"); BT_ASSERT_PRE_DEV_EVENT_CLASS_HOT(event_class); - g_string_assign(event_class->emf_uri.str, emf_uri); - event_class->emf_uri.value = event_class->emf_uri.str->str; + g_free(event_class->emf_uri); + event_class->emf_uri = g_strdup(emf_uri); BT_LIB_LOGD("Set event class's EMF URI: %!+E", event_class); return BT_FUNC_STATUS_OK; } diff --git a/src/lib/trace-ir/event-class.h b/src/lib/trace-ir/event-class.h index 67d93695..ccbc0009 100644 --- a/src/lib/trace-ir/event-class.h +++ b/src/lib/trace-ir/event-class.h @@ -29,22 +29,12 @@ struct bt_event_class { /* Owned by this */ struct bt_value *user_attributes; - struct { - GString *str; - - /* NULL or `str->str` above */ - const char *value; - } name; + gchar *name; uint64_t id; struct bt_property_uint log_level; - struct { - GString *str; - - /* NULL or `str->str` above */ - const char *value; - } emf_uri; + gchar *emf_uri; /* Pool of `struct bt_event *` */ struct bt_object_pool event_pool; diff --git a/src/lib/trace-ir/stream-class.c b/src/lib/trace-ir/stream-class.c index 08395849..c9970861 100644 --- a/src/lib/trace-ir/stream-class.c +++ b/src/lib/trace-ir/stream-class.c @@ -47,12 +47,7 @@ void destroy_stream_class(struct bt_object *obj) stream_class->event_classes = NULL; } - if (stream_class->name.str) { - g_string_free(stream_class->name.str, TRUE); - stream_class->name.str = NULL; - stream_class->name.value = NULL; - } - + g_free(stream_class->name); BT_LOGD_STR("Putting packet context field class."); BT_OBJECT_PUT_REF_AND_RESET(stream_class->packet_context_fc); BT_LOGD_STR("Putting event common context field class."); @@ -117,12 +112,6 @@ struct bt_stream_class *create_stream_class_with_id( goto error; } - stream_class->name.str = g_string_new(NULL); - if (!stream_class->name.str) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); - goto error; - } - stream_class->id = id; stream_class->assigns_automatic_event_class_id = true; stream_class->assigns_automatic_stream_id = true; @@ -203,7 +192,7 @@ BT_EXPORT const char *bt_stream_class_get_name(const struct bt_stream_class *stream_class) { BT_ASSERT_PRE_DEV_SC_NON_NULL(stream_class); - return stream_class->name.value; + return stream_class->name; } BT_EXPORT @@ -215,8 +204,8 @@ enum bt_stream_class_set_name_status bt_stream_class_set_name( BT_ASSERT_PRE_SC_NON_NULL(stream_class); BT_ASSERT_PRE_NAME_NON_NULL(name); BT_ASSERT_PRE_DEV_STREAM_CLASS_HOT(stream_class); - g_string_assign(stream_class->name.str, name); - stream_class->name.value = stream_class->name.str->str; + g_free(stream_class->name); + stream_class->name = g_strdup(name); BT_LIB_LOGD("Set stream class's name: %!+S", stream_class); return BT_FUNC_STATUS_OK; } diff --git a/src/lib/trace-ir/stream-class.h b/src/lib/trace-ir/stream-class.h index 771a5899..a1d9ab60 100644 --- a/src/lib/trace-ir/stream-class.h +++ b/src/lib/trace-ir/stream-class.h @@ -23,12 +23,7 @@ struct bt_stream_class { /* Owned by this */ struct bt_value *user_attributes; - struct { - GString *str; - - /* NULL or `str->str` above */ - const char *value; - } name; + gchar *name; uint64_t id; bool assigns_automatic_event_class_id; diff --git a/src/lib/trace-ir/stream.c b/src/lib/trace-ir/stream.c index 7cb124f4..471623e8 100644 --- a/src/lib/trace-ir/stream.c +++ b/src/lib/trace-ir/stream.c @@ -37,12 +37,7 @@ void destroy_stream(struct bt_object *obj) BT_LIB_LOGD("Destroying stream object: %!+s", stream); BT_OBJECT_PUT_REF_AND_RESET(stream->user_attributes); - if (stream->name.str) { - g_string_free(stream->name.str, TRUE); - stream->name.str = NULL; - stream->name.value = NULL; - } - + g_free(stream->name); BT_LOGD_STR("Putting stream's class."); bt_object_put_ref(stream->class); bt_object_pool_finalize(&stream->packet_pool); @@ -114,12 +109,6 @@ struct bt_stream *create_stream_with_id(struct bt_stream_class *stream_class, goto error; } - stream->name.str = g_string_new(NULL); - if (!stream->name.str) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate a GString."); - goto error; - } - stream->id = id; ret = bt_object_pool_initialize(&stream->packet_pool, (bt_object_pool_new_object_func) bt_packet_new, @@ -211,7 +200,7 @@ BT_EXPORT const char *bt_stream_get_name(const struct bt_stream *stream) { BT_ASSERT_PRE_DEV_STREAM_NON_NULL(stream); - return stream->name.value; + return stream->name; } BT_EXPORT @@ -222,8 +211,8 @@ enum bt_stream_set_name_status bt_stream_set_name(struct bt_stream *stream, BT_ASSERT_PRE_STREAM_NON_NULL(stream); BT_ASSERT_PRE_NAME_NON_NULL(name); BT_ASSERT_PRE_DEV_STREAM_HOT(stream); - g_string_assign(stream->name.str, name); - stream->name.value = stream->name.str->str; + g_free(stream->name); + stream->name = g_strdup(name); BT_LIB_LOGD("Set stream's name: %!+s", stream); return BT_FUNC_STATUS_OK; } diff --git a/src/lib/trace-ir/stream.h b/src/lib/trace-ir/stream.h index 89d7bf73..89e236a6 100644 --- a/src/lib/trace-ir/stream.h +++ b/src/lib/trace-ir/stream.h @@ -26,12 +26,7 @@ struct bt_stream { /* Owned by this */ struct bt_stream_class *class; - struct { - GString *str; - - /* NULL or `str->str` above */ - const char *value; - } name; + gchar *name; uint64_t id; diff --git a/src/lib/trace-ir/trace.c b/src/lib/trace-ir/trace.c index 8cc005a7..ef9581ee 100644 --- a/src/lib/trace-ir/trace.c +++ b/src/lib/trace-ir/trace.c @@ -105,11 +105,7 @@ void destroy_trace(struct bt_object *obj) } } - if (trace->name.str) { - g_string_free(trace->name.str, TRUE); - trace->name.str = NULL; - trace->name.value = NULL; - } + g_free(trace->name); if (trace->environment) { BT_LOGD_STR("Destroying environment attributes."); @@ -170,12 +166,6 @@ struct bt_trace *bt_trace_create(struct bt_trace_class *tc) goto error; } - trace->name.str = g_string_new(NULL); - if (!trace->name.str) { - BT_LIB_LOGE_APPEND_CAUSE("Failed to allocate one GString."); - goto error; - } - trace->environment = bt_attributes_create(); if (!trace->environment) { BT_LIB_LOGE_APPEND_CAUSE("Cannot create empty attributes object."); @@ -205,7 +195,7 @@ BT_EXPORT const char *bt_trace_get_name(const struct bt_trace *trace) { BT_ASSERT_PRE_DEV_TRACE_NON_NULL(trace); - return trace->name.value; + return trace->name; } BT_EXPORT @@ -216,8 +206,8 @@ enum bt_trace_set_name_status bt_trace_set_name(struct bt_trace *trace, BT_ASSERT_PRE_TRACE_NON_NULL(trace); BT_ASSERT_PRE_NAME_NON_NULL(name); BT_ASSERT_PRE_DEV_TRACE_HOT(trace); - g_string_assign(trace->name.str, name); - trace->name.value = trace->name.str->str; + g_free(trace->name); + trace->name = g_strdup(name); BT_LIB_LOGD("Set trace's name: %!+t", trace); return BT_FUNC_STATUS_OK; } diff --git a/src/lib/trace-ir/trace.h b/src/lib/trace-ir/trace.h index 294e8943..ed0df692 100644 --- a/src/lib/trace-ir/trace.h +++ b/src/lib/trace-ir/trace.h @@ -31,12 +31,7 @@ struct bt_trace { /* Owned by this */ struct bt_trace_class *class; - struct { - GString *str; - - /* NULL or `str->str` above */ - const char *value; - } name; + gchar *name; struct { bt_uuid_t uuid;