|
From: Kouhei S. <nul...@cl...> - 2014-01-19 10:13:19
|
Kouhei Sutou 2014-01-19 19:12:57 +0900 (Sun, 19 Jan 2014) New Revision: bc60c0fd0b705fa2b3eb8fdfb6bf4ffe66f90476 https://github.com/clear-code/cutter/commit/bc60c0fd0b705fa2b3eb8fdfb6bf4ffe66f90476 Message: Use loaded loader customizers Modified files: cutter/cut-contractor.c cutter/cut-contractor.h cutter/cut-main.c Modified: cutter/cut-contractor.c (+10 -0) =================================================================== --- cutter/cut-contractor.c 2014-01-19 18:20:25 +0900 (1c3b8e6) +++ cutter/cut-contractor.c 2014-01-19 19:12:57 +0900 (07efb71) @@ -189,6 +189,16 @@ cut_contractor_build_all_listener_factories (CutContractor *contractor) return factories; } +GList * +cut_contractor_build_all_loader_customizer_factories (CutContractor *contractor) +{ + CutContractorPrivate *priv = CUT_CONTRACTOR_GET_PRIVATE(contractor); + CutFactoryBuilder *builder; + + builder = CUT_FACTORY_BUILDER(priv->loader_customizer_factory_builder); + return cut_factory_builder_build_all(builder); +} + void cut_contractor_set_option_context (CutContractor *contractor, GOptionContext *context) { Modified: cutter/cut-contractor.h (+2 -0) =================================================================== --- cutter/cut-contractor.h 2014-01-19 18:20:25 +0900 (158c6e3) +++ cutter/cut-contractor.h 2014-01-19 19:12:57 +0900 (9705573) @@ -52,6 +52,8 @@ GList *cut_contractor_build_listener_factories (CutContractor *contractor); GList *cut_contractor_build_all_listener_factories (CutContractor *contractor); +GList *cut_contractor_build_all_loader_customizer_factories + (CutContractor *contractor); gboolean cut_contractor_has_listener_builder (CutContractor *contractor, const gchar *type_name); Modified: cutter/cut-main.c (+32 -0) =================================================================== --- cutter/cut-main.c 2014-01-19 18:20:25 +0900 (c3b96df) +++ cutter/cut-main.c 2014-01-19 19:12:57 +0900 (7b64f4d) @@ -86,6 +86,7 @@ static gboolean use_multi_thread = FALSE; static gint max_threads = 10; static gboolean disable_signal_handling = FALSE; static GList *listener_factories = NULL; +static GList *loader_customizer_factories = NULL; static CutContractor *contractor = NULL; static gchar **original_argv = NULL; static gchar *cutter_command_path = NULL; @@ -311,6 +312,9 @@ cut_init (int *argc, char ***argv) if (!listener_factories) listener_factories = cut_contractor_build_listener_factories(contractor); + loader_customizer_factories = + cut_contractor_build_all_loader_customizer_factories(contractor); + g_option_context_set_help_enabled(option_context, TRUE); g_option_context_set_ignore_unknown_options(option_context, FALSE); if (!g_option_context_parse(option_context, argc, argv, &error)) { @@ -392,6 +396,19 @@ cut_quit (void) cut_ui_quit(); + if (listener_factories) { + g_list_foreach(listener_factories, (GFunc)g_object_unref, NULL); + g_list_free(listener_factories); + listener_factories = NULL; + } + + if (loader_customizer_factories) { + g_list_foreach(loader_customizer_factories, + (GFunc)g_object_unref, NULL); + g_list_free(loader_customizer_factories); + loader_customizer_factories = NULL; + } + if (contractor) { g_object_unref(contractor); contractor = NULL; @@ -418,6 +435,20 @@ cut_quit (void) initialized = FALSE; } +static void +set_loader_customizers (CutRunContext *run_context) +{ + GList *node; + + for (node = loader_customizer_factories; node; node = g_list_next(node)) { + GObject *customizer; + customizer = cut_module_factory_create(CUT_MODULE_FACTORY(node->data)); + cut_run_context_add_loader_customizer(run_context, + CUT_LOADER_CUSTOMIZER(customizer)); + g_object_unref(customizer); + } +} + void cut_setup_run_context (CutRunContext *run_context) { @@ -443,6 +474,7 @@ cut_setup_run_context (CutRunContext *run_context) enable_convenience_attribute_definition); cut_run_context_set_stop_before_test(run_context, stop_before_test); cut_run_context_set_command_line_args(run_context, original_argv); + set_loader_customizers(run_context); } CutRunContext * |