From 5536d9a6266c3f1f48e21dc434788261686965a7 Mon Sep 17 00:00:00 2001 From: Philippe Proulx Date: Tue, 7 Feb 2017 19:40:49 -0500 Subject: [PATCH] Add component class help property MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit The help of a component class is a full text which describes its purpose, the expected params for its constructor, etc. It does not have to start with a description since there's already a description property for this. Signed-off-by: Philippe Proulx Signed-off-by: Jérémie Galarneau --- .../component/component-class-internal.h | 1 + .../babeltrace/component/component-class.h | 7 ++++ lib/component/component-class.c | 32 +++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/include/babeltrace/component/component-class-internal.h b/include/babeltrace/component/component-class-internal.h index fcfe539f..856621db 100644 --- a/include/babeltrace/component/component-class-internal.h +++ b/include/babeltrace/component/component-class-internal.h @@ -53,6 +53,7 @@ struct bt_component_class { enum bt_component_class_type type; GString *name; GString *description; + GString *help; struct { bt_component_class_init_method init; bt_component_class_destroy_method destroy; diff --git a/include/babeltrace/component/component-class.h b/include/babeltrace/component/component-class.h index 664d7bcf..aee24740 100644 --- a/include/babeltrace/component/component-class.h +++ b/include/babeltrace/component/component-class.h @@ -85,6 +85,10 @@ extern int bt_component_class_set_description( struct bt_component_class *component_class, const char *description); +extern int bt_component_class_set_help( + struct bt_component_class *component_class, + const char *help); + extern int bt_component_class_freeze( struct bt_component_class *component_class); @@ -109,6 +113,9 @@ extern const char *bt_component_class_get_name( extern const char *bt_component_class_get_description( struct bt_component_class *component_class); +extern const char *bt_component_class_get_help( + struct bt_component_class *component_class); + /** * Get a component class' type. * diff --git a/lib/component/component-class.c b/lib/component/component-class.c index 1f6e680a..a0080421 100644 --- a/lib/component/component-class.c +++ b/lib/component/component-class.c @@ -57,6 +57,9 @@ void bt_component_class_destroy(struct bt_object *obj) if (class->description) { g_string_free(class->description, TRUE); } + if (class->help) { + g_string_free(class->help, TRUE); + } if (class->destroy_listeners) { g_array_free(class->destroy_listeners, TRUE); } @@ -82,6 +85,11 @@ int bt_component_class_init(struct bt_component_class *class, goto error; } + class->help = g_string_new(NULL); + if (!class->help) { + goto error; + } + class->destroy_listeners = g_array_new(FALSE, TRUE, sizeof(struct bt_component_class_destroy_listener)); if (!class->destroy_listeners) { @@ -390,6 +398,23 @@ end: return ret; } +int bt_component_class_set_help( + struct bt_component_class *component_class, + const char *help) +{ + int ret = 0; + + if (!component_class || component_class->frozen || !help) { + ret = -1; + goto end; + } + + g_string_assign(component_class->help, help); + +end: + return ret; +} + const char *bt_component_class_get_name( struct bt_component_class *component_class) { @@ -410,6 +435,13 @@ const char *bt_component_class_get_description( component_class->description->str : NULL; } +const char *bt_component_class_get_help( + struct bt_component_class *component_class) +{ + return component_class && component_class->help ? + component_class->help->str : NULL; +} + BT_HIDDEN int bt_component_class_add_destroy_listener(struct bt_component_class *class, bt_component_class_destroy_listener_func func, void *data) -- 2.34.1