##// END OF EJS Templates
Determines AMDA server at compile time
Determines AMDA server at compile time

File last commit:

r980:c90f619c0c69
r1113:f38fedd3e3cb
Show More
AmdaResultParserHelper.h
107 lines | 3.5 KiB | text/x-c | CLexer
/ plugins / amda / include / AmdaResultParserHelper.h
Alexandre Leroux
Parser refactoring (1)...
r944 #ifndef SCIQLOP_AMDARESULTPARSERHELPER_H
#define SCIQLOP_AMDARESULTPARSERHELPER_H
Alexandre Leroux
Parser refactoring (3)...
r946 #include "AmdaResultParserDefs.h"
Alexandre Leroux
Parser refactoring (1)...
r944 #include <QtCore/QLoggingCategory>
#include <QtCore/QString>
#include <memory>
class IDataSeries;
Q_DECLARE_LOGGING_CATEGORY(LOG_AmdaResultParserHelper)
/**
* Helper used to interpret the data of an AMDA result file and generate the corresponding data
* series.
*
* It proposes methods allowing to read line by line an AMDA file and to extract the properties
* (from the header) and the values corresponding to the data series
*
* @sa DataSeries
*/
struct IAmdaResultParserHelper {
virtual ~IAmdaResultParserHelper() noexcept = default;
/// Verifies that the extracted properties are well formed and possibly applies other treatments
/// on them
/// @return true if the properties are well formed, false otherwise
virtual bool checkProperties() = 0;
/// Creates the data series from the properties and values extracted from the AMDA file.
/// @warning as the data are moved in the data series, the helper shouldn't be used after
/// calling this method
/// @return the data series created
virtual std::shared_ptr<IDataSeries> createSeries() = 0;
/// Reads a line from the AMDA file to extract a property that will be used to generate the data
/// series
/// @param line tahe line to interpret
virtual void readPropertyLine(const QString &line) = 0;
/// Reads a line from the AMDA file to extract a value that will be set in the data series
/// @param line the line to interpret
virtual void readResultLine(const QString &line) = 0;
};
Alexandre Leroux
Parser refactoring (2)...
r945 /**
* Implementation of @sa IAmdaResultParserHelper for scalars
*/
class ScalarParserHelper : public IAmdaResultParserHelper {
public:
bool checkProperties() override;
std::shared_ptr<IDataSeries> createSeries() override;
void readPropertyLine(const QString &line) override;
void readResultLine(const QString &line) override;
Alexandre Leroux
Parser refactoring (3)...
r946
private:
Alexandre Leroux
Parser refactoring (4)...
r947 /// @return the reading order of the "value" columns for a result line of the AMDA file
std::vector<int> valuesIndexes() const;
Alexandre Leroux
Parser refactoring (3)...
r946 Properties m_Properties{};
Alexandre Leroux
Parser refactoring (4)...
r947 std::vector<double> m_XAxisData{};
std::vector<double> m_ValuesData{};
Alexandre Leroux
Parser refactoring (2)...
r945 };
Alexandre Leroux
Spectrograms implementation (1)...
r949 /**
* Implementation of @sa IAmdaResultParserHelper for spectrograms
*/
class SpectrogramParserHelper : public IAmdaResultParserHelper {
public:
bool checkProperties() override;
std::shared_ptr<IDataSeries> createSeries() override;
void readPropertyLine(const QString &line) override;
void readResultLine(const QString &line) override;
Alexandre Leroux
Spectrograms implementation (3)...
r951
private:
Alexandre Leroux
Handles data holes in AMDA parser
r980 void handleDataHoles();
Alexandre Leroux
Spectrograms implementation (3)...
r951 Properties m_Properties{};
Alexandre Leroux
Spectrograms implementation (5)...
r953 std::vector<double> m_XAxisData{};
Alexandre Leroux
Spectrograms implementation (4)...
r952 std::vector<double> m_YAxisData{};
Alexandre Leroux
Spectrograms implementation (5)...
r953 std::vector<double> m_ValuesData{};
std::vector<int> m_ValuesIndexes{};
double m_FillValue{std::numeric_limits<double>::quiet_NaN()};
Alexandre Leroux
Spectrograms implementation (1)...
r949 };
Alexandre Leroux
Parser refactoring (2)...
r945 /**
* Implementation of @sa IAmdaResultParserHelper for vectors
*/
class VectorParserHelper : public IAmdaResultParserHelper {
public:
bool checkProperties() override;
std::shared_ptr<IDataSeries> createSeries() override;
void readPropertyLine(const QString &line) override;
void readResultLine(const QString &line) override;
Alexandre Leroux
Parser refactoring (3)...
r946
private:
Alexandre Leroux
Parser refactoring (4)...
r947 /// @return the reading order of the "value" columns for a result line of the AMDA file
std::vector<int> valuesIndexes() const;
Alexandre Leroux
Parser refactoring (3)...
r946 Properties m_Properties{};
Alexandre Leroux
Parser refactoring (4)...
r947 std::vector<double> m_XAxisData{};
std::vector<double> m_ValuesData{};
Alexandre Leroux
Parser refactoring (2)...
r945 };
Alexandre Leroux
Parser refactoring (1)...
r944 #endif // SCIQLOP_AMDARESULTPARSERHELPER_H