-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
75 lines (64 loc) · 2.81 KB
/
main.cpp
File metadata and controls
75 lines (64 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#include <iostream>
#include <QTextStream>
#include <QElapsedTimer>
#include <QDebug>
#include "splitter.h"
void printUsage(){
std::cout << "Usage: SpineMLSplitter input_file output_file [options]" << std::endl;
std::cout << "Options:" << std::endl;
std::cout << " -no_parallel Turns off multicore splitting optimisations" << std::endl;
std::cout << " -no_xml_formatting Turns off xml autoformatting in default xml output (ignored when -alias is used)" << std::endl;
std::cout << " -alias Writes split file to DAMSON alias file (ignores no_xml_formatting)" << std::endl;
std::cout << " -silent Turns off console reporting of splitter and writer progress" << std::endl;
}
QString formatMillis(uint ms){
uint sec_temp = (ms+500) / 1000;
uint m = sec_temp / 60;
uint s = sec_temp - (m * 60);
uint millis = ms % 1000;
QString format = QString::number(m).append(" mins, ").append(QString::number(s)).append(" secs, ").append(QString::number(millis)).append( " ms");
return format;
}
int main(int argc, char** argv)
{
SpineMLSplitter *splitter;
bool parallel = true;
bool formatting = true;
bool silent = false;
WriterMode mode = WRITER_MODE_XML;
//check argument count
if (argc < 3){
printUsage();
exit(0);
}
//handle arguments
QString input_file = QString(argv[1]);
QString output_file = QString(argv[2]);
for (int i=3; i<argc; i++){
QString arg = QString(argv[i]);
if (arg == "-no_parallel")
parallel = false;
else if (arg == "-no_xml_formatting")
formatting = false;
else if (arg == "-silent")
silent = true;
else if (arg == "-alias")
mode = WRITER_MODE_ALIAS;
else if (arg == "-graph")
mode = WRITER_MODE_GRAPH;
else{
std::cerr << "Unrecognised argument!" <<std::endl;
printUsage();
exit(0);
}
}
splitter = new SpineMLSplitter(parallel, formatting, silent, mode);
splitter->split(input_file, output_file);
std::cout << "Completed Time: " << formatMillis(splitter->getTotalTime()).toLocal8Bit().data() << std::endl;
std::cout << "Splitting Time: " << formatMillis(splitter->getSplitTime()).toLocal8Bit().data() << std::endl;
std::cout << (splitter->getParser()->getParsedPopulationCount()) << " Parsed Populations" << std::endl;
std::cout << (splitter->getParser()->getParsedProjectionCount()+splitter->getParser()->getParsedInputCount()) << " Parsed Projections/Inputs" << std::endl;
std::cout << splitter->getSplitPopulationCount() << " Sub Populations" << std::endl;
std::cout << splitter->getSplitProjectionCount()+splitter->getSplitInputCount() << " Sub Projections/Inputs " << std::endl;
delete splitter;
}