X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=converter%2Fbabeltrace-cfg.h;h=f78fc1aef362090fbc1b2e2404e3897af016d833;hb=a67681c1f02f54bc1f708d449bceb35476024083;hp=f32bf07aab0af42c38f794c2f8808e9580adad4b;hpb=5a3ee633fdd379e8acf7535f0ba91fb05234a36a;p=babeltrace.git diff --git a/converter/babeltrace-cfg.h b/converter/babeltrace-cfg.h index f32bf07a..f78fc1ae 100644 --- a/converter/babeltrace-cfg.h +++ b/converter/babeltrace-cfg.h @@ -31,31 +31,78 @@ #include #include #include +#include #include struct bt_config_component { struct bt_object base; + enum bt_component_class_type type; GString *plugin_name; GString *component_name; struct bt_value *params; + GString *instance_name; +}; + +enum bt_config_command { + BT_CONFIG_COMMAND_CONVERT, + BT_CONFIG_COMMAND_LIST_PLUGINS, + BT_CONFIG_COMMAND_HELP, + BT_CONFIG_COMMAND_QUERY, }; struct bt_config { struct bt_object base; - struct bt_value *plugin_paths; + bool debug; + bool verbose; + const char *command_name; + enum bt_config_command command; + union { + /* BT_CONFIG_COMMAND_CONVERT */ + struct { + struct bt_value *plugin_paths; - /* Array of pointers to struct bt_config_component */ - GPtrArray *sources; + /* Array of pointers to struct bt_config_component */ + GPtrArray *sources; - /* Array of pointers to struct bt_config_component */ - GPtrArray *sinks; + /* Array of pointers to struct bt_config_component */ + GPtrArray *filters; - bool debug; - bool verbose; - bool do_list; - bool force_correlate; - bool omit_system_plugin_path; - bool omit_home_plugin_path; + /* Array of pointers to struct bt_config_component */ + GPtrArray *sinks; + + /* Array of pointers to struct bt_config_connection */ + GPtrArray *connections; + + bool force_correlate; + bool omit_system_plugin_path; + bool omit_home_plugin_path; + bool print_ctf_metadata; + } convert; + + /* BT_CONFIG_COMMAND_LIST_PLUGINS */ + struct { + struct bt_value *plugin_paths; + bool omit_system_plugin_path; + bool omit_home_plugin_path; + } list_plugins; + + /* BT_CONFIG_COMMAND_HELP */ + struct { + struct bt_value *plugin_paths; + bool omit_system_plugin_path; + bool omit_home_plugin_path; + struct bt_config_component *cfg_component; + } help; + + /* BT_CONFIG_COMMAND_QUERY */ + struct { + struct bt_value *plugin_paths; + bool omit_system_plugin_path; + bool omit_home_plugin_path; + GString *object; + struct bt_config_component *cfg_component; + } query; + } cmd_data; }; static inline @@ -65,10 +112,13 @@ struct bt_config_component *bt_config_get_component(GPtrArray *array, return bt_get(g_ptr_array_index(array, index)); } -struct bt_config *bt_config_create(void); +struct bt_config *bt_config_from_args(int argc, const char *argv[], + int *retcode, bool omit_system_plugin_path, + bool omit_home_plugin_path, + struct bt_value *initial_plugin_paths); -int bt_config_init_from_args(struct bt_config *cfg, int argc, - const char *argv[]); +struct bt_config_component *bt_config_component_from_arg( + enum bt_component_class_type type, const char *arg); enum bt_value_status bt_config_append_plugin_paths( struct bt_value *plugin_paths, const char *arg);