source: icGREP/icgrep-devel/icgrep/combine/core.cpp @ 5613

Last change on this file since 5613 was 5613, checked in by faldebey, 19 months ago

different updates to CoRE

File size: 2.0 KB
Line 
1#include <string>
2#include <vector>
3#include <fstream>
4#include <boost/algorithm/string/classification.hpp>
5#include <boost/algorithm/string/split.hpp>
6#include <boost/filesystem.hpp>
7#include <iostream>
8#include <algorithm>
9#include "regexGen.h"
10#include "stringGen.h"
11#include "pugixml/src/pugixml.hpp"
12#include "icgrep-test/icgrep-test.h"
13
14using namespace std;
15
16std::vector<string> vectorizeLine(string line){
17        std::vector<string> elements;
18        boost::split(elements, line, boost::is_any_of(","), boost::token_compress_on);
19        return elements;
20}
21
22std::vector<string> setOptions(std::vector<string> header, string xml){
23        if (!xml.empty()){
24                std::vector<string> options;
25                pugi::xml_document doc;
26                doc.load_file(xml.c_str());
27                for (auto op : header){
28                        bool added = false;
29                        for (auto parameter : doc.first_child().children()){
30                                if (parameter.attribute("name").value() == op){
31                                        string sch(parameter.child("Switch").child_value());
32                                        if (sch == "on"){
33                                                options.push_back(op);
34                                                added =  true;
35                                        }
36                                }
37                        }
38                        if (!added){
39                                options.push_back("off");
40                        }
41                       
42                }
43                return options;
44        }
45       
46        return header;
47       
48
49}
50int main (int argc, char *argv[]) { 
51        if (argc > 3) {
52                cout << "incorrect arguments!\n";
53        cout<< "usage: " << argv[0] << " <combinatorial csv file name> <options xml file name>\n";
54        return 0;
55    }
56        else {
57                IcgrepTest ictest;
58
59                ictest.prepare();
60
61                string csv = (argc > 1)? argv[1] : "../icgrep/combine/icGrep-output.csv";
62                string xml = (argc > 2)? argv[2] : "";
63
64                ifstream file;
65                file.open(csv);
66                if (!file.is_open()){
67                        cerr << "Could not open input file\n";
68                        return 0;
69                }
70
71                string line;
72                vector<string> row;
73                getline(file, line);
74                vector<string> header = setOptions(vectorizeLine(line), xml);
75                int rownum = 1;
76                while(getline(file, line)){
77                        row = vectorizeLine(line);
78                        RegexGen reGen(header, row);
79                        ictest.buildTest(reGen.RE, reGen.flags, reGen.syntax, rownum);
80                        ++rownum;
81                }
82                ictest.execute();
83                ictest.getResult();
84                file.close();
85               
86        }
87        return 0;
88}
Note: See TracBrowser for help on using the repository browser.