bt_ctf_clock_create_empty() is used to create an empty clock object.
This clock has no name, and it cannot be added to any other object
until its name is set using bt_ctf_clock_set_name().
This helps the creation of a clock object when its name is not known
in advance, just like the other properties.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
static
void bt_ctf_clock_destroy(struct bt_object *obj);
-BT_HIDDEN
-struct bt_ctf_clock *_bt_ctf_clock_create(void)
+struct bt_ctf_clock *bt_ctf_clock_create_empty(void)
{
struct bt_ctf_clock *clock = g_new0(
struct bt_ctf_clock, 1);
}
BT_HIDDEN
+bool bt_ctf_clock_is_valid(struct bt_ctf_clock *clock)
+{
+ return clock && clock->name;
+}
+
int bt_ctf_clock_set_name(struct bt_ctf_clock *clock,
const char *name)
{
int ret = 0;
+ if (!clock || clock->frozen) {
+ ret = -1;
+ goto end;
+ }
+
if (bt_ctf_validate_identifier(name)) {
ret = -1;
goto end;
int ret;
struct bt_ctf_clock *clock = NULL;
- clock = _bt_ctf_clock_create();
+ clock = bt_ctf_clock_create_empty();
if (!clock) {
goto error;
}
struct bt_ctf_field_type_integer *integer;
int ret = 0;
- if (!type || type->frozen) {
+ if (!type || type->frozen || !bt_ctf_clock_is_valid(clock)) {
ret = -1;
goto end;
}
int ret = 0;
struct bt_ctf_field_type *timestamp_field = NULL;
- if (!stream_class || !clock || stream_class->frozen) {
+ if (!stream_class || stream_class->frozen ||
+ !bt_ctf_clock_is_valid(clock)) {
ret = -1;
goto end;
}
int ret = 0;
struct search_query query = { .value = clock, .found = 0 };
- if (!trace || !clock) {
+ if (!trace || !bt_ctf_clock_is_valid(clock)) {
ret = -1;
goto end;
}
int frozen;
};
-/*
- * This is not part of the public API to prevent users from creating clocks
- * in an invalid state (being nameless, in this case).
- *
- * The only legitimate use-case for this function is to allocate a clock
- * while the TSDL metadata is being parsed.
- */
-BT_HIDDEN
-struct bt_ctf_clock *_bt_ctf_clock_create(void);
-
-/*
- * Not exposed as part of the public API since the only usecase
- * for this is when we are creating clocks from the TSDL metadata.
- */
-BT_HIDDEN
-int bt_ctf_clock_set_name(struct bt_ctf_clock *clock,
- const char *name);
-
BT_HIDDEN
void bt_ctf_clock_freeze(struct bt_ctf_clock *clock);
void bt_ctf_clock_serialize(struct bt_ctf_clock *clock,
struct metadata_context *context);
+BT_HIDDEN
+bool bt_ctf_clock_is_valid(struct bt_ctf_clock *clock);
+
#endif /* BABELTRACE_CTF_IR_CLOCK_INTERNAL_H */
*/
extern struct bt_ctf_clock *bt_ctf_clock_create(const char *name);
+extern struct bt_ctf_clock *bt_ctf_clock_create_empty(void);
+
+extern int bt_ctf_clock_set_name(struct bt_ctf_clock *clock, const char *name);
+
/*
* bt_ctf_clock_get_name: get a clock's name.
*