15#ifndef WSFPPROXYSATISFY_HPP
16#define WSFPPROXYSATISFY_HPP
43 return childPtr->
mValue.Text();
200 :
mResult(static_cast<unsigned int>(aResult))
332 EquationExpr
EvalExpr(EquationExpr& aExpr);
345 std::vector<Equation>& aEquations,
346 std::vector<WsfPProxyValue*>& aVariables);
353 std::vector<Equation>& aEquations,
355 std::vector<WsfPProxyValue*>& aVariables);
372 size_t& aNextEquation,
373 std::vector<Equation>& aEquations,
386 std::vector<WsfPProxyValue*> aVariables,
400 int aNextSequenceChild,
406 std::vector<WsfPProxyBasicValue>& aReturnValues,
408 size_t aNextSequenceChild,
438 std::string& aObjectName);
442 SatisfyResult
Satisfy(SatPoint pt);
449 std::unique_ptr<WsfPProxyActionLookup> mActionLookupPtr;
std::vector< UtStringRef > WsfParseTypePath
Definition WsfParseTypePath.hpp:21
Definition WsfPProxySatisfy.hpp:31
std::string StringEval(WsfParseNode *aParentNodePtr, WsfParseActionPart &aExpr)
Definition WsfPProxySatisfy.hpp:47
WsfPProxyRegistry * mRegistryPtr
Definition WsfPProxySatisfy.hpp:73
ProxyEvaluator(WsfPProxyRegistry *reg)
Definition WsfPProxySatisfy.hpp:33
std::string StringOrdValue(WsfParseNode *aParentNodePtr, size_t aOrd)
Definition WsfPProxySatisfy.hpp:38
Definition WsfPProxyRuleTrace.hpp:210
Definition WsfPProxyRuleTrace.hpp:73
Definition WsfPProxyRuleTrace.hpp:33
Definition WsfPProxyActionLookup.hpp:32
Definition WsfPProxyBasicValue.hpp:29
Represents a path or unique key to a value in the proxy.
Definition WsfPProxyPath.hpp:64
Definition WsfPProxyRegistry.hpp:37
bool SatisfyAttribute(const WsfPProxyPath &aPath)
Definition WsfPProxySatisfy.cpp:57
TypeLoadLookupResult LookupTypeLoad(WsfParseTypeInfoData::Operation aOperation, bool aIsSaveType, const WsfParseTypeName &aType, WsfPProxyUndoValue &aCurrent, WsfPProxyValue &aDesired, std::string &aObjectName)
Definition WsfPProxySatisfy.cpp:1853
SatisfyResult SatisfyValueRule(WsfPProxyBasicValue aDesiredValue, WsfPParseRuleTrace *aTracePtr)
Definition WsfPProxySatisfy.cpp:1675
std::set< const WsfPProxyType * > mTypesThatNeedToBeCleared
Definition WsfPProxySatisfy.hpp:86
bool SatisfyBlock(WsfPParseRuleTraceContext *aContextPtr)
Definition WsfPProxySatisfy.cpp:2408
WsfPProxyPath mTargetPath
Definition WsfPProxySatisfy.hpp:109
std::ofstream debugOutput
Definition WsfPProxySatisfy.hpp:222
SatisfyResult SatisfyTypeLoad(WsfParseRule *currentRulePtr, SatPoint pt)
Definition WsfPProxySatisfy.cpp:1982
WsfParseNamedRule * GetRuleOutput(WsfParseRule *aRulePtr)
Definition WsfPProxySatisfy.cpp:1174
WsfPProxyValue mDesiredRoot
Definition WsfPProxySatisfy.hpp:79
WsfPProxySatisfy::SatisfyResult SatisfyAttributeInContext(const WsfPProxyPath &aPath, WsfPParseRuleTraceContext *aContextPtr)
Definition WsfPProxySatisfy.cpp:130
SatisfyResult Satisfy(SatPoint pt)
Definition WsfPProxySatisfy.cpp:2082
void EquationExpression(WsfParseActionPart *aExprPtr, WsfParseValueType *aLHS_TypePtr, EquationExpr &aExpr)
Definition WsfPProxySatisfy.cpp:349
bool SolveEquations(const WsfPProxyValue &aCurrentDesired, std::vector< Equation > &aEquations, std::vector< WsfPProxyValue * > &aVariables)
Attempts to solve a set of equations.
Definition WsfPProxySatisfy.cpp:453
EquationExpr EvalExpr(EquationExpr &aExpr)
Definition WsfPProxySatisfy.cpp:392
SatisfyResult SatisfyAlternate(SatPoint pt)
Definition WsfPProxySatisfy.cpp:1567
WsfPProxySatisfy(WsfPProxyRegistry *aRegistryPtr, WsfPProxyValue aDesiredRootValue, WsfPProxyUndoValue aCurrentRootValue, WsfPParseRuleTracer *aTracerPtr)
Definition WsfPProxySatisfy.cpp:35
WsfPParseRuleTracer * mTracerPtr
Definition WsfPProxySatisfy.hpp:83
std::set< void * > mAttemptedToClear
Definition WsfPProxySatisfy.hpp:91
int ApplyEquations(size_t aActionSetIndex, size_t &aNextEquation, std::vector< Equation > &aEquations, WsfPProxyUndoValue &aCurrentValue, WsfPProxyValue aDesiredValue)
Definition WsfPProxySatisfy.cpp:623
WsfPProxyValue LookupBasicValue(const WsfPProxyPath &aPath)
Definition WsfPProxySatisfy.cpp:173
WsfPProxyUndoValue mCurrentRoot
Definition WsfPProxySatisfy.hpp:185
WsfPProxyRegistry * mRegistryPtr
Definition WsfPProxySatisfy.hpp:80
WsfPProxyValue LookupCurrentOrBasicValue(WsfPProxyUndoValue &aCurrent, const WsfParseTypePath &aAddr, bool aRelative)
Definition WsfPProxySatisfy.cpp:211
WsfPProxyUndoValue LookupCurrent(WsfPProxyUndoValue &aCurrent, const WsfParseTypePath &aAddr, bool aRelative)
Definition WsfPProxySatisfy.cpp:189
bool FindBindingAddress2(WsfPParseRuleTrace *aTracePtr, WsfPProxyUndoValue &aCurrentValue, WsfPProxyValue aDesiredValue, std::vector< WsfPProxyBasicValue > &aReturnValues, WsfParseSequence *aSeq, size_t aNextSequenceChild, WsfPProxyPath &aBindAddr)
Definition WsfPProxySatisfy.cpp:1232
SatisfyResultEnum
Definition WsfPProxySatisfy.hpp:188
@ cCHANGED_TARGET
Definition WsfPProxySatisfy.hpp:192
@ cSUCCESS
Definition WsfPProxySatisfy.hpp:193
@ cNOT_SATISFIABLE
Definition WsfPProxySatisfy.hpp:189
@ cSUCCESS_COMPLETE
Definition WsfPProxySatisfy.hpp:194
@ cADDS_VALUE
Definition WsfPProxySatisfy.hpp:191
@ cSATISFIABLE
Definition WsfPProxySatisfy.hpp:190
bool SatisfyRootDifferences()
Definition WsfPProxySatisfy.cpp:2244
void FollowAction(WsfParseAction *aActionPtr, WsfPParseRuleTrace *aParentTracePtr, WsfPProxyUndoValue &aCurrentValue, WsfPProxyValue *aDesiredValue, WsfPProxyPath &aCurrentPath, std::vector< WsfPProxyValue * > aVariables, SatisfyResult &aResult)
Definition WsfPProxySatisfy.cpp:669
bool IsEqual(const WsfPProxyValue &A, const WsfPProxyValue &B)
Definition WsfPProxySatisfy.cpp:166
SatMode
Definition WsfPProxySatisfy.hpp:94
@ cSM_FIX
Definition WsfPProxySatisfy.hpp:102
@ cSM_TARGET
Definition WsfPProxySatisfy.hpp:97
@ cSM_NONE
Definition WsfPProxySatisfy.hpp:95
bool SolveEquation(const WsfPProxyValue &aLhs, EquationExpr &aRHS, std::vector< WsfPProxyValue * > &aVariables)
Definition WsfPProxySatisfy.cpp:402
SatMode mSatMode
Definition WsfPProxySatisfy.hpp:105
bool FindBindingAddress(WsfPParseRuleTrace *aTracePtr, WsfPProxyUndoValue &aCurrentValue, WsfPProxyValue aDesiredValue, WsfParseSequence *aSeq, int aNextSequenceChild, WsfParseActionAddress &aBindAddr)
WsfPProxyValue Lookup(WsfPProxyValue &aRoot, const WsfPProxyValue &c, const WsfParseActionAddress &aAddr, WsfPProxyPath *aUpdatePath=nullptr)
Definition WsfPProxySatisfy.cpp:272
WsfPProxyValue LookupDesired(WsfPProxyValue aDesiredValue, const WsfParseActionAddress &aAddr, WsfPProxyPath *aUpdatePath=nullptr)
Definition WsfPProxySatisfy.hpp:251
SatisfyResult SatisfySequence(SatPoint pt)
Definition WsfPProxySatisfy.cpp:1376
bool BuildSequenceEquations(WsfParseSequence *aSequence, WsfPProxyUndoValue &aCurrentValue, const WsfPProxyValue &aDesiredValue, std::vector< Equation > &aEquations, WsfParseNode *aExistingNodePtr, std::vector< WsfPProxyValue * > &aVariables)
Definition WsfPProxySatisfy.cpp:477
SatisfyResult SatisfyRecurrence(SatPoint pt)
Definition WsfPProxySatisfy.cpp:1735
SatisfyResult SatisfyRoot(SatPoint pt)
Definition WsfPProxySatisfy.cpp:1711
WsfPParseRuleTrace * mTracePtr
Definition WsfPProxySatisfy.hpp:82
~WsfPProxySatisfy()
Definition WsfPProxySatisfy.cpp:53
ProxyEvaluator mEvaluator
Definition WsfPProxySatisfy.hpp:81
bool FixMode() const
Definition WsfPProxySatisfy.hpp:107
TypeLoadLookupResult
Definition WsfPProxySatisfy.hpp:427
@ cTL_FAILURE
Definition WsfPProxySatisfy.hpp:431
@ cTL_SUCCESS
Definition WsfPProxySatisfy.hpp:428
@ cTL_COLLISION
Definition WsfPProxySatisfy.hpp:429
@ cTL_LOADFAIL
Definition WsfPProxySatisfy.hpp:430
bool mRecurrenceInsertBeforeEnd
Definition WsfPProxySatisfy.hpp:84
Definition WsfPProxyUndo.hpp:102
Definition WsfPProxyValue.hpp:33
Definition WsfParseAction.hpp:33
Definition WsfParseAction.hpp:256
std::string mText
Definition WsfParseAction.hpp:266
Definition WsfParseAction.hpp:270
size_t mIndex
Definition WsfParseAction.hpp:281
WsfParseValueType * mValueTypePtr
Definition WsfParseAction.hpp:282
Definition WsfParseAction.hpp:99
ActionPartType mActionPartType
Definition WsfParseAction.hpp:122
@ cLITERAL
Definition WsfParseAction.hpp:107
@ cNODE_REFERENCE
Definition WsfParseAction.hpp:108
Definition WsfParseAction.hpp:329
Definition WsfParseRule.hpp:350
Definition WsfParseNode.hpp:61
WsfParseNode * GetChild(size_t aIndex) const
Definition WsfParseNode.cpp:377
UtTextDocumentRange mValue
Definition WsfParseNode.hpp:154
Definition WsfParseRule.hpp:131
Definition WsfParseSequence.hpp:21
Operation
Definition WsfParseTypeInfoData.hpp:28
Definition WsfParseType.hpp:139
Definition WsfParseRule.hpp:58
Definition WsfSensorErrorModel.hpp:21
Definition WsfPProxySatisfy.hpp:267
void Cleanup()
Definition WsfPProxySatisfy.hpp:302
std::string mFunction
Definition WsfPProxySatisfy.hpp:312
WsfPProxyValue mValue
Definition WsfPProxySatisfy.hpp:311
std::vector< EquationExpr > mParameters
Definition WsfPProxySatisfy.hpp:314
static EquationExpr UnsetValue()
Definition WsfPProxySatisfy.hpp:286
size_t mNodeIndex
Definition WsfPProxySatisfy.hpp:313
EquationExpr(size_t aNodeIndex)
Definition WsfPProxySatisfy.hpp:280
ExprType mExprType
Definition WsfPProxySatisfy.hpp:310
EquationExpr()
Definition WsfPProxySatisfy.hpp:285
EquationExpr(std::string &aFunc)
Definition WsfPProxySatisfy.hpp:274
ExprType
Definition WsfPProxySatisfy.hpp:293
@ cFUNCTION
Definition WsfPProxySatisfy.hpp:297
@ cUNSET_VALUE
Definition WsfPProxySatisfy.hpp:296
@ cVALUE
Definition WsfPProxySatisfy.hpp:295
@ cNODE_INDEX
Definition WsfPProxySatisfy.hpp:300
EquationExpr(WsfPProxyValue v)
Definition WsfPProxySatisfy.hpp:268
Represents an assignment being made in a grammar action.
Definition WsfPProxySatisfy.hpp:319
EquationExpr mRHS
Definition WsfPProxySatisfy.hpp:324
size_t mActionSet
Definition WsfPProxySatisfy.hpp:321
WsfPProxyPath mLHS
Definition WsfPProxySatisfy.hpp:323
void Cleanup()
Definition WsfPProxySatisfy.hpp:326
Definition WsfPProxySatisfy.hpp:113
WsfPProxyUndoValue current
Definition WsfPProxySatisfy.hpp:177
SatPoint(const SatPoint &aSrc, WsfPParseRuleTrace *aTrace)
Definition WsfPProxySatisfy.hpp:133
SatPoint()
Definition WsfPProxySatisfy.hpp:120
WsfPProxyValue returnValue
Definition WsfPProxySatisfy.hpp:179
SatPoint(WsfPProxyUndoValue aCurrent, WsfPProxyValue aDesired, WsfPProxyValue aReturnValue, WsfPParseRuleTrace *aTrace, int aFlags=0)
Definition WsfPProxySatisfy.hpp:141
bool NeedToComplete() const
Definition WsfPProxySatisfy.hpp:175
bool IsTargetComplete() const
Definition WsfPProxySatisfy.hpp:154
Flags
Definition WsfPProxySatisfy.hpp:116
@ cTARGET_COMPLETE
Definition WsfPProxySatisfy.hpp:117
void SetTargetComplete(bool aIsComplete)
Definition WsfPProxySatisfy.hpp:156
SatPoint(const SatPoint &aSrc)
Definition WsfPProxySatisfy.hpp:125
WsfPProxyValue desired
Definition WsfPProxySatisfy.hpp:178
int flags
Definition WsfPProxySatisfy.hpp:182
WsfPParseRuleTrace * trace
Definition WsfPProxySatisfy.hpp:181
Definition WsfPProxySatisfy.hpp:198
bool TargetComplete() const
Definition WsfPProxySatisfy.hpp:212
bool Success() const
Definition WsfPProxySatisfy.hpp:210
SatisfyResult & operator+=(const SatisfyResult &aRhs)
Definition WsfPProxySatisfy.hpp:214
SatisfyResult(SatisfyResultEnum aResult)
Definition WsfPProxySatisfy.hpp:199
SatisfyResult()
Definition WsfPProxySatisfy.hpp:203
unsigned int mResult
Definition WsfPProxySatisfy.hpp:219
Disposition
Definition WsfPProxySatisfy.hpp:360
@ cCONTINUE
Definition WsfPProxySatisfy.hpp:361
@ cSTOP
Definition WsfPProxySatisfy.hpp:362
SolveResult()
Definition WsfPProxySatisfy.hpp:364
Disposition mDisposition
Definition WsfPProxySatisfy.hpp:368