1 /* see copyright notice in squirrel.h */
\r
2 #ifndef _SQFUNCSTATE_H_
\r
3 #define _SQFUNCSTATE_H_
\r
4 ///////////////////////////////////
\r
11 SQFuncState(SQSharedState *ss,SQFunctionProto *func,SQFuncState *parent);
\r
15 void AddInstruction(SQOpcode _op,int arg0=0,int arg1=0,int arg2=0,int arg3=0){SQInstruction i(_op,arg0,arg1,arg2,arg3);AddInstruction(i);}
\r
16 void AddInstruction(SQInstruction &i);
\r
17 void SetIntructionParams(int pos,int arg0,int arg1,int arg2=0,int arg3=0);
\r
18 void SetIntructionParam(int pos,int arg,int val);
\r
19 SQInstruction &GetInstruction(int pos){return _instructions[pos];}
\r
20 void PopInstructions(int size){for(int i=0;i<size;i++)_instructions.pop_back();}
\r
21 void SetStackSize(int n);
\r
22 void SnoozeOpt(){_optimization=false;}
\r
23 int GetCurrentPos(){return _instructions.size()-1;}
\r
24 int GetStringConstant(const SQChar *cons);
\r
25 int GetNumericConstant(const SQInteger cons);
\r
26 int GetNumericConstant(const SQFloat cons);
\r
27 int PushLocalVariable(const SQObjectPtr &name);
\r
28 void AddParameter(const SQObjectPtr &name);
\r
29 void AddOuterValue(const SQObjectPtr &name);
\r
30 int GetLocalVariable(const SQObjectPtr &name);
\r
31 int GetOuterVariable(const SQObjectPtr &name);
\r
34 int CalcStackFrameSize();
\r
35 void AddLineInfos(int line,bool lineop,bool force=false);
\r
37 int AllocStackPos();
\r
38 int PushTarget(int n=-1);
\r
41 int GetUpTarget(int n);
\r
42 bool IsLocal(unsigned int stkpos);
\r
43 SQObject CreateString(const SQChar *s);
\r
45 SQLocalVarInfoVec _vlocals;
\r
46 SQIntVec _targetstack;
\r
49 SQIntVec _unresolvedbreaks;
\r
50 SQIntVec _unresolvedcontinues;
\r
51 SQObjectPtrVec _functions;
\r
52 SQObjectPtrVec _parameters;
\r
53 SQObjectPtrVec _stringrefs;
\r
54 SQOuterVarVec _outervalues;
\r
55 SQInstructionVec _instructions;
\r
56 SQLocalVarInfoVec _localvarinfos;
\r
57 SQObjectPtr _literals;
\r
58 SQInteger _nliterals;
\r
59 SQLineInfoVec _lineinfos;
\r
61 SQFuncState *_parent;
\r
62 SQIntVec _breaktargets; //contains number of nested exception traps
\r
63 SQIntVec _continuetargets;
\r
67 SQSharedState *_sharedstate;
\r
69 int GetConstant(SQObjectPtr cons);
\r
73 #endif //_SQFUNCSTATE_H_
\r