WSF
WsfParseBasicRules.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11// ****************************************************************************
12// Updated by Infoscitex, a DCS Company.
13// ****************************************************************************
14
15#ifndef WSFPARSEBASICRULES_HPP
16#define WSFPARSEBASICRULES_HPP
17
18#include <set>
19
20#include "WsfParseGrammar.hpp"
21#include "WsfParseNode.hpp"
22#include "WsfParseRule.hpp"
23
24//
25// class WSF_PARSER_EXPORT IntegerRule : public Rule
26// {
27// public:
28// IntegerRule() : Rule(cINT)
29// {
30// mReaderFlags |= cIS_SINGLE_TOKEN;
31// }
32// virtual bool Read(WsfParser& aParser,
33// WsfParseNode*& aNode);
34// virtual bool ReadRange(WsfParser& aParser,
35// UtTextDocumentRange& aRange,
36// WsfParseNode*& aNode,
37// bool aCreateNode);
38// };
39
40class WSF_PARSER_EXPORT WsfParseRealRule : public WsfParseRule
41{
42public:
48 bool Read(WsfParser& aParser, WsfParseNode*& aNode) override;
49 bool ReadRange(WsfParser& aParser, UtTextDocumentRange& aRange, WsfParseNode*& aNode, bool aCreateNode) override;
50};
51
52class WSF_PARSER_EXPORT WsfParseIntRule : public WsfParseRule
53{
54public:
60 bool Read(WsfParser& aParser, WsfParseNode*& aNode) override;
61 bool ReadRange(WsfParser& aParser, UtTextDocumentRange& aRange, WsfParseNode*& aNode, bool aCreateNode) override;
62};
63
64class WSF_PARSER_EXPORT WsfParseStringRule : public WsfParseRule
65{
66public:
73 std::string mNodeType;
74 int mFlags;
75 bool Read(WsfParser& aParser, WsfParseNode*& aNode) override;
76 bool ReadRange(WsfParser& aParser, UtTextDocumentRange& aRange, WsfParseNode*& aNode, bool aCreateNode) override;
77};
78
80{
81public:
86 std::set<std::string> mExceptions;
87 bool Read(WsfParser& aParser, WsfParseNode*& aNode) override;
88 bool ReadRange(WsfParser& aParser, UtTextDocumentRange& aRange, WsfParseNode*& aNode, bool aCreateNode) override;
89};
90
91class WSF_PARSER_EXPORT WsfParseLineStringRule : public WsfParseRule
92{
93public:
98 bool Read(WsfParser& aParser, WsfParseNode*& aNode) override;
99};
100
101class WSF_PARSER_EXPORT WsfParseQuotedStringRule : public WsfParseRule
102{
103public:
104 WsfParseQuotedStringRule(WsfParseRuleMemory& aMem, bool aQuotesOptional)
106 , mFileReference(false)
107 , mFileSearchPaths(false)
108 {
109 mQuotesOptional = aQuotesOptional;
110 }
111 bool Read(WsfParser& aParser, WsfParseNode*& aNode) override;
112 void SetFileReference(const std::string& aFilePath, WsfParser& aParser, WsfParseNode* aNodePtr);
116 UtStringRef mFileType;
117};
118
119class WSF_PARSER_EXPORT WsfParseDelimited : public WsfParseRule
120{
121public:
123 struct Section
124 {
126 : mRulePtr(nullptr)
127 {
128 }
129 std::string mPreDelimiter;
130 // WsfParseRuleReference mRule;
132 // WsfParseReader* mReaderPtr;
133 };
134 bool Read(WsfParser& aParser, WsfParseNode*& aNode) override;
135 bool ReadRange(WsfParser& aParser, UtTextDocumentRange& aRange, WsfParseNode*& aNode, bool aCreateNode) override;
136
137 // These are members to avoid malloc's every time the reader executes
138 // No state is actually saved
139 std::vector<Section> mSections;
142 UtTextDocumentRange mWords[10];
143};
144
145#endif
std::vector< Section > mSections
Definition WsfParseBasicRules.hpp:139
WsfParseNode * mSubnodes[10]
Definition WsfParseBasicRules.hpp:141
UtTextDocumentRange mWords[10]
Definition WsfParseBasicRules.hpp:142
WsfParseDelimited(WsfParseRuleMemory &aMem)
Definition WsfParseBasicRules.cpp:526
bool mCaseSensitive
Definition WsfParseBasicRules.hpp:140
WsfParseIntRule(WsfParseRuleMemory &aMem)
Definition WsfParseBasicRules.hpp:55
WsfParseLineStringRule(WsfParseRuleMemory &aMem)
Definition WsfParseBasicRules.hpp:94
Definition WsfParseNode.hpp:61
bool mQuotesOptional
Definition WsfParseBasicRules.hpp:113
WsfParseQuotedStringRule(WsfParseRuleMemory &aMem, bool aQuotesOptional)
Definition WsfParseBasicRules.hpp:104
UtStringRef mFileType
Definition WsfParseBasicRules.hpp:116
bool mFileSearchPaths
Definition WsfParseBasicRules.hpp:115
bool mFileReference
Definition WsfParseBasicRules.hpp:114
WsfParseRealRule(WsfParseRuleMemory &aMem)
Definition WsfParseBasicRules.hpp:43
Definition WsfParseRule.hpp:263
virtual bool ReadRange(WsfParser &aParser, UtTextDocumentRange &aRange, WsfParseNode *&aNode, bool aCreateNode)
Definition WsfParseRule.hpp:197
virtual bool Read(WsfParser &aParser, WsfParseNode *&aNode)=0
@ cIS_SINGLE_TOKEN
Definition WsfParseRule.hpp:162
int mReaderFlags
Definition WsfParseRule.hpp:249
WsfParseRule(WsfParseRuleMemory &aMem, RuleType aType)
Definition WsfParseRule.cpp:85
@ cLINE_STRING
Definition WsfParseRule.hpp:145
@ cSTRING
Definition WsfParseRule.hpp:144
@ cQUOTED_STRING
Definition WsfParseRule.hpp:146
@ cINT
Definition WsfParseRule.hpp:143
@ cREAL
Definition WsfParseRule.hpp:142
std::string mNodeType
Definition WsfParseBasicRules.hpp:73
int mFlags
Definition WsfParseBasicRules.hpp:74
WsfParseStringRule(WsfParseRuleMemory &aMem)
Definition WsfParseBasicRules.hpp:67
WsfParseStringWithExceptionsRule(WsfParseRuleMemory &aMem)
Definition WsfParseBasicRules.hpp:82
std::set< std::string > mExceptions
Definition WsfParseBasicRules.hpp:86
Definition WsfParser.hpp:36
WsfParseRule * mRulePtr
Definition WsfParseBasicRules.hpp:131
Section()
Definition WsfParseBasicRules.hpp:125
std::string mPreDelimiter
Definition WsfParseBasicRules.hpp:129
Copyrights Multiple, All Rights Reserved