WSF
WsfParseAction.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 WSFPARSEACTION_HPP
16#define WSFPARSEACTION_HPP
17
18#include "wsf_parser_export.h"
19
20#include <string>
21#include <vector>
22
23#include "UtCast.hpp"
24
25class WsfParseStruct;
26class WsfParseValue;
28
29// Stores an address for accessing a value in the proxy.
30// struct members are stored as integer indexes
31// object map keys are stored as C strings.
33{
34public:
42
43 class Entry
44 {
45 public:
48 {
49 }
50 Entry(EntryType aType, size_t aIndex = ut::npos, const char* aName = nullptr)
51 : mType(aType)
52 , mIndex(aIndex)
53 , mName(aName)
54 {
55 }
56 Entry(const char* aName)
57 : Entry(EntryType::cSTRING, ut::npos, aName)
58 {
59 }
60
61 bool IsNodeIndex() const { return mType == EntryType::cNODE; }
62 bool IsAttributeIndex() const { return mType == EntryType::cATTRIBUTE; }
63 bool IsString() const { return mType == EntryType::cSTRING; }
64
65 size_t GetNodeIndex() const { return mIndex; }
66
68 size_t mIndex;
69
70 // This string's memory is handled by WsfParseDefinitions
71 const char* mName;
72 };
73
75 {
76 mAttrIndices.insert(mAttrIndices.end(), aRhs.mAttrIndices.begin(), aRhs.mAttrIndices.end());
77#ifdef WSF_PARSE_DEBUG
78 if (!mDEBUG_Addr.empty())
79 {
80 mDEBUG_Addr += '.';
81 }
82 mDEBUG_Addr += aRhs.mDEBUG_Addr;
83#endif
84 return *this;
85 }
87 {
88 mAttrIndices.push_back(aEntry);
89 return *this;
90 }
91 bool IsEmpty() const { return mAttrIndices.empty(); }
92 std::vector<Entry> mAttrIndices;
93#ifdef WSF_PARSE_DEBUG
94 std::string mDEBUG_Addr;
95#endif
96};
97
125
127{
128public:
129 std::vector<std::string> mSignatureStrings;
130 std::vector<WsfParseValueType*> mSignature;
131 std::vector<std::string> mArgumentNames;
132};
133
146
147// TODO:
149{
150public:
153 , mDstName()
154 , mDstAddr()
155 , mDstType(nullptr)
156 , mSrcName()
157 , mSrcAddr()
158 {
159 }
160 ~WsfParseActionCopy() override;
161 WsfParseActionCopy(const WsfParseActionCopy&) = default; // copy constructor
162
163 std::string mDstName;
164 // Address of the attribute to copy
167 std::string mSrcName;
169};
170
172{
173public:
174 WsfParseActionPush(const std::string& aAttrName)
176 , mAttributeName(aAttrName)
177 {
178 }
179 ~WsfParseActionPush() override = default;
180 WsfParseActionPush(const WsfParseActionPush&) = default; // copy constructor
181
182 std::string mAttributeName;
183 // Address of the attribute to push onto the stack
185};
186
188{
189public:
190 WsfParseActionPrint(const std::string& aString)
192 , mString(aString)
193 {
194 }
195 ~WsfParseActionPrint() override = default;
196 WsfParseActionPrint(const WsfParseActionPrint&) = default; // copy constructor
197
198 std::string mString;
199};
200
202{
203public:
212 ~WsfParseActionListOp() override;
213 WsfParseActionListOp(const WsfParseActionListOp&) = default; // copy constructor
214
216 {
218 };
219
221 std::string mAttributeName;
222 // Address of the list object
225};
226
228{
229public:
232 WsfParseActionObjectMapOp(const WsfParseActionObjectMapOp&) = default; // copy constructor
233
235 {
238 // Same as cNEW when the item doesn't yet exist
239 // otherwise, does cGET
243 };
244
246 std::string mAttributeName;
248 // Address of the map object
251 // Resolves to the name of the object in the map
253};
254
256{
257public:
258 WsfParseActionLiteral(const std::string& aText)
260 , mText(aText)
261 {
262 }
263 ~WsfParseActionLiteral() override = default;
264 WsfParseActionLiteral(const WsfParseActionLiteral&) = default; // copy constructor
265
266 std::string mText;
267};
268
284
286{
287public:
290 , mSubPart(nullptr)
291 {
292 }
293 ~WsfParseActionNegate() override;
294 WsfParseActionNegate(const WsfParseActionNegate&) = default; // copy constructor
295
297};
298
300{
301public:
306 ~WsfParseActionSkip() override = default;
307 WsfParseActionSkip(const WsfParseActionSkip&) = default; // copy constructor
308};
309
311{
312public:
315 , mFunctionName()
316 , mFunctionPtr(nullptr)
317 , mArgs()
318 {
319 }
320 ~WsfParseActionCall() override;
321 WsfParseActionCall(const WsfParseActionCall&) = default; // copy constructor
322
323 std::string mFunctionName;
325 std::vector<WsfParseActionPart*> mArgs;
326};
327
328class WSF_PARSER_EXPORT WsfParseAction
329{
330public:
332 : mSubActions()
333 {
334 }
337 WsfParseAction(const WsfParseAction&) = default; // copy constructor
338
339 void AddPart(WsfParseActionPart* aPartPtr) { mSubActions.push_back(aPartPtr); }
342 {
343 mSubActions.insert(mSubActions.end(), aRhs.mSubActions.begin(), aRhs.mSubActions.end());
344 aRhs.mSubActions.clear();
345 }
346
347 std::vector<WsfParseActionPart*> mSubActions;
348};
349
350#endif
Definition WsfParseAction.hpp:44
bool IsAttributeIndex() const
Definition WsfParseAction.hpp:62
const char * mName
Definition WsfParseAction.hpp:71
size_t GetNodeIndex() const
Definition WsfParseAction.hpp:65
EntryType mType
Definition WsfParseAction.hpp:67
Entry(EntryType aType, size_t aIndex=ut::npos, const char *aName=nullptr)
Definition WsfParseAction.hpp:50
bool IsNodeIndex() const
Definition WsfParseAction.hpp:61
bool IsString() const
Definition WsfParseAction.hpp:63
Entry()
Definition WsfParseAction.hpp:46
Entry(const char *aName)
Definition WsfParseAction.hpp:56
size_t mIndex
Definition WsfParseAction.hpp:68
Definition WsfParseAction.hpp:33
EntryType
Definition WsfParseAction.hpp:36
@ cATTRIBUTE
Definition WsfParseAction.hpp:40
@ cSTRING
Definition WsfParseAction.hpp:37
@ cNODE
Definition WsfParseAction.hpp:39
@ cROOT
Definition WsfParseAction.hpp:38
std::vector< Entry > mAttrIndices
Definition WsfParseAction.hpp:92
WsfParseActionAddress & operator+=(const Entry &aEntry)
Definition WsfParseAction.hpp:86
WsfParseActionAddress & operator+=(const WsfParseActionAddress &aRhs)
Definition WsfParseAction.hpp:74
bool IsEmpty() const
Definition WsfParseAction.hpp:91
~WsfParseActionAssign() override
Definition WsfParseAction.cpp:31
WsfParseActionAddress mLHS_Address
Definition WsfParseAction.hpp:142
std::string mLHS_Name
Definition WsfParseAction.hpp:141
WsfParseActionAssign(const WsfParseActionAssign &)=default
WsfParseValueType * mLHS_Type
Definition WsfParseAction.hpp:143
WsfParseActionPart * mRHS
Definition WsfParseAction.hpp:144
WsfParseActionAssign()
Definition WsfParseAction.cpp:24
WsfParseActionFunction * mFunctionPtr
Definition WsfParseAction.hpp:324
std::string mFunctionName
Definition WsfParseAction.hpp:323
WsfParseActionCall(const WsfParseActionCall &)=default
WsfParseActionCall()
Definition WsfParseAction.hpp:313
~WsfParseActionCall() override
Definition WsfParseAction.cpp:72
std::vector< WsfParseActionPart * > mArgs
Definition WsfParseAction.hpp:325
std::string mSrcName
Definition WsfParseAction.hpp:167
WsfParseValueType * mDstType
Definition WsfParseAction.hpp:166
WsfParseActionCopy()
Definition WsfParseAction.hpp:151
std::string mDstName
Definition WsfParseAction.hpp:163
WsfParseActionAddress mDstAddr
Definition WsfParseAction.hpp:165
WsfParseActionCopy(const WsfParseActionCopy &)=default
WsfParseActionAddress mSrcAddr
Definition WsfParseAction.hpp:168
~WsfParseActionCopy() override
Definition WsfParseAction.cpp:36
Definition WsfParseAction.hpp:127
std::vector< std::string > mSignatureStrings
Definition WsfParseAction.hpp:129
std::vector< WsfParseValueType * > mSignature
Definition WsfParseAction.hpp:130
std::vector< std::string > mArgumentNames
Definition WsfParseAction.hpp:131
ListOperation
Definition WsfParseAction.hpp:216
@ cPUSH_BACK
Definition WsfParseAction.hpp:217
~WsfParseActionListOp() override
Definition WsfParseAction.cpp:38
std::string mAttributeName
Definition WsfParseAction.hpp:221
WsfParseActionPart * mPushedValuePtr
Definition WsfParseAction.hpp:224
WsfParseActionListOp()
Definition WsfParseAction.hpp:204
WsfParseActionAddress mAttributeAddr
Definition WsfParseAction.hpp:223
ListOperation mOperation
Definition WsfParseAction.hpp:220
WsfParseActionListOp(const WsfParseActionListOp &)=default
std::string mText
Definition WsfParseAction.hpp:266
~WsfParseActionLiteral() override=default
WsfParseActionLiteral(const WsfParseActionLiteral &)=default
WsfParseActionLiteral(const std::string &aText)
Definition WsfParseAction.hpp:258
WsfParseActionPart * mSubPart
Definition WsfParseAction.hpp:296
WsfParseActionNegate(const WsfParseActionNegate &)=default
WsfParseActionNegate()
Definition WsfParseAction.hpp:288
~WsfParseActionNegate() override
Definition WsfParseAction.cpp:43
WsfParseActionNodeReference()
Definition WsfParseAction.hpp:272
size_t mIndex
Definition WsfParseAction.hpp:281
~WsfParseActionNodeReference() override=default
WsfParseActionNodeReference(const WsfParseActionNodeReference &)=default
WsfParseValueType * mValueTypePtr
Definition WsfParseAction.hpp:282
ObjectMapOperation
Definition WsfParseAction.hpp:235
@ cGET
Definition WsfParseAction.hpp:236
@ cDELETE
Definition WsfParseAction.hpp:241
@ cNEW
Definition WsfParseAction.hpp:237
@ cAPPLY
Definition WsfParseAction.hpp:242
@ cMAP_SET
Definition WsfParseAction.hpp:240
ObjectMapOperation mOperation
Definition WsfParseAction.hpp:245
WsfParseActionObjectMapOp(const WsfParseActionObjectMapOp &)=default
WsfParseActionAddress mAttributeAddr
Definition WsfParseAction.hpp:249
int mApplyOrd
Definition WsfParseAction.hpp:247
WsfParseActionPart * mObjectName
Definition WsfParseAction.hpp:252
~WsfParseActionObjectMapOp() override
Definition WsfParseAction.cpp:67
std::string mAttributeName
Definition WsfParseAction.hpp:246
WsfParseValueType * mObjectMapTypePtr
Definition WsfParseAction.hpp:250
WsfParseActionObjectMapOp()
Definition WsfParseAction.cpp:56
Definition WsfParseAction.hpp:99
WsfParseValueType * mRHS_Type
Definition WsfParseAction.hpp:123
virtual ~WsfParseActionPart()
Definition WsfParseAction.cpp:19
WsfParseActionPart(ActionPartType aType)
Definition WsfParseAction.hpp:116
ActionPartType mActionPartType
Definition WsfParseAction.hpp:122
ActionPartType
Definition WsfParseAction.hpp:102
@ cNEGATE
Definition WsfParseAction.hpp:109
@ cPUSH
Definition WsfParseAction.hpp:110
@ cLITERAL
Definition WsfParseAction.hpp:107
@ cSKIP
Definition WsfParseAction.hpp:112
@ cCALL
Definition WsfParseAction.hpp:114
@ cASSIGN
Definition WsfParseAction.hpp:103
@ cCOPY
Definition WsfParseAction.hpp:113
@ cNODE_REFERENCE
Definition WsfParseAction.hpp:108
@ cLIST_OP
Definition WsfParseAction.hpp:105
@ cDEBUG_PRINT
Definition WsfParseAction.hpp:111
@ cOBJECT_MAP_OP
Definition WsfParseAction.hpp:106
WsfParseActionPrint(const std::string &aString)
Definition WsfParseAction.hpp:190
std::string mString
Definition WsfParseAction.hpp:198
~WsfParseActionPrint() override=default
WsfParseActionPrint(const WsfParseActionPrint &)=default
WsfParseActionPush(const WsfParseActionPush &)=default
~WsfParseActionPush() override=default
std::string mAttributeName
Definition WsfParseAction.hpp:182
WsfParseActionAddress mAttributeAddr
Definition WsfParseAction.hpp:184
WsfParseActionPush(const std::string &aAttrName)
Definition WsfParseAction.hpp:174
WsfParseActionSkip()
Definition WsfParseAction.hpp:302
~WsfParseActionSkip() override=default
WsfParseActionSkip(const WsfParseActionSkip &)=default
Definition WsfParseAction.hpp:329
WsfParseAction()
Definition WsfParseAction.hpp:331
void Merge(WsfParseAction &aRhs)
Definition WsfParseAction.hpp:341
void Swap(WsfParseAction &aRhs)
Definition WsfParseAction.hpp:340
void AddPart(WsfParseActionPart *aPartPtr)
Definition WsfParseAction.hpp:339
WsfParseAction(const WsfParseAction &)=default
std::vector< WsfParseActionPart * > mSubActions
Definition WsfParseAction.hpp:347
WsfParseAction(WsfParseActionPart *aSub)
Definition WsfParseAction.hpp:335
Definition WsfParseRule.hpp:527
Definition WsfParseRule.hpp:58
Definition WsfParseRule.hpp:492
void swap(WsfRoute &aLhs, WsfRoute &aRhs)
Definition WsfRoute.hpp:294
Definition WsfSensorErrorModel.hpp:21
Copyrights Multiple, All Rights Reserved