File indexing completed on 2024-05-12 03:47:20
0001 /* 0002 File : VariableParser.h 0003 Project : LabPlot 0004 Description : Variable parser for different CAS backends 0005 -------------------------------------------------------------------- 0006 SPDX-FileCopyrightText: 2015 Garvit Khatri <garvitdelhi@gmail.com> 0007 SPDX-FileCopyrightText: 2016 Alexander Semke <alexander.semke@web.de> 0008 SPDX-License-Identifier: GPL-2.0-or-later 0009 */ 0010 0011 #ifndef VARIABLEPARSER_H 0012 #define VARIABLEPARSER_H 0013 0014 class QString; 0015 #include <QDateTime> 0016 #include <QVector> 0017 0018 #include "backend/core/AbstractColumn.h" 0019 0020 class VariableParser { 0021 public: 0022 VariableParser(QString name, QString value); 0023 ~VariableParser() { 0024 clearValues(); 0025 m_parsed = false; 0026 } 0027 QVector<int>& integers(); 0028 QVector<qint64>& bigInt(); 0029 QVector<double>& doublePrecision(); 0030 QVector<QDateTime>& dateTime(); 0031 QVector<QString>& text(); 0032 bool isParsed(); 0033 0034 enum class Datatype { 0035 uint8, 0036 int8, 0037 uint16, 0038 int16, 0039 uint32, 0040 int32, 0041 uint64, 0042 int64, 0043 float32, 0044 float64, 0045 datetime64_ms, 0046 datetime64_s, 0047 datetime64_m, 0048 datetime64_h, // hour is smallest unit 0049 datetime64_D, // day is smallest unit 0050 text, 0051 }; 0052 0053 AbstractColumn::ColumnMode dataType() { 0054 return m_dataType; 0055 } 0056 0057 private: 0058 QString m_backendName; 0059 QString m_string; 0060 void* m_values{nullptr}; 0061 bool m_parsed{false}; 0062 AbstractColumn::ColumnMode m_dataType{AbstractColumn::ColumnMode::Double}; 0063 0064 void parseMaximaValues(); 0065 void parsePythonValues(); 0066 void parseRValues(); 0067 void parseOctaveValues(); 0068 void parseValues(const QStringList&, Datatype type = Datatype::float64); 0069 Datatype convertNumpyDatatype(const QString& datatype); 0070 0071 void clearValues(); 0072 }; 0073 0074 #endif // VARIABLEPARSER_H