14#include <UtReferenceCount.hpp>
18#include "UtMemory.hpp"
58 void AddRef() { mRefCount->AddStrongRef(); }
61 if (mRefCount->RemoveStrongRef())
68 UtReferenceCount* mRefCount;
240 auto ctx = ut::make_unique<UsCtx>(c);
241 ctx->mSequenceNumberLimit = aSequenceNumberLimit;
253 Ty*
qType(
Ty* aTypePtr, std::pair<Ty*, Ty*> aArgs);
347 int IfTrueEnd(
int falseTarget,
bool aHasElse);
365 void SemErr(
const char* aMsg);
379 mConst->mObserverPtr->AtDot(aTypePtr,
pos);
UtVec3d pos
Definition WsfScriptTrackClass.cpp:1881
Definition UsSymbolTable.hpp:115
Definition UsSymbolTable.hpp:326
Definition UsSymbolTable.hpp:339
TableLinkage
Definition UsSymbolTable.hpp:347
@ cNEW_SCOPE
Definition UsSymbolTable.hpp:356
@ cLOCAL_SCOPE
Definition UsSymbolTable.hpp:354
Definition UsSymbolTable.hpp:281
Definition UsSymbolTable.hpp:139
Definition UsSymbolTable.hpp:202
Definition wizard/lib/source/Us/Parser.h:44
Definition wizard/lib/source/Us/Scanner.h:114
Ty * tyInt
Definition UsCtx.hpp:190
Ty * tyBool
Definition UsCtx.hpp:189
int mNextSequenceNumber
Definition UsCtx.hpp:174
Ty * tyString
Definition UsCtx.hpp:192
Ty * tyChar
Definition UsCtx.hpp:193
Ty * tyDouble
Definition UsCtx.hpp:191
UsTypeList * mTypes
Definition UsCtx.hpp:173
Ty * tyNull
Definition UsCtx.hpp:186
int NextSequenceNumber()
Definition UsCtx.hpp:176
Ty * tyObject
Definition UsCtx.hpp:194
~UsConstCtx()
Definition UsCtx.cpp:41
UsVal ValFromType(Ty *aType)
Definition UsCtx.hpp:180
Ty * tyVoid
Definition UsCtx.hpp:187
Ty * tyBuiltin
Definition UsCtx.hpp:195
UsConstCtx()
Definition UsCtx.cpp:22
Us::Parser * mParser
Definition UsCtx.hpp:172
Ty * tyVar
Definition UsCtx.hpp:188
UsSymbolTablePool * mSymbolTablePoolPtr
Definition UsCtx.hpp:199
UsObserver * mObserverPtr
Definition UsCtx.hpp:197
BlockType mBlockType
Definition UsCtx.hpp:232
int mSequenceNumberLimit
Definition UsCtx.hpp:230
int BeginStat()
Definition UsCtx.cpp:994
UsConstCtx * mConst
Definition UsCtx.hpp:223
void DoWhileStart()
Definition UsCtx.hpp:431
UsVal OrComplete(UsVal &orResult, UsVal &rhs, int aJumpOffset)
Definition UsCtx.hpp:410
UsVal VarDecl(Ty *ty, Token *t, int flags=0)
Definition UsCtx.cpp:465
void ExpectedType(UsVal &v, Ty *t)
Definition UsCtx.cpp:51
UsVal AndComplete(UsVal &orResult, UsVal &rhs, int aJumpOffset)
Definition UsCtx.hpp:400
int CodeOffset()
Definition UsCtx.hpp:439
UsVal GetClassVariable(UsVal &v, Token *t)
Definition UsCtx.cpp:219
UsVal ImplicitCast(UsVal v, Ty *ty)
Definition UsCtx.cpp:61
UsVal RealizeContainer(UsInitializerList &aInitializer, Ty *aLhsType)
Definition UsCtx.cpp:372
void AddToInitializerList(UsVal &initList, UsVal &p1, UsVal *p2)
Definition UsCtx.cpp:498
Ty * GetContainerValue(Ty *aType)
Definition UsCtx.cpp:529
void WhileCond(UsVal &v)
Definition UsCtx.hpp:404
UsSymbol * AddAppVariable(Ty *type, const std::string &aName)
Definition UsCtx.cpp:844
UsVal GetDynAttribute(UsVal &v, Token *t)
Definition UsCtx.cpp:170
UsCtx * mParentCtx
Definition UsCtx.hpp:221
bool mAllowGlobals
Definition UsCtx.hpp:228
UsVal NullLiteral(Token *t)
Definition UsCtx.cpp:662
UsVal ThisValue()
Definition UsCtx.cpp:868
void SetBlockType(BlockType aBlockType)
Definition UsCtx.hpp:428
UsVal IntLiteral(Token *t)
Definition UsCtx.cpp:652
void CallArgNext(int aPos)
Definition UsCtx.cpp:987
bool mGlobalVarMode
Definition UsCtx.hpp:227
void WhileEnd(int aEnd)
Definition UsCtx.hpp:405
UsVal GetClassMethod(UsVal &v, Token *t)
Definition UsCtx.cpp:181
UsVal Ctor(Ty *aType, const UsValList &aArgs)
Definition UsCtx.cpp:621
Ty * IntTy()
Definition UsCtx.hpp:335
static std::unique_ptr< UsCtx > NewMirror(UsConstCtx *c, UsSymbolTable *aParentSymbolTable, int aSequenceNumberLimit)
Definition UsCtx.hpp:238
void BeginCall(UsVal &fn, int aPos)
Definition UsCtx.cpp:975
Ty * FuncRType()
Definition UsCtx.cpp:681
UsVal Call(UsVal &fn, UsValList &args, UsVal *aReturnVal=nullptr)
Definition UsCtx.cpp:250
void DoCond(UsVal &v)
Definition UsCtx.hpp:432
UsVal GetAttribute(UsVal &v, Token *t)
Definition UsCtx.cpp:133
Ty * VoidTy()
Definition UsCtx.hpp:334
static const int cLARGE_INT
Definition UsCtx.hpp:231
UsVal Cast(UsVal &v, Ty *ty)
Definition UsCtx.cpp:637
int mContextFlags
Definition UsCtx.hpp:229
UsVal BoolLiteral(Token *t)
Definition UsCtx.cpp:657
UsVal SymVal(UsSymbol *aSym)
Definition UsCtx.cpp:744
void Break()
Definition UsCtx.hpp:429
void IfElseEnd(int aElseEnd)
Definition UsCtx.hpp:427
UsSymbolTable * mSym
Definition UsCtx.hpp:224
UsCtx * ScriptContext()
Definition UsCtx.cpp:915
void Continue()
Definition UsCtx.hpp:430
Ty * GetContainerKey(Ty *aType)
Definition UsCtx.cpp:534
OperationId
Definition UsCtx.hpp:279
@ cDIVIDE
Definition UsCtx.hpp:289
@ cINDEX
Definition UsCtx.hpp:300
@ cASSIGN_TIMES
Definition UsCtx.hpp:284
@ cADD
Definition UsCtx.hpp:286
@ cEQ
Definition UsCtx.hpp:292
@ cUNARY_MINUS
Definition UsCtx.hpp:298
@ cLE
Definition UsCtx.hpp:296
@ cLT
Definition UsCtx.hpp:294
@ cASSIGN_PLUS
Definition UsCtx.hpp:282
@ cASSIGN_INITIAL
Definition UsCtx.hpp:281
@ cNE
Definition UsCtx.hpp:293
@ cGT
Definition UsCtx.hpp:295
@ cASSIGN
Definition UsCtx.hpp:280
@ cUNARY_PLUS
Definition UsCtx.hpp:299
@ cASSIGN_DIV
Definition UsCtx.hpp:285
@ cOR
Definition UsCtx.hpp:290
@ cAND
Definition UsCtx.hpp:291
@ cASSIGN_MINUS
Definition UsCtx.hpp:283
@ cNOT
Definition UsCtx.hpp:301
@ cMULTIPLY
Definition UsCtx.hpp:288
@ cGE
Definition UsCtx.hpp:297
@ cSUBTRACT
Definition UsCtx.hpp:287
ContextFlags
Definition UsCtx.hpp:207
@ cTEMPORARY_SYMBOL_TABLE
Definition UsCtx.hpp:208
UsVal Identifier(Token *aIdent)
Definition UsCtx.cpp:967
BlockType
Definition UsCtx.hpp:212
@ cFOREACH_BLOCK
Definition UsCtx.hpp:218
@ cSCRIPT_BLOCK
Definition UsCtx.hpp:213
@ cDO_BLOCK
Definition UsCtx.hpp:216
@ cNORMAL_BLOCK
Definition UsCtx.hpp:214
@ cFOR_BLOCK
Definition UsCtx.hpp:217
@ cWHILE_BLOCK
Definition UsCtx.hpp:215
void VarDeclInit(UsVal &v)
Definition UsCtx.hpp:398
void AtDot(Ty *aTypePtr, int pos)
Definition UsCtx.hpp:375
Ty * BoolTy()
Definition UsCtx.hpp:333
UsVal DoubleLiteral(Token *t)
Definition UsCtx.cpp:647
void EndStat(int aStatNum)
Definition UsCtx.hpp:443
void SetRType(Fn &fn, Ty *type)
Definition UsCtx.cpp:895
std::string Text(Token *t)
Definition UsCtx.cpp:674
UsVal Op(UsVal &lhs, int op)
Definition UsCtx.cpp:608
void FuncDefStart(UsVal &aScriptVal)
Definition UsCtx.cpp:890
void FuncComplete(UsVal &aFnVal, UsCtx &aFnCtx)
Definition UsCtx.hpp:438
void ForInc()
Definition UsCtx.hpp:434
UsCtx(UsConstCtx *c)
Definition UsCtx.cpp:952
Ty * RType(UsSymbol *s)
Definition UsCtx.cpp:694
int IfTrueEnd(int falseTarget, bool aHasElse)
Definition UsCtx.hpp:423
Ty * qType(Token *t)
Definition UsCtx.cpp:323
void ForEnd()
Definition UsCtx.hpp:435
void HitEOF()
Definition UsCtx.hpp:389
int OrCheck(UsVal &aLhs, UsVal &aOrResult)
Definition UsCtx.hpp:406
UsSymbol * Search(const std::string &aName, int aDepth=100)
Definition UsCtx.hpp:260
UsVal ExplicitCast(UsVal &v, Ty *ty)
Definition UsCtx.cpp:89
UsSymbol * mFuncDefSym
Definition UsCtx.hpp:226
UsVal NewInitializerList()
Definition UsCtx.cpp:458
Ty * Type(Token *t)
Definition UsCtx.cpp:342
UsVal StringLiteral(Token *t)
Definition UsCtx.cpp:642
~UsCtx()
Definition UsCtx.cpp:927
void VarDeclPreAssign(UsVal &v)
Definition UsCtx.hpp:399
UsObserver * GetObserver() const
Definition UsCtx.hpp:250
void ForEachBegin(UsVal &key, UsVal &val, UsVal &container)
Definition UsCtx.hpp:436
void ForCond(UsVal &v)
Definition UsCtx.hpp:433
UsVal NewVal(Ty *ty)
Definition UsCtx.cpp:667
int IfCond(UsVal &v)
Definition UsCtx.hpp:419
void AddParam(Fn &fn, Ty *type, Token *aIdent, bool aIsFormalParam=false)
Definition UsCtx.cpp:903
void SemErr(const char *aMsg)
Definition UsCtx.cpp:46
void EndCall(UsVal &fn, int aPos)
Definition UsCtx.cpp:981
void EndContext()
Definition UsCtx.hpp:397
int AndCheck(UsVal &aLhs, UsVal &aOrResult)
Definition UsCtx.hpp:415
void Return(UsVal &v)
Definition UsCtx.hpp:437
UsVal AddEntry(Token *aIdent, Fn &aFunc, bool aExtern, UsCtx *aFnCtx=nullptr)
Definition UsCtx.cpp:811
bool IsThisMethod(Token *t)
Definition UsCtx.cpp:877
UsInitializerListData * mDataPtr
Definition UsCtx.hpp:65
void RemoveRef()
Definition UsCtx.hpp:59
~UsInitializerList()
Definition UsCtx.cpp:1017
void AddRef()
Definition UsCtx.hpp:58
UtReferenceCount * GetReferenceCount() const
Definition UsCtx.hpp:56
UsInitializerList()
Definition UsCtx.cpp:1011
virtual void PopScope(UsSymbolTable *aSymTablePtr)=0
virtual ~UsObserver()
Definition UsCtx.hpp:153
SpecialTokenType
Definition UsCtx.hpp:147
@ cSTATIC_METHOD
Definition UsCtx.hpp:148
@ cLOCAL_VARIABLE
Definition UsCtx.hpp:150
@ cMETHOD
Definition UsCtx.hpp:149
@ cPARAMETER
Definition UsCtx.hpp:151
virtual void AtDot(Ty *aTypePtr, int aPos)
Definition UsCtx.hpp:159
virtual void CallArgNext(int aPos)
Definition UsCtx.hpp:165
virtual void SpecialToken(SpecialTokenType aType, Token *tok)
Definition UsCtx.hpp:162
virtual void EndCall(const UsVal &, int aPos)
Definition UsCtx.hpp:164
virtual void BeginCall(const UsVal &, int aPos)
Definition UsCtx.hpp:163
virtual void AtDot(UsVal aVal, int aPos)
Definition UsCtx.hpp:160
virtual void VarDecl(UsSymbol *aSymbolPtr, Token *ident)=0
virtual void PushScope(UsSymbolTable *aSymTablePtr)=0
virtual void AtStat()
Definition UsCtx.hpp:158
virtual void ScriptDefinition(UsSymbolTable *aFuncSymTable, UsSymbol *aSymbolPtr)=0
bool IsAppMethod() const
Definition UsCtx.hpp:105
UsVal()
Definition UsCtx.hpp:87
bool IsEmpty() const
Definition UsCtx.hpp:101
Ty * mType
Definition UsCtx.hpp:121
UsSymbol * mSym
Definition UsCtx.hpp:118
UsVal(const UsVal &aRhs)
Definition UsCtx.hpp:93
const char * mMethodNamePtr
Definition UsCtx.hpp:126
Flags
Definition UsCtx.hpp:76
@ cLOCAL_VARIABLE
Definition UsCtx.hpp:77
@ cPARAMETER_VARIABLE
Definition UsCtx.hpp:84
@ cEXTERN_VARIABLE
Definition UsCtx.hpp:80
@ cTEMPORARY_VARIABLE
Definition UsCtx.hpp:81
@ cGLOBAL_VARIABLE
Definition UsCtx.hpp:79
@ cSTATIC_VARIABLE
Definition UsCtx.hpp:78
UsVal & operator=(const UsVal &)=default
bool IsScript() const
Definition UsCtx.hpp:111
UtReferencePtr< UsInitializerList > mInitList
Definition UsCtx.hpp:123
Ty * Type()
Definition UsCtx.hpp:102
std::string TypeName()
Definition UsCtx.cpp:1002
Definition wizard/lib/source/Us/Parser.cpp:18
std::vector< UsVal > UsValList
Definition UsCtx.hpp:140
UsType Ty
Definition UsCtx.hpp:43
UsFunction Fn
Definition UsCtx.hpp:44
UsCtx Cx
Definition UsCtx.hpp:42
UsVal Val
Definition UsCtx.hpp:45
UsVal val
Definition UsCtx.hpp:135
UsVal key
Definition UsCtx.hpp:134
std::vector< Entry > mEntries
Definition UsCtx.hpp:137