lib: add internal object pool API and use it; adapt plugins/tests
[babeltrace.git] / include / babeltrace / ctf-ir / stream-class.h
index 94d7c9b889507870757bdaba6305f3a33d107e1a..225ea45079a28c4d023194975ea9acc39adb56db 100644 (file)
@@ -32,6 +32,9 @@
 
 #include <stdint.h>
 
+/* For bt_get() */
+#include <babeltrace/ref.h>
+
 /* For bt_visitor */
 #include <babeltrace/ctf-ir/visitor.h>
 
@@ -139,6 +142,8 @@ except for:
 struct bt_stream_class;
 struct bt_event_class;
 struct bt_clock;
+struct bt_event_header_field;
+struct bt_packet_context_field;
 
 /**
 @name Creation and parent access functions
@@ -178,6 +183,9 @@ bt_stream_class_set_event_header_field_type().
 */
 extern struct bt_stream_class *bt_stream_class_create(const char *name);
 
+extern struct bt_trace *bt_stream_class_borrow_trace(
+               struct bt_stream_class *stream_class);
+
 /**
 @brief Returns the parent CTF IR trace class of the CTF IR stream
        class \p stream_class.
@@ -200,8 +208,12 @@ bt_trace_add_stream_class().
 @sa bt_trace_add_stream_class(): Add a stream class to
        a trace class.
 */
-extern struct bt_trace *bt_stream_class_get_trace(
-               struct bt_stream_class *stream_class);
+static inline
+struct bt_trace *bt_stream_class_get_trace(
+               struct bt_stream_class *stream_class)
+{
+       return bt_get(bt_stream_class_borrow_trace(stream_class));
+}
 
 /** @} */
 
@@ -300,6 +312,9 @@ extern int bt_stream_class_set_id(
 @{
 */
 
+extern struct bt_field_type *bt_stream_class_borrow_packet_context_field_type(
+               struct bt_stream_class *stream_class);
+
 /**
 @brief Returns the packet context field type of the CTF IR stream class
        \p stream_class.
@@ -318,7 +333,16 @@ extern int bt_stream_class_set_id(
 @sa bt_stream_class_set_packet_context_field_type(): Sets the packet
        context field type of a given stream class.
 */
-extern struct bt_field_type *bt_stream_class_get_packet_context_field_type(
+static inline
+struct bt_field_type *bt_stream_class_get_packet_context_field_type(
+               struct bt_stream_class *stream_class)
+{
+       return bt_get(bt_stream_class_borrow_packet_context_field_type(
+               stream_class));
+}
+
+extern
+struct bt_packet_context_field *bt_stream_class_create_packet_context_field(
                struct bt_stream_class *stream_class);
 
 /**
@@ -354,6 +378,10 @@ extern int bt_stream_class_set_packet_context_field_type(
                struct bt_stream_class *stream_class,
                struct bt_field_type *packet_context_type);
 
+extern struct bt_field_type *
+bt_stream_class_borrow_event_header_field_type(
+               struct bt_stream_class *stream_class);
+
 /**
 @brief Returns the event header field type of the CTF IR stream class
        \p stream_class.
@@ -372,9 +400,13 @@ extern int bt_stream_class_set_packet_context_field_type(
 @sa bt_stream_class_set_event_header_field_type(): Sets the event
        header field type of a given stream class.
 */
-extern struct bt_field_type *
-bt_stream_class_get_event_header_field_type(
-               struct bt_stream_class *stream_class);
+static inline
+struct bt_field_type *bt_stream_class_get_event_header_field_type(
+               struct bt_stream_class *stream_class)
+{
+       return bt_get(bt_stream_class_borrow_event_header_field_type(
+               stream_class));
+}
 
 /**
 @brief Sets the event header field type of the CTF IR stream class
@@ -409,6 +441,13 @@ extern int bt_stream_class_set_event_header_field_type(
                struct bt_stream_class *stream_class,
                struct bt_field_type *event_header_type);
 
+extern struct bt_event_header_field *bt_stream_class_create_event_header_field(
+               struct bt_stream_class *stream_class);
+
+extern struct bt_field_type *
+bt_stream_class_borrow_event_context_field_type(
+               struct bt_stream_class *stream_class);
+
 /**
 @brief Returns the event context field type of the CTF IR stream class
        \p stream_class.
@@ -428,9 +467,14 @@ extern int bt_stream_class_set_event_header_field_type(
 @sa bt_stream_class_set_event_context_field_type(): Sets the event
        context field type of a given stream class.
 */
-extern struct bt_field_type *
+static inline
+struct bt_field_type *
 bt_stream_class_get_event_context_field_type(
-               struct bt_stream_class *stream_class);
+               struct bt_stream_class *stream_class)
+{
+       return bt_get(bt_stream_class_borrow_event_context_field_type(
+               stream_class));
+}
 
 /**
 @brief Sets the event context field type of the CTF IR stream class
@@ -488,6 +532,9 @@ extern int bt_stream_class_set_event_context_field_type(
 extern int64_t bt_stream_class_get_event_class_count(
                struct bt_stream_class *stream_class);
 
+extern struct bt_event_class *bt_stream_class_borrow_event_class_by_index(
+               struct bt_stream_class *stream_class, uint64_t index);
+
 /**
 @brief  Returns the event class at index \p index in the CTF IR stream
        class \p stream_class.
@@ -507,8 +554,16 @@ extern int64_t bt_stream_class_get_event_class_count(
 @sa bt_stream_class_get_event_class_by_id(): Finds an event class
        by ID.
 */
-extern struct bt_event_class *bt_stream_class_get_event_class_by_index(
-               struct bt_stream_class *stream_class, uint64_t index);
+static inline
+struct bt_event_class *bt_stream_class_get_event_class_by_index(
+               struct bt_stream_class *stream_class, uint64_t index)
+{
+       return bt_get(bt_stream_class_borrow_event_class_by_index(stream_class,
+               index));
+}
+
+extern struct bt_event_class *bt_stream_class_borrow_event_class_by_id(
+               struct bt_stream_class *stream_class, uint64_t id);
 
 /**
 @brief  Returns the event class with ID \c id found in the CTF IR stream
@@ -523,8 +578,13 @@ extern struct bt_event_class *bt_stream_class_get_event_class_by_index(
 @postrefcountsame{stream_class}
 @postsuccessrefcountretinc
 */
-extern struct bt_event_class *bt_stream_class_get_event_class_by_id(
-               struct bt_stream_class *stream_class, uint64_t id);
+static inline
+struct bt_event_class *bt_stream_class_get_event_class_by_id(
+               struct bt_stream_class *stream_class, uint64_t id)
+{
+       return bt_get(bt_stream_class_borrow_event_class_by_id(stream_class,
+               id));
+}
 
 /**
 @brief Adds the CTF IR event class \p event_class to the
This page took 0.02507 seconds and 4 git commands to generate.