liborigin  ..
/builddir/build/BUILD/liborigin-3.0.2/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 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 {
27 public:
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 
38 protected:
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 
55 private:
56  bool iequals(const std::string &, const std::string &,
57  const std::locale & = std::locale()) const;
58 
59 public:
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;
70  unsigned int fileVersion, buildVersion;
71 };
72 
73 OriginParser *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::SpreadSheet > spreadSheets
Definition: OriginParser.h:61
std::vector< Origin::Matrix > matrixes
Definition: OriginParser.h:62
unsigned int buildVersion
Definition: OriginParser.h:70
std::vector< Origin::Note > notes
Definition: OriginParser.h:66
virtual ~OriginParser()=default
virtual bool parse()=0
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::vector< Origin::SpreadColumn > datasets
Definition: OriginParser.h:60
std::vector< Origin::Graph > graphs
Definition: OriginParser.h:65
std::vector< Origin::Excel > excels
Definition: OriginParser.h:63