18 std::istream_iterator<std::string> file_start{inputfile};
19 std::istream_iterator<std::string> file_end;
21 std::vector<std::string> fileContent;
22 std::copy(file_start,file_end,back_inserter(fileContent));
24 fileContent.erase(begin(fileContent));
28 for (
auto& line: fileContent){
29 std::vector<std::string> table_entry;
32 std::stringstream lineStream(line);
34 while(std::getline(lineStream,cell,
','))
35 table_entry.push_back(cell);
36 m_table.push_back(std::move(table_entry));
49 const std::vector<std::pair<int,std::string>>& argumentpairs){
55 std::shared_ptr<CSVWrapper::tableline> return_ptr (
60 std::cout <<
"Duplicate found!" << std::endl;
62 for (
const auto &
r:
res) {
63 std::cout <<
r <<
", ";
65 std::cout << std::endl;
67 throw "Non unique result to FindLine";
71 std::shared_ptr<CSVWrapper::tableline> return_ptr (
82 const std::vector<std::pair<int,std::string>>& argumentpairs){
85 std::vector<std::shared_ptr<CSVWrapper::tableline>> return_vec;
89 std::shared_ptr<CSVWrapper::tableline> return_ptr (
91 return_vec.push_back(std::move(return_ptr));
95 std::shared_ptr<CSVWrapper::tableline> return_ptr (
97 return_vec.push_back(std::move(return_ptr));
116 for(
const auto& row :
m_table){
117 if(!sample || (
m_table.size()-rowidx)<100){
118 for(
size_t idx(0);idx<row.size();idx++ ){
119 std::cout << row.at(idx) <<
" , ";
121 std::cout << std::endl;
130 std::vector<bool> matchvector(argumentpairs.size(),
false);
136 for(
const auto& newsearch : argumentpairs){
137 matchvector.at(idx) = ((newsearch.first ==
m_prevsearch.at(idx).first) &&
139 if(!matchvector.at(idx))
break;
151 size_t searchcolumnidx = 0;
154 std::vector<CSVWrapper::tableline>
result;
155 for(
bool matched : matches ){
159 auto search = argumentpairs.at(searchcolumnidx);
std::pair< std::vector< unsigned int >, bool > res
std::vector< tableline > m_table
std::vector< std::shared_ptr< tableline > > FindLines(const std::vector< std::pair< int, std::string > > &argumentpairs)
std::vector< CSVWrapper::tableline > QueryTable(const std::vector< std::pair< int, std::string > > &argumentpairs)
void PrintTable(bool sample=false) const
tableline GetLine(const int element) const
std::vector< std::pair< int, std::string > > m_prevsearch
std::vector< std::string > tableline
std::vector< bool > ComparePreviousSearch(const std::vector< std::pair< int, std::string > > &argumentpairs)
std::vector< std::vector< tableline > > m_previousresults
std::shared_ptr< tableline > FindLine(const std::vector< std::pair< int, std::string > > &argumentpairs)
void search(TDirectory *td, const std::string &s, std::string cwd, node *n)
recursive directory search for TH1 and TH2 and TProfiles
DataModel_detail::iterator< DVL > remove_if(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, Predicate pred)
Specialization of remove_if for DataVector/List.