From a9fb4f869271f47c3a4507d2bc6b8b3d756ec873 Mon Sep 17 00:00:00 2001 From: Aaron Seigo Date: Tue, 9 Dec 2014 22:02:35 +0100 Subject: DataSet, and create a small lib to be used by tests --- tests/hawd/dataset.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/hawd/dataset.h (limited to 'tests/hawd/dataset.h') diff --git a/tests/hawd/dataset.h b/tests/hawd/dataset.h new file mode 100644 index 0000000..eb18b70 --- /dev/null +++ b/tests/hawd/dataset.h @@ -0,0 +1,80 @@ +/* + * Copyright (C) 2014 Aaron Seigo + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +#include "datasetdefinition.h" + +#include "state.h" +#include "common/storage.h" + +#include +#include + +namespace HAWD +{ + +class Dataset +{ +public: + class Row + { + public: + Row(const Row &other); + Row &operator=(const Row &rhs); + void setValue(const QString &column, const QVariant &value); + QVariant value(const QString &column); + void annotate(const QString ¬e); + qint64 key() const; + QByteArray toBinary() const; + QString toString() const; + + private: + Row(); + Row(const Dataset &dataset, qint64 key = 0); + void fromBinary(QByteArray &binary); + + qint64 m_key; + QHash m_columns; + QHash m_data; + QString m_annotation; + const Dataset *m_dataset; + friend class Dataset; + }; + + Dataset(const DatasetDefinition &definition); + Dataset(const QString &name, const State &state); + ~Dataset(); + + bool isValid(); + const DatasetDefinition &definition() const; + + qint64 insertRow(const Row &row); + void removeRow(const Row &row); + Row row(qint64 key = 0); + Row lastRow(); + //TODO: row cursor + +private: + DatasetDefinition m_definition; + Storage m_storage; +}; + +} // namespace HAWD + -- cgit v1.2.3