allow constructing TableColumn from tables

also add accessors and equality operator
This commit is contained in:
Arne Morten Kvarving
2019-11-29 09:57:25 +01:00
parent 64fd78694e
commit 3b49c8a63c
2 changed files with 55 additions and 0 deletions

View File

@@ -31,9 +31,19 @@ namespace Opm {
class TableColumn {
public:
TableColumn();
explicit TableColumn( const ColumnSchema& schema );
TableColumn(const ColumnSchema& schema,
const std::string& name,
const std::vector<double>& values,
const std::vector<bool>& defaults,
size_t defaultCount);
size_t size( ) const;
const ColumnSchema& schema() const;
const std::string& name() const;
const std::vector<double>& values() const;
const std::vector<bool>& defaults() const;
size_t defaultCount() const;
void assertOrder(double value1 , double value2) const;
void addValue(double);
void addDefault();
@@ -60,6 +70,9 @@ namespace Opm {
std::vector<double> vectorCopy() const;
std::vector<double>::const_iterator begin() const;
std::vector<double>::const_iterator end() const;
bool operator==(const TableColumn& data) const;
private:
void assertUpdate(size_t index, double value) const;
void assertPrevious(size_t index , double value) const;

View File

@@ -26,6 +26,11 @@
namespace Opm {
TableColumn::TableColumn()
{
m_defaultCount = 0;
}
TableColumn::TableColumn(const ColumnSchema& schema) :
m_schema( schema )
{
@@ -33,6 +38,19 @@ namespace Opm {
}
TableColumn::TableColumn(const ColumnSchema& schema,
const std::string& name,
const std::vector<double>& values,
const std::vector<bool>& defaults,
size_t defaultCount) :
m_schema(schema),
m_name(name),
m_values(values),
m_default(defaults),
m_defaultCount(defaultCount)
{
}
size_t TableColumn::size() const {
return m_values.size();
@@ -44,10 +62,26 @@ namespace Opm {
throw std::invalid_argument("Incorrect ordering of values in column: " + m_schema.name());
}
const ColumnSchema& TableColumn::schema() const {
return m_schema;
}
const std::string& TableColumn::name() const {
return m_name;
}
const std::vector<double>& TableColumn::values() const {
return m_values;
}
const std::vector<bool>& TableColumn::defaults() const {
return m_default;
}
size_t TableColumn::defaultCount() const {
return m_defaultCount;
}
void TableColumn::assertNext(size_t index , double value) const {
size_t nextIndex = index + 1;
if (nextIndex < m_values.size()) {
@@ -324,6 +358,14 @@ namespace Opm {
return std::vector<double>( begin() , end());
}
bool TableColumn::operator==(const TableColumn& data) const {
return this->schema() == data.schema() &&
this->name() == data.name() &&
this->values() == data.values() &&
this->defaults() == data.defaults() &&
this->defaultCount() == data.defaultCount();
}
}