souffle-haskell-1.0.0: cbits/souffle/profile/Table.h
/*
* Souffle - A Datalog Compiler
* Copyright (c) 2016, The Souffle Developers. All rights reserved
* Licensed under the Universal Permissive License v 1.0 as shown at:
* - https://opensource.org/licenses/UPL
* - <souffle root>/licenses/SOUFFLE-UPL.txt
*/
#pragma once
#include "DataComparator.h"
#include "Row.h"
#include <algorithm>
#include <vector>
namespace souffle {
namespace profile {
/*
* Table class for holding a vector of rows
* And sorting the rows based on a datacomparator function
*/
class Table {
public:
std::vector<std::shared_ptr<Row>> rows;
Table() : rows() {}
void addRow(std::shared_ptr<Row> row) {
rows.push_back(row);
}
inline std::vector<std::shared_ptr<Row>> getRows() {
return rows;
}
void sort(int col_num) {
switch (col_num) {
case 1:
std::sort(rows.begin(), rows.end(), DataComparator::NR_T);
break;
case 2:
std::sort(rows.begin(), rows.end(), DataComparator::R_T);
break;
case 3:
std::sort(rows.begin(), rows.end(), DataComparator::C_T);
break;
case 4:
std::sort(rows.begin(), rows.end(), DataComparator::TUP);
break;
case 5:
std::sort(rows.begin(), rows.end(), DataComparator::ID);
break;
case 6:
std::sort(rows.begin(), rows.end(), DataComparator::NAME);
break;
case 0:
default: // if the col_num isn't defined use TIME
std::sort(rows.begin(), rows.end(), DataComparator::TIME);
break;
}
}
};
} // namespace profile
} // namespace souffle