liborigin ..
/home/iurt/rpmbuild/BUILD/liborigin-3.0.3-build/liborigin-3.0.3/OriginParser.h
Go to the documentation of this file.
1/*
2 File : OriginParser.h
3 Description : Origin file parser base class
4 --------------------------------------------------------------------
5 SPDX-FileCopyrightText: 2008 Alex Kargovsky <kargovsky@yumr.phys.msu.su>
6 SPDX-FileCopyrightText: 2017-2024 Stefan Gerlach <stefan.gerlach@uni.kn>
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9
10#ifndef ORIGIN_PARSER_H
11#define ORIGIN_PARSER_H
12
13#include "OriginObj.h"
14#include "tree.hh"
15
16#ifdef GENERATE_CODE_FOR_LOG
17# define LOG_PRINT(logfile, ...) \
18 { \
19 fprintf(logfile, __VA_ARGS__); \
20 }
21#else // !GENERATE_CODE_FOR_LOG
22# define LOG_PRINT(logfile, ...) {};
23#endif
24
26{
27public:
28 virtual ~OriginParser() = default;
29 virtual bool parse() = 0;
30
31 std::vector<Origin::SpreadSheet>::difference_type
32 findSpreadByName(const std::string &name) const;
33 std::vector<Origin::Matrix>::difference_type findMatrixByName(const std::string &name) const;
34 std::vector<Origin::Function>::difference_type
35 findFunctionByName(const std::string &name) const;
36 std::vector<Origin::Excel>::difference_type findExcelByName(const std::string &name) const;
37
38protected:
39 std::vector<Origin::SpreadColumn>::difference_type
40 findSpreadColumnByName(std::vector<Origin::SpreadSheet>::size_type spread,
41 const std::string &name) const;
42 std::vector<Origin::SpreadColumn>::difference_type
43 findExcelColumnByName(std::vector<Origin::Excel>::size_type excel,
44 std::vector<Origin::SpreadSheet>::size_type sheet,
45 const std::string &name) const;
46 std::pair<std::string, std::string> findDataByIndex(unsigned int index) const;
47 std::pair<Origin::ProjectNode::NodeType, std::string>
48 findObjectByIndex(unsigned int index) const;
49 std::pair<Origin::ProjectNode::NodeType, Origin::Window>
50 findWindowObjectByIndex(unsigned int index) const;
51 void convertSpreadToExcel(std::vector<Origin::SpreadSheet>::size_type spread);
52
53 int findColumnByName(int spread, const std::string &name);
54
55private:
56 bool iequals(const std::string &, const std::string &,
57 const std::locale & = std::locale()) const;
58
59public:
60 std::vector<Origin::SpreadColumn> datasets;
61 std::vector<Origin::SpreadSheet> spreadSheets;
62 std::vector<Origin::Matrix> matrixes;
63 std::vector<Origin::Excel> excels;
64 std::vector<Origin::Function> functions;
65 std::vector<Origin::Graph> graphs;
66 std::vector<Origin::Note> notes;
67 tree<Origin::ProjectNode> projectTree;
68 std::string resultsLog;
69 unsigned int windowsCount{ 0 };
70 unsigned int fileVersion{ 0 }, buildVersion{ 0 };
71};
72
73OriginParser *createOriginAnyParser(const std::string &fileName);
74
75#endif // ORIGIN_PARSER_H
#define ORIGIN_EXPORT
Definition OriginObj.h:26
OriginParser * createOriginAnyParser(const std::string &fileName)
Definition OriginParser.h:26
std::vector< Origin::Function >::difference_type findFunctionByName(const std::string &name) const
Definition OriginParser.cpp:81
std::vector< Origin::SpreadSheet > spreadSheets
Definition OriginParser.h:61
std::pair< Origin::ProjectNode::NodeType, std::string > findObjectByIndex(unsigned int index) const
Definition OriginParser.cpp:134
bool iequals(const std::string &, const std::string &, const std::locale &=std::locale()) const
Definition OriginParser.cpp:17
std::vector< Origin::Matrix > matrixes
Definition OriginParser.h:62
std::vector< Origin::SpreadColumn >::difference_type findSpreadColumnByName(std::vector< Origin::SpreadSheet >::size_type spread, const std::string &name) const
Definition OriginParser.cpp:48
std::vector< Origin::Note > notes
Definition OriginParser.h:66
std::vector< Origin::Matrix >::difference_type findMatrixByName(const std::string &name) const
Definition OriginParser.cpp:72
virtual ~OriginParser()=default
int findColumnByName(int spread, const std::string &name)
Definition OriginParser.cpp:220
void convertSpreadToExcel(std::vector< Origin::SpreadSheet >::size_type spread)
Definition OriginParser.cpp:195
virtual bool parse()=0
std::vector< Origin::SpreadSheet >::difference_type findSpreadByName(const std::string &name) const
Definition OriginParser.cpp:28
unsigned int fileVersion
Definition OriginParser.h:70
std::vector< Origin::Function > functions
Definition OriginParser.h:64
unsigned int windowsCount
Definition OriginParser.h:69
std::string resultsLog
Definition OriginParser.h:68
tree< Origin::ProjectNode > projectTree
Definition OriginParser.h:67
std::pair< Origin::ProjectNode::NodeType, Origin::Window > findWindowObjectByIndex(unsigned int index) const
Definition OriginParser.cpp:165
std::vector< Origin::SpreadColumn >::difference_type findExcelColumnByName(std::vector< Origin::Excel >::size_type excel, std::vector< Origin::SpreadSheet >::size_type sheet, const std::string &name) const
Definition OriginParser.cpp:60
std::vector< Origin::Excel >::difference_type findExcelByName(const std::string &name) const
Definition OriginParser.cpp:38
std::vector< Origin::SpreadColumn > datasets
Definition OriginParser.h:60
std::vector< Origin::Graph > graphs
Definition OriginParser.h:65
std::pair< std::string, std::string > findDataByIndex(unsigned int index) const
Definition OriginParser.cpp:90
std::vector< Origin::Excel > excels
Definition OriginParser.h:63