From: Philippe Proulx Date: Wed, 8 Feb 2017 00:40:49 +0000 (-0500) Subject: Add component class help property X-Git-Tag: v2.0.0-pre1~502 X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=5536d9a6266c3f1f48e21dc434788261686965a7;hp=7eb483595b72fd45fbb3aebbe2684c46e95b0051;p=babeltrace.git Add component class help property 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 --- 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)