Move bt_ctf_attributes API to internal headers
authorJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 9 Apr 2015 15:45:10 +0000 (11:45 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Thu, 9 Apr 2015 15:55:46 +0000 (11:55 -0400)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
formats/ctf/ir/Makefile.am
formats/ctf/ir/attributes.c [new file with mode: 0644]
formats/ctf/ir/event.c
formats/ctf/ir/trace.c
formats/ctf/ir/utils.c
include/Makefile.am
include/babeltrace/ctf-ir/attributes-internal.h [new file with mode: 0644]
include/babeltrace/ctf-ir/utils.h

index b36091763723f30db6c925bf3c04dbb389d47c35..299c17ff6b9ca3b51d588330c37606f70e27e9ef 100644 (file)
@@ -3,6 +3,7 @@ AM_CFLAGS = $(PACKAGE_CFLAGS) -I$(top_srcdir)/include
 noinst_LTLIBRARIES = libctf-ir.la
 
 libctf_ir_la_SOURCES = \
+       attributes.c \
        clock.c \
        event.c \
        event-fields.c \
diff --git a/formats/ctf/ir/attributes.c b/formats/ctf/ir/attributes.c
new file mode 100644 (file)
index 0000000..619b28e
--- /dev/null
@@ -0,0 +1,294 @@
+/*
+ * attributes.c
+ *
+ * Babeltrace CTF IR - Attributes
+ *
+ * Copyright (c) 2015 EfficiOS Inc. and Linux Foundation
+ * Copyright (c) 2015 Philippe Proulx <pproulx@efficios.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <babeltrace/babeltrace-internal.h>
+#include <babeltrace/objects.h>
+
+#define BT_CTF_ATTR_NAME_INDEX         0
+#define BT_CTF_ATTR_VALUE_INDEX        1
+
+BT_HIDDEN
+struct bt_object *bt_ctf_attributes_create(void)
+{
+       /*
+        * Attributes: array object of array objects, each one
+        * containing two entries: a string object (attributes field
+        * name), and an object (attributes field value).
+        *
+        * Example (JSON representation):
+        *
+        *     [
+        *         ["hostname", "eeppdesk"],
+        *         ["sysname", "Linux"],
+        *         ["tracer_major", 2],
+        *         ["tracer_minor", 5]
+        *     ]
+        */
+       return bt_object_array_create();
+}
+
+BT_HIDDEN
+void bt_ctf_attributes_destroy(struct bt_object *attr_obj)
+{
+       bt_object_put(attr_obj);
+}
+
+BT_HIDDEN
+int bt_ctf_attributes_get_count(struct bt_object *attr_obj)
+{
+       return bt_object_array_size(attr_obj);
+}
+
+BT_HIDDEN
+const char *bt_ctf_attributes_get_field_name(struct bt_object *attr_obj,
+               int index)
+{
+       int rc;
+       const char *ret = NULL;
+       struct bt_object *attr_field_obj = NULL;
+       struct bt_object *attr_field_name_obj = NULL;
+
+       if (!attr_obj || index < 0) {
+               goto end;
+       }
+
+       attr_field_obj = bt_object_array_get(attr_obj, index);
+
+       if (!attr_field_obj) {
+               goto end;
+       }
+
+       attr_field_name_obj = bt_object_array_get(attr_field_obj,
+               BT_CTF_ATTR_NAME_INDEX);
+
+       if (!attr_field_name_obj) {
+               goto end;
+       }
+
+       rc = bt_object_string_get(attr_field_name_obj, &ret);
+
+       if (rc) {
+               ret = NULL;
+       }
+
+end:
+       BT_OBJECT_PUT(attr_field_name_obj);
+       BT_OBJECT_PUT(attr_field_obj);
+
+       return ret;
+}
+
+BT_HIDDEN
+struct bt_object *bt_ctf_attributes_get_field_value(struct bt_object *attr_obj,
+               int index)
+{
+       struct bt_object *value_obj = NULL;
+       struct bt_object *attr_field_obj = NULL;
+
+       if (!attr_obj || index < 0) {
+               goto end;
+       }
+
+       attr_field_obj = bt_object_array_get(attr_obj, index);
+
+       if (!attr_field_obj) {
+               goto end;
+       }
+
+       value_obj = bt_object_array_get(attr_field_obj,
+               BT_CTF_ATTR_VALUE_INDEX);
+
+end:
+       BT_OBJECT_PUT(attr_field_obj);
+
+       return value_obj;
+}
+
+static
+struct bt_object *bt_ctf_attributes_get_field_by_name(
+               struct bt_object *attr_obj, const char *name)
+{
+       int i;
+       int attr_size;
+       struct bt_object *value_obj = NULL;
+       struct bt_object *attr_field_name_obj = NULL;
+
+       attr_size = bt_object_array_size(attr_obj);
+
+       if (attr_size < 0) {
+               goto error;
+       }
+
+       for (i = 0; i < attr_size; ++i) {
+               int ret;
+               const char *field_name;
+
+               value_obj = bt_object_array_get(attr_obj, i);
+
+               if (!value_obj) {
+                       goto error;
+               }
+
+               attr_field_name_obj = bt_object_array_get(value_obj, 0);
+
+               if (!attr_field_name_obj) {
+                       goto error;
+               }
+
+               ret = bt_object_string_get(attr_field_name_obj, &field_name);
+               if (ret) {
+                       goto error;
+               }
+
+               if (!strcmp(field_name, name)) {
+                       BT_OBJECT_PUT(attr_field_name_obj);
+                       break;
+               }
+
+               BT_OBJECT_PUT(attr_field_name_obj);
+               BT_OBJECT_PUT(value_obj);
+       }
+
+       return value_obj;
+
+error:
+       BT_OBJECT_PUT(attr_field_name_obj);
+       BT_OBJECT_PUT(value_obj);
+
+       return value_obj;
+}
+
+BT_HIDDEN
+int bt_ctf_attributes_set_field_value(struct bt_object *attr_obj,
+               const char *name, struct bt_object *value_obj)
+{
+       int ret = 0;
+       struct bt_object *attr_field_obj = NULL;
+
+       if (!attr_obj || !name || !value_obj) {
+               ret = -1;
+               goto end;
+       }
+
+       attr_field_obj = bt_ctf_attributes_get_field_by_name(attr_obj, name);
+
+       if (attr_field_obj) {
+               ret = bt_object_array_set(attr_field_obj,
+                       BT_CTF_ATTR_VALUE_INDEX, value_obj);
+               goto end;
+       }
+
+       attr_field_obj = bt_object_array_create();
+
+       if (!attr_field_obj) {
+               ret = -1;
+               goto end;
+       }
+
+       ret = bt_object_array_append_string(attr_field_obj, name);
+       ret |= bt_object_array_append(attr_field_obj, value_obj);
+
+       if (ret) {
+               goto end;
+       }
+
+       ret = bt_object_array_append(attr_obj, attr_field_obj);
+
+end:
+       BT_OBJECT_PUT(attr_field_obj);
+
+       return ret;
+}
+
+BT_HIDDEN
+struct bt_object *bt_ctf_attributes_get_field_value_by_name(
+               struct bt_object *attr_obj, const char *name)
+{
+       struct bt_object *value_obj = NULL;
+       struct bt_object *attr_field_obj = NULL;
+
+       if (!attr_obj || !name) {
+               goto end;
+       }
+
+       attr_field_obj = bt_ctf_attributes_get_field_by_name(attr_obj, name);
+
+       if (!attr_field_obj) {
+               goto end;
+       }
+
+       value_obj = bt_object_array_get(attr_field_obj,
+               BT_CTF_ATTR_VALUE_INDEX);
+
+end:
+       BT_OBJECT_PUT(attr_field_obj);
+
+       return value_obj;
+}
+
+BT_HIDDEN
+int bt_ctf_attributes_freeze(struct bt_object *attr_obj)
+{
+       int i;
+       int count;
+       int ret = 0;
+
+       if (!attr_obj) {
+               ret = -1;
+               goto end;
+       }
+
+       count = bt_object_array_size(attr_obj);
+
+       if (count < 0) {
+               ret = -1;
+               goto end;
+       }
+
+       /*
+        * We do not freeze the array itself here, since internal
+        * stuff could need to modify/add attributes. Each attribute
+        * is frozen one by one.
+        */
+       for (i = 0; i < count; ++i) {
+               struct bt_object *obj = NULL;
+
+               obj = bt_ctf_attributes_get_field_value(attr_obj, i);
+
+               if (!obj) {
+                       ret = -1;
+                       goto end;
+               }
+
+               bt_object_freeze(obj);
+               BT_OBJECT_PUT(obj);
+       }
+
+end:
+
+       return ret;
+}
index 543ecb7f9dc3528e6a7d4d9d66afb5cc13ec298b..2d15c83480f5fc074be98478427c6ad1ea0600e9 100644 (file)
@@ -36,6 +36,7 @@
 #include <babeltrace/ctf-ir/stream-class-internal.h>
 #include <babeltrace/ctf-ir/trace-internal.h>
 #include <babeltrace/ctf-ir/utils.h>
+#include <babeltrace/ctf-ir/attributes-internal.h>
 #include <babeltrace/compiler.h>
 
 static
index 476d62c363cd958d3ec0b1fa87ef5831007ba043..ca74d1703498086697c74e636037c5aa61990c27 100644 (file)
@@ -32,6 +32,7 @@
 #include <babeltrace/ctf-ir/stream-class-internal.h>
 #include <babeltrace/ctf-writer/functor-internal.h>
 #include <babeltrace/ctf-ir/event-types-internal.h>
+#include <babeltrace/ctf-ir/attributes-internal.h>
 #include <babeltrace/ctf-ir/utils.h>
 #include <babeltrace/compiler.h>
 #include <babeltrace/objects.h>
index b8e8ac23d7eee377cfcbc48f230446ddb9fa5d47..318b12da4a26105dda011759762e1ece8ea53275 100644 (file)
 #include <string.h>
 #include <stdlib.h>
 #include <glib.h>
-#include <babeltrace/babeltrace-internal.h>
-#include <babeltrace/objects.h>
-
-#define BT_CTF_ATTR_NAME_INDEX         0
-#define BT_CTF_ATTR_VALUE_INDEX        1
 
 static
 const char * const reserved_keywords_str[] = {"align", "callsite",
@@ -109,265 +104,3 @@ end:
        free(string);
        return ret;
 }
-
-BT_HIDDEN
-struct bt_object *bt_ctf_attributes_create(void)
-{
-       /*
-        * Attributes: array object of array objects, each one
-        * containing two entries: a string object (attributes field
-        * name), and an object (attributes field value).
-        *
-        * Example (JSON representation):
-        *
-        *     [
-        *         ["hostname", "eeppdesk"],
-        *         ["sysname", "Linux"],
-        *         ["tracer_major", 2],
-        *         ["tracer_minor", 5]
-        *     ]
-        */
-       return bt_object_array_create();
-}
-
-BT_HIDDEN
-void bt_ctf_attributes_destroy(struct bt_object *attr_obj)
-{
-       bt_object_put(attr_obj);
-}
-
-BT_HIDDEN
-int bt_ctf_attributes_get_count(struct bt_object *attr_obj)
-{
-       return bt_object_array_size(attr_obj);
-}
-
-BT_HIDDEN
-const char *bt_ctf_attributes_get_field_name(struct bt_object *attr_obj,
-               int index)
-{
-       int rc;
-       const char *ret = NULL;
-       struct bt_object *attr_field_obj = NULL;
-       struct bt_object *attr_field_name_obj = NULL;
-
-       if (!attr_obj || index < 0) {
-               goto end;
-       }
-
-       attr_field_obj = bt_object_array_get(attr_obj, index);
-
-       if (!attr_field_obj) {
-               goto end;
-       }
-
-       attr_field_name_obj = bt_object_array_get(attr_field_obj,
-               BT_CTF_ATTR_NAME_INDEX);
-
-       if (!attr_field_name_obj) {
-               goto end;
-       }
-
-       rc = bt_object_string_get(attr_field_name_obj, &ret);
-
-       if (rc) {
-               ret = NULL;
-       }
-
-end:
-       BT_OBJECT_PUT(attr_field_name_obj);
-       BT_OBJECT_PUT(attr_field_obj);
-
-       return ret;
-}
-
-BT_HIDDEN
-struct bt_object *bt_ctf_attributes_get_field_value(struct bt_object *attr_obj,
-               int index)
-{
-       struct bt_object *value_obj = NULL;
-       struct bt_object *attr_field_obj = NULL;
-
-       if (!attr_obj || index < 0) {
-               goto end;
-       }
-
-       attr_field_obj = bt_object_array_get(attr_obj, index);
-
-       if (!attr_field_obj) {
-               goto end;
-       }
-
-       value_obj = bt_object_array_get(attr_field_obj,
-               BT_CTF_ATTR_VALUE_INDEX);
-
-end:
-       BT_OBJECT_PUT(attr_field_obj);
-
-       return value_obj;
-}
-
-static
-struct bt_object *bt_ctf_attributes_get_field_by_name(
-               struct bt_object *attr_obj, const char *name)
-{
-       int i;
-       int attr_size;
-       struct bt_object *value_obj = NULL;
-       struct bt_object *attr_field_name_obj = NULL;
-
-       attr_size = bt_object_array_size(attr_obj);
-
-       if (attr_size < 0) {
-               goto error;
-       }
-
-       for (i = 0; i < attr_size; ++i) {
-               int ret;
-               const char *field_name;
-
-               value_obj = bt_object_array_get(attr_obj, i);
-
-               if (!value_obj) {
-                       goto error;
-               }
-
-               attr_field_name_obj = bt_object_array_get(value_obj, 0);
-
-               if (!attr_field_name_obj) {
-                       goto error;
-               }
-
-               ret = bt_object_string_get(attr_field_name_obj, &field_name);
-               if (ret) {
-                       goto error;
-               }
-
-               if (!strcmp(field_name, name)) {
-                       BT_OBJECT_PUT(attr_field_name_obj);
-                       break;
-               }
-
-               BT_OBJECT_PUT(attr_field_name_obj);
-               BT_OBJECT_PUT(value_obj);
-       }
-
-       return value_obj;
-
-error:
-       BT_OBJECT_PUT(attr_field_name_obj);
-       BT_OBJECT_PUT(value_obj);
-
-       return value_obj;
-}
-
-BT_HIDDEN
-int bt_ctf_attributes_set_field_value(struct bt_object *attr_obj,
-               const char *name, struct bt_object *value_obj)
-{
-       int ret = 0;
-       struct bt_object *attr_field_obj = NULL;
-
-       if (!attr_obj || !name || !value_obj) {
-               ret = -1;
-               goto end;
-       }
-
-       attr_field_obj = bt_ctf_attributes_get_field_by_name(attr_obj, name);
-
-       if (attr_field_obj) {
-               ret = bt_object_array_set(attr_field_obj,
-                       BT_CTF_ATTR_VALUE_INDEX, value_obj);
-               goto end;
-       }
-
-       attr_field_obj = bt_object_array_create();
-
-       if (!attr_field_obj) {
-               ret = -1;
-               goto end;
-       }
-
-       ret = bt_object_array_append_string(attr_field_obj, name);
-       ret |= bt_object_array_append(attr_field_obj, value_obj);
-
-       if (ret) {
-               goto end;
-       }
-
-       ret = bt_object_array_append(attr_obj, attr_field_obj);
-
-end:
-       BT_OBJECT_PUT(attr_field_obj);
-
-       return ret;
-}
-
-BT_HIDDEN
-struct bt_object *bt_ctf_attributes_get_field_value_by_name(
-               struct bt_object *attr_obj, const char *name)
-{
-       struct bt_object *value_obj = NULL;
-       struct bt_object *attr_field_obj = NULL;
-
-       if (!attr_obj || !name) {
-               goto end;
-       }
-
-       attr_field_obj = bt_ctf_attributes_get_field_by_name(attr_obj, name);
-
-       if (!attr_field_obj) {
-               goto end;
-       }
-
-       value_obj = bt_object_array_get(attr_field_obj,
-               BT_CTF_ATTR_VALUE_INDEX);
-
-end:
-       BT_OBJECT_PUT(attr_field_obj);
-
-       return value_obj;
-}
-
-BT_HIDDEN
-int bt_ctf_attributes_freeze(struct bt_object *attr_obj)
-{
-       int i;
-       int count;
-       int ret = 0;
-
-       if (!attr_obj) {
-               ret = -1;
-               goto end;
-       }
-
-       count = bt_object_array_size(attr_obj);
-
-       if (count < 0) {
-               ret = -1;
-               goto end;
-       }
-
-       /*
-        * We do not freeze the array itself here, since internal
-        * stuff could need to modify/add attributes. Each attribute
-        * is frozen one by one.
-        */
-       for (i = 0; i < count; ++i) {
-               struct bt_object *obj = NULL;
-
-               obj = bt_ctf_attributes_get_field_value(attr_obj, i);
-
-               if (!obj) {
-                       ret = -1;
-                       goto end;
-               }
-
-               bt_object_freeze(obj);
-               BT_OBJECT_PUT(obj);
-       }
-
-end:
-
-       return ret;
-}
index 2928f7575228496a50045d99abb2f7b04afd523a..17d4faae664b9a6c3f17000570b564df4b12a2d3 100644 (file)
@@ -53,6 +53,7 @@ noinst_HEADERS = \
        babeltrace/ctf/ctf-index.h \
        babeltrace/ctf-writer/ref-internal.h \
        babeltrace/ctf-writer/writer-internal.h \
+       babeltrace/ctf-ir/attributes-internal.h \
        babeltrace/ctf-ir/event-types-internal.h \
        babeltrace/ctf-ir/event-fields-internal.h \
        babeltrace/ctf-ir/event-internal.h \
diff --git a/include/babeltrace/ctf-ir/attributes-internal.h b/include/babeltrace/ctf-ir/attributes-internal.h
new file mode 100644 (file)
index 0000000..e383c28
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef BABELTRACE_CTF_IR_ATTRIBUTES_H
+#define BABELTRACE_CTF_IR_ATTRIBUTES_H
+
+/*
+ * attributes.c
+ *
+ * Babeltrace - CTF IR: Attributes internal
+ *
+ * Copyright (c) 2015 EfficiOS Inc. and Linux Foundation
+ * Copyright (c) 2015 Philippe Proulx <pproulx@efficios.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <babeltrace/babeltrace-internal.h>
+#include <babeltrace/objects.h>
+
+BT_HIDDEN
+struct bt_object *bt_ctf_attributes_create(void);
+
+BT_HIDDEN
+void bt_ctf_attributes_destroy(struct bt_object *attr_obj);
+
+BT_HIDDEN
+int bt_ctf_attributes_get_count(struct bt_object *attr_obj);
+
+BT_HIDDEN
+const char *bt_ctf_attributes_get_field_name(struct bt_object *attr_obj,
+               int index);
+
+BT_HIDDEN
+struct bt_object *bt_ctf_attributes_get_field_value(struct bt_object *attr_obj,
+               int index);
+
+BT_HIDDEN
+int bt_ctf_attributes_set_field_value(struct bt_object *attr_obj,
+               const char *name, struct bt_object *value_obj);
+
+BT_HIDDEN
+struct bt_object *bt_ctf_attributes_get_field_value_by_name(
+               struct bt_object *attr_obj, const char *name);
+
+BT_HIDDEN
+int bt_ctf_attributes_freeze(struct bt_object *attr_obj);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* BABELTRACE_CTF_IR_ATTRIBUTES_H */
index de4a07ef635c4adc356ad31f639a6346f9b03046..e574bd60dd2517f5dead77dea85f876565543aa2 100644 (file)
@@ -34,7 +34,6 @@
 extern "C" {
 #endif
 
-#include <babeltrace/babeltrace-internal.h>
 #include <babeltrace/objects.h>
 
 /*
@@ -52,34 +51,6 @@ extern "C" {
  */
 extern int bt_ctf_validate_identifier(const char *identifier);
 
-BT_HIDDEN
-struct bt_object *bt_ctf_attributes_create(void);
-
-BT_HIDDEN
-void bt_ctf_attributes_destroy(struct bt_object *attr_obj);
-
-BT_HIDDEN
-int bt_ctf_attributes_get_count(struct bt_object *attr_obj);
-
-BT_HIDDEN
-const char *bt_ctf_attributes_get_field_name(struct bt_object *attr_obj,
-               int index);
-
-BT_HIDDEN
-struct bt_object *bt_ctf_attributes_get_field_value(struct bt_object *attr_obj,
-               int index);
-
-BT_HIDDEN
-int bt_ctf_attributes_set_field_value(struct bt_object *attr_obj,
-               const char *name, struct bt_object *value_obj);
-
-BT_HIDDEN
-struct bt_object *bt_ctf_attributes_get_field_value_by_name(
-               struct bt_object *attr_obj, const char *name);
-
-BT_HIDDEN
-int bt_ctf_attributes_freeze(struct bt_object *attr_obj);
-
 #ifdef __cplusplus
 }
 #endif
This page took 0.032758 seconds and 4 git commands to generate.