int main(int argc, char* argv[]) { salad_filename = argv[0]; log_level = STATUS; config_t config; test_config_t test_config; switch (parse_options(argc, argv, &config, &test_config)) { case SALAD_EXIT: return bye(EXIT_FAILURE); case SALAD_HELP: return usage_main(); case SALAD_HELP_TRAIN: return usage_train(); case SALAD_HELP_PREDICT: return usage_predict(); case SALAD_HELP_INSPECT: return usage_inspect(); case SALAD_HELP_STATS: return usage_stats(); #ifdef TEST_SALAD case SALAD_HELP_TEST: return usage_test(); #endif case SALAD_VERSION: return version(); default: break; } if (config.input_type == IOMODE_FILES) { error("Input mode 'files' is not yet implemented."); return bye(EXIT_FAILURE); } int ret = EXIT_FAILURE, is_metaop = FALSE; switch (config.mode) { case TRAINING: ret = _salad_train_(&config); break; case PREDICT: ret = _salad_predict_(&config); break; case INSPECT: ret = _salad_inspect_(&config); break; default: is_metaop = TRUE; break; } switch (config.mode) { case STATS: ret = _salad_stats_(&config); break; #ifdef TEST_SALAD case TEST: ret = _salad_test_(&test_config); break; #endif default: break; } return bye_ex(ret, is_metaop ? NULL : "Done!"); }
const int bye(const int ec) { return bye_ex(ec, NULL); }