common: replace container_of with a C++ safe implementation
[lttng-tools.git] / src / common / session-descriptor.cpp
index 9867de83e73a0f8db63d3d4cb4b060f6b830f21a..1171b2930ce605c2ee465476cd5d4541cd48a646 100644 (file)
 #include <time.h>
 #include <stdio.h>
 
+namespace {
 struct lttng_session_descriptor_network_location {
        struct lttng_uri *control;
        struct lttng_uri *data;
 };
+} /* namespace */
 
 struct lttng_session_descriptor {
        enum lttng_session_descriptor_type type;
@@ -32,6 +34,7 @@ struct lttng_session_descriptor {
        } output;
 };
 
+namespace {
 struct lttng_session_descriptor_snapshot {
        struct lttng_session_descriptor base;
        /*
@@ -61,6 +64,7 @@ struct lttng_session_descriptor_live_comm {
        /* Live-specific parameters. */
        uint64_t live_timer_us;
 } LTTNG_PACKED;
+} /* namespace */
 
 static
 struct lttng_uri *uri_copy(const struct lttng_uri *uri)
@@ -71,7 +75,7 @@ struct lttng_uri *uri_copy(const struct lttng_uri *uri)
                goto end;
        }
 
-       new_uri = (lttng_uri *) zmalloc(sizeof(*new_uri));
+       new_uri = zmalloc<lttng_uri>();
        if (!new_uri) {
                goto end;
        }
@@ -179,8 +183,8 @@ int network_location_set_from_uri_strings(
         * session descriptors expect individually allocated lttng_uris.
         */
        if (uri_count == 2) {
-               control_uri = (lttng_uri *) zmalloc(sizeof(*control_uri));
-               data_uri = (lttng_uri *) zmalloc(sizeof(*data_uri));
+               control_uri = zmalloc<lttng_uri>();
+               data_uri = zmalloc<lttng_uri>();
                if (!control_uri || !data_uri) {
                        ret = -1;
                        goto end;
@@ -208,7 +212,7 @@ lttng_session_descriptor_create(const char *name)
 {
        struct lttng_session_descriptor *descriptor;
 
-       descriptor = (lttng_session_descriptor *) zmalloc(sizeof(*descriptor));
+       descriptor = zmalloc<lttng_session_descriptor>();
        if (!descriptor) {
                goto error;
        }
@@ -334,7 +338,7 @@ _lttng_session_descriptor_snapshot_create(const char *name)
 {
        struct lttng_session_descriptor_snapshot *descriptor;
 
-       descriptor = (lttng_session_descriptor_snapshot *) zmalloc(sizeof(*descriptor));
+       descriptor = zmalloc<lttng_session_descriptor_snapshot>();
        if (!descriptor) {
                goto error;
        }
@@ -477,7 +481,7 @@ _lttng_session_descriptor_live_create(const char *name,
        if (live_timer_interval_us == 0) {
                goto error;
        }
-       descriptor = (lttng_session_descriptor_live *) zmalloc(sizeof(*descriptor));
+       descriptor = zmalloc<lttng_session_descriptor_live>();
        if (!descriptor) {
                goto error;
        }
@@ -709,7 +713,7 @@ skip_name:
                }
 
                uri = (typeof(uri)) current_view.data;
-               uris[i] = (lttng_uri *) zmalloc(sizeof(*uri));
+               uris[i] = zmalloc<lttng_uri>();
                if (!uris[i]) {
                        ret = -1;
                        goto end;
@@ -843,9 +847,8 @@ int lttng_session_descriptor_serialize(
 
        header.base.uri_count = uri_count;
        if (descriptor->type == LTTNG_SESSION_DESCRIPTOR_TYPE_LIVE) {
-               const struct lttng_session_descriptor_live *live =
-                               container_of(descriptor, typeof(*live),
-                               base);
+               const struct lttng_session_descriptor_live *live = lttng::utils::container_of(
+                               descriptor, &lttng_session_descriptor_live::base);
 
                header.live_timer_us = live->live_timer_us;
                header_ptr = &header;
@@ -914,7 +917,7 @@ lttng_session_descriptor_live_get_timer_interval(
 {
        struct lttng_session_descriptor_live *live;
 
-       live = container_of(descriptor, typeof(*live), base);
+       live = lttng::utils::container_of(descriptor, &lttng_session_descriptor_live::base);
        return live->live_timer_us;
 }
 
This page took 0.024898 seconds and 4 git commands to generate.