-/* see copyright notice in squirrel.h */\r
-#ifndef _SQFUNCSTATE_H_\r
-#define _SQFUNCSTATE_H_\r
-///////////////////////////////////\r
-#include "squtils.h"\r
-\r
-\r
-\r
-struct SQFuncState\r
-{\r
- SQFuncState(SQSharedState *ss,SQFunctionProto *func,SQFuncState *parent);\r
-#ifdef _DEBUG_DUMP\r
- void Dump();\r
-#endif\r
- 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
- void AddInstruction(SQInstruction &i);\r
- void SetIntructionParams(int pos,int arg0,int arg1,int arg2=0,int arg3=0);\r
- void SetIntructionParam(int pos,int arg,int val);\r
- SQInstruction &GetInstruction(int pos){return _instructions[pos];}\r
- void PopInstructions(int size){for(int i=0;i<size;i++)_instructions.pop_back();}\r
- void SetStackSize(int n);\r
- void SnoozeOpt(){_optimization=false;}\r
- int GetCurrentPos(){return _instructions.size()-1;}\r
- int GetStringConstant(const SQChar *cons);\r
- int GetNumericConstant(const SQInteger cons);\r
- int GetNumericConstant(const SQFloat cons);\r
- int PushLocalVariable(const SQObjectPtr &name);\r
- void AddParameter(const SQObjectPtr &name);\r
- void AddOuterValue(const SQObjectPtr &name);\r
- int GetLocalVariable(const SQObjectPtr &name);\r
- int GetOuterVariable(const SQObjectPtr &name);\r
- int GenerateCode();\r
- int GetStackSize();\r
- int CalcStackFrameSize();\r
- void AddLineInfos(int line,bool lineop,bool force=false);\r
- void Finalize();\r
- int AllocStackPos();\r
- int PushTarget(int n=-1);\r
- int PopTarget();\r
- int TopTarget();\r
- int GetUpTarget(int n);\r
- bool IsLocal(unsigned int stkpos);\r
- SQObject CreateString(const SQChar *s);\r
- int _returnexp;\r
- SQLocalVarInfoVec _vlocals;\r
- SQIntVec _targetstack;\r
- int _stacksize;\r
- bool _varparams;\r
- SQIntVec _unresolvedbreaks;\r
- SQIntVec _unresolvedcontinues;\r
- SQObjectPtrVec _functions;\r
- SQObjectPtrVec _parameters;\r
- SQObjectPtrVec _stringrefs;\r
- SQOuterVarVec _outervalues;\r
- SQInstructionVec _instructions;\r
- SQLocalVarInfoVec _localvarinfos;\r
- SQObjectPtr _literals;\r
- SQInteger _nliterals;\r
- SQLineInfoVec _lineinfos;\r
- SQObjectPtr _func;\r
- SQFuncState *_parent;\r
- SQIntVec _breaktargets; //contains number of nested exception traps\r
- SQIntVec _continuetargets;\r
- int _lastline;\r
- int _traps;\r
- bool _optimization;\r
- SQSharedState *_sharedstate;\r
-private:\r
- int GetConstant(SQObjectPtr cons);\r
-};\r
-\r
-\r
-#endif //_SQFUNCSTATE_H_\r
-\r
+/* see copyright notice in squirrel.h */
+#ifndef _SQFUNCSTATE_H_
+#define _SQFUNCSTATE_H_
+///////////////////////////////////
+#include "squtils.h"
+
+
+
+struct SQFuncState
+{
+ SQFuncState(SQSharedState *ss,SQFunctionProto *func,SQFuncState *parent);
+#ifdef _DEBUG_DUMP
+ void Dump();
+#endif
+ 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);}
+ void AddInstruction(SQInstruction &i);
+ void SetIntructionParams(int pos,int arg0,int arg1,int arg2=0,int arg3=0);
+ void SetIntructionParam(int pos,int arg,int val);
+ SQInstruction &GetInstruction(int pos){return _instructions[pos];}
+ void PopInstructions(int size){for(int i=0;i<size;i++)_instructions.pop_back();}
+ void SetStackSize(int n);
+ void SnoozeOpt(){_optimization=false;}
+ int GetCurrentPos(){return _instructions.size()-1;}
+ int GetStringConstant(const SQChar *cons);
+ int GetNumericConstant(const SQInteger cons);
+ int GetNumericConstant(const SQFloat cons);
+ int PushLocalVariable(const SQObjectPtr &name);
+ void AddParameter(const SQObjectPtr &name);
+ void AddOuterValue(const SQObjectPtr &name);
+ int GetLocalVariable(const SQObjectPtr &name);
+ int GetOuterVariable(const SQObjectPtr &name);
+ int GenerateCode();
+ int GetStackSize();
+ int CalcStackFrameSize();
+ void AddLineInfos(int line,bool lineop,bool force=false);
+ void Finalize();
+ int AllocStackPos();
+ int PushTarget(int n=-1);
+ int PopTarget();
+ int TopTarget();
+ int GetUpTarget(int n);
+ bool IsLocal(unsigned int stkpos);
+ SQObject CreateString(const SQChar *s);
+ int _returnexp;
+ SQLocalVarInfoVec _vlocals;
+ SQIntVec _targetstack;
+ int _stacksize;
+ bool _varparams;
+ SQIntVec _unresolvedbreaks;
+ SQIntVec _unresolvedcontinues;
+ SQObjectPtrVec _functions;
+ SQObjectPtrVec _parameters;
+ SQObjectPtrVec _stringrefs;
+ SQOuterVarVec _outervalues;
+ SQInstructionVec _instructions;
+ SQLocalVarInfoVec _localvarinfos;
+ SQObjectPtr _literals;
+ SQInteger _nliterals;
+ SQLineInfoVec _lineinfos;
+ SQObjectPtr _func;
+ SQFuncState *_parent;
+ SQIntVec _breaktargets; //contains number of nested exception traps
+ SQIntVec _continuetargets;
+ int _lastline;
+ int _traps;
+ bool _optimization;
+ SQSharedState *_sharedstate;
+private:
+ int GetConstant(SQObjectPtr cons);
+};
+
+
+#endif //_SQFUNCSTATE_H_
+