]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.databoard/cpp/DataBoardTest/DataBoard/DataValueRepository.h
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.databoard / cpp / DataBoardTest / DataBoard / DataValueRepository.h
1 #pragma once
2
3 #include "DataBoardAPI.h"
4
5 #include "SimanticsDataParser.h"
6 #include "SimanticsDataLexer.h"
7
8 #include <string>
9 #include <vector>
10
11 namespace Databoard {
12
13         namespace Type {
14                 class DataType;
15                 class DataBoardRepository;
16                 struct strTypeDefinition;
17         }
18
19         namespace Value {
20
21                 class Value;
22
23                 struct DATABOARD_API strDataValueDefinition {
24                         std::string name;
25                         std::string type;
26                         Value* value;
27
28                         std::string writeOut() const;
29                 };
30
31                 class DATABOARD_API DataValueRepository {
32                 public:
33                         DataValueRepository();
34                         virtual ~DataValueRepository();
35
36                         int count();
37                         const strDataValueDefinition* getDataValue(int i);
38                         const strDataValueDefinition* getDataValue(std::string value);
39
40                         bool open(std::string fileName, Databoard::Type::DataBoardRepository* dataBoardRepository);
41                         Value* open(std::string fileName, Databoard::Type::DataType* dataType);
42                         
43
44                 protected:
45
46                         std::vector<strDataValueDefinition> values;
47
48                 private:
49
50                         Databoard::Type::DataBoardRepository* dataBoardRepository;
51
52                         Value* parse(pANTLR3_BASE_TREE tree, Value* parent = NULL, int indent = 0);
53                         void print(pANTLR3_BASE_TREE tree, int indent = 0);
54
55                         const Databoard::Type::strTypeDefinition* parseTypeReference(pANTLR3_BASE_TREE tree);
56                         Value* parseValues(pANTLR3_BASE_TREE tree, Databoard::Type::DataType* dataBoard, int indent);
57
58                         void addDataValue(std::string name, std::string type, Value* dataValue);
59                 };
60         }
61 }