Skip to content
Snippets Groups Projects
mains.cpp 13.80 KiB
#include "stdafx.h"

#include <random>
#include "mains.h"
#include "entrypoint.h"
#include "parameter.h"
#include "parser.h"
#include "print.h"
#include "operation.h"
#include "dtw.h"
#include "lcss.h"
#include "pdtw.h"
#include "help.h"
#include "calcul.h"
#include "draw.h"
#include "preprocess.h"

using namespace std;

///Main entry point of the application.
///@param[in] args application arguments
void mains::master(vtr<string> const &args)
{
	auto script = parser::parseScript(args);
	parameter params;

	if (script.size() == 0) {
		params.setParameters(args);
		master_run(params);
	}
	else
		for (size_t i = 0; i < script.size(); i++)
		{
			params.setParameters(params.applyParameter(script[i], args));
			master_run(params);
		}
}

///Main logic function of the application.
///@param[in] params parameters
///@param[in] unit if true: called from unit test application
///@return operation results
result_operation mains::master_run(parameter const &params, bool unit)
{
	result_time times;
	auto begin = chrono::steady_clock::now();
	auto data = parseData(params);
	times.parsing = chrono::duration_cast<chrono::milliseconds>(chrono::steady_clock::now() - begin).count();

	begin = chrono::steady_clock::now();
	preprocess(data, params);
	times.preprocesing = chrono::duration_cast<chrono::milliseconds>(chrono::steady_clock::now() - begin).count();

	if (params.debugInfo) {
		cout << print::input(data.input, 30) << endl; // print for debug comment or delete if not needed
		cout << print::input(data.query, 30) << endl; // print for debug comment or delete if not needed
	}

	begin = chrono::steady_clock::now();
	auto result = run(data, params);
	times.opeartion = chrono::duration_cast<chrono::milliseconds>(chrono::steady_clock::now() - begin).count();
	
	result.time = times;

	if(!unit){
		printResult(result, params);
		writeResult(data, result, times, params);
	}

	return result;