- if (!event_class || !name || !value) {
- BT_LOGW("Invalid parameter: event class, name, or value is NULL: "
- "event-class-addr=%p, name-addr=%p, value-addr=%p",
- event_class, name, value);
- ret = -1;
- goto end;
- }
-
- if (event_class->frozen) {
- BT_LOGW("Invalid parameter: event class is frozen: "
- "addr=%p, name=\"%s\", id=%" PRId64 ", attr-name=\"%s\"",
- event_class, bt_ctf_event_class_get_name(event_class),
- bt_ctf_event_class_get_id(event_class), name);
- ret = -1;
- goto end;
- }
-
- if (!strcmp(name, "id") || !strcmp(name, "loglevel") ||
- !strcmp(name, "stream_id")) {
- if (!bt_value_is_integer(value)) {
- BT_LOGW("Invalid parameter: this event class's attribute must have an integer value: "
- "event-class-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64 ", attr-name=\"%s\", "
- "attr-type=%s", event_class,
- bt_ctf_event_class_get_name(event_class),
- bt_ctf_event_class_get_id(event_class), name,
- bt_value_type_string(bt_value_get_type(value)));
- ret = -1;
- goto end;
- }
- } else if (!strcmp(name, "name") || !strcmp(name, "model.emf.uri") ||
- !strcmp(name, "loglevel_string")) {
- if (!bt_value_is_string(value)) {
- BT_LOGW("Invalid parameter: this event class's attribute must have a string value: "
- "event-class-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64 ", attr-name=\"%s\", "
- "attr-type=%s", event_class,
- bt_ctf_event_class_get_name(event_class),
- bt_ctf_event_class_get_id(event_class), name,
- bt_value_type_string(bt_value_get_type(value)));
- ret = -1;
- goto end;
- }
- } else {
- /* unknown attribute */
- BT_LOGW("Invalid parameter: unknown event class's attribute name: "
- "event-class-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64 ", attr-name=\"%s\"",
- event_class, bt_ctf_event_class_get_name(event_class),
- bt_ctf_event_class_get_id(event_class), name);
- ret = -1;
- goto end;
- }
-
- /* "id" special case: >= 0 */
- if (!strcmp(name, "id")) {
- int64_t val;
-
- ret = bt_value_integer_get(value, &val);
- assert(ret == 0);
- ret = bt_ctf_event_class_set_id(event_class, (uint64_t) val);
- if (ret) {
- goto end;
- }
- }
-
- ret = bt_ctf_attributes_set_field_value(event_class->attributes,
- name, value);
- assert(ret == 0);
-
- if (BT_LOG_ON_VERBOSE) {
- if (bt_value_is_integer(value)) {
- int64_t val;
-
- ret = bt_value_integer_get(value, &val);
- assert(ret == 0);
- BT_LOGV("Set event class's integer attribute: "
- "event-class-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64 ", attr-name=\"%s\", "
- "attr-value=%" PRId64,
- event_class, bt_ctf_event_class_get_name(event_class),
- bt_ctf_event_class_get_id(event_class), name,
- val);
- } else if (bt_value_is_string(value)) {
- const char *val;
-
- ret = bt_value_string_get(value, &val);
- assert(ret == 0);
- BT_LOGV("Set event class's string attribute: "
- "event-class-addr=%p, event-class-name=\"%s\", "
- "event-class-id=%" PRId64 ", attr-name=\"%s\", "
- "attr-value=\"%s\"",
- event_class, bt_ctf_event_class_get_name(event_class),
- bt_ctf_event_class_get_id(event_class), name,
- val);
- }
- }
-
-end: