+int bt_ctf_event_class_set_attribute(
+ struct bt_ctf_event_class *event_class, const char *name,
+ struct bt_value *value)
+{
+ int ret = 0;
+
+ if (!event_class || !name || !value || event_class->frozen) {
+ ret = -1;
+ goto end;
+ }
+
+ if (!strcmp(name, "id") || !strcmp(name, "loglevel")) {
+ if (!bt_value_is_integer(value)) {
+ ret = -1;
+ goto end;
+ }
+ } else if (!strcmp(name, "name") || !strcmp(name, "model.emf.uri")) {
+ if (!bt_value_is_string(value)) {
+ ret = -1;
+ goto end;
+ }
+ } else {
+ /* unknown attribute */
+ ret = -1;
+ goto end;
+ }
+
+ /* "id" special case: >= 0 */
+ if (!strcmp(name, "id")) {
+ int64_t val;
+
+ ret = bt_value_integer_get(value, &val);
+
+ if (ret) {
+ goto end;
+ }
+
+ if (val < 0) {
+ ret = -1;
+ goto end;
+ }
+ }
+
+ ret = bt_ctf_attributes_set_field_value(event_class->attributes,
+ name, value);
+
+end:
+ return ret;
+}
+
+int bt_ctf_event_class_get_attribute_count(
+ struct bt_ctf_event_class *event_class)
+{
+ int ret = 0;
+
+ if (!event_class) {
+ ret = -1;
+ goto end;
+ }
+
+ ret = bt_ctf_attributes_get_count(event_class->attributes);
+
+end:
+ return ret;
+}
+
+const char *
+bt_ctf_event_class_get_attribute_name(
+ struct bt_ctf_event_class *event_class, int index)
+{
+ const char *ret;
+
+ if (!event_class) {
+ ret = NULL;
+ goto end;
+ }
+
+ ret = bt_ctf_attributes_get_field_name(event_class->attributes, index);
+
+end:
+ return ret;
+}
+
+struct bt_value *
+bt_ctf_event_class_get_attribute_value(struct bt_ctf_event_class *event_class,
+ int index)
+{
+ struct bt_value *ret;
+
+ if (!event_class) {
+ ret = NULL;
+ goto end;
+ }
+
+ ret = bt_ctf_attributes_get_field_value(event_class->attributes, index);
+
+end:
+ return ret;
+}
+
+struct bt_value *
+bt_ctf_event_class_get_attribute_value_by_name(
+ struct bt_ctf_event_class *event_class, const char *name)
+{
+ struct bt_value *ret;
+
+ if (!event_class || !name) {
+ ret = NULL;
+ goto end;
+ }
+
+ ret = bt_ctf_attributes_get_field_value_by_name(event_class->attributes,
+ name);
+
+end:
+ return ret;
+
+}
+