-/* see copyright notice in squirrel.h */\r
-#ifndef _SQFUNCTION_H_\r
-#define _SQFUNCTION_H_\r
-\r
-#include "sqopcodes.h"\r
-\r
-enum SQOuterType {\r
- otLOCAL = 0,\r
- otSYMBOL = 1,\r
- otOUTER = 2\r
-};\r
-\r
-struct SQOuterVar\r
-{\r
- \r
- SQOuterVar(){}\r
- SQOuterVar(const SQObjectPtr &name,const SQObjectPtr &src,SQOuterType t)\r
- {\r
- _name = name;\r
- _src=src;\r
- _type=t;\r
- }\r
- SQOuterVar(const SQOuterVar &ov)\r
- {\r
- _type=ov._type;\r
- _src=ov._src;\r
- _name=ov._name;\r
- }\r
- SQOuterType _type;\r
- SQObjectPtr _name;\r
- SQObjectPtr _src;\r
-};\r
-\r
-struct SQLocalVarInfo\r
-{\r
- SQLocalVarInfo():_start_op(0),_end_op(0){}\r
- SQLocalVarInfo(const SQLocalVarInfo &lvi)\r
- {\r
- _name=lvi._name;\r
- _start_op=lvi._start_op;\r
- _end_op=lvi._end_op;\r
- _pos=lvi._pos;\r
- }\r
- SQObjectPtr _name;\r
- SQUnsignedInteger _start_op;\r
- SQUnsignedInteger _end_op;\r
- SQUnsignedInteger _pos;\r
-};\r
-\r
-struct SQLineInfo { SQInteger _line;SQInteger _op; };\r
-\r
-typedef sqvector<SQOuterVar> SQOuterVarVec;\r
-typedef sqvector<SQLocalVarInfo> SQLocalVarInfoVec;\r
-typedef sqvector<SQLineInfo> SQLineInfoVec;\r
-\r
-struct SQFunctionProto : public SQRefCounted\r
-{\r
-private:\r
- SQFunctionProto(){\r
- _stacksize=0;\r
- _bgenerator=false;}\r
-public:\r
- static SQFunctionProto *Create()\r
- {\r
- SQFunctionProto *f;\r
- sq_new(f,SQFunctionProto);\r
- return f;\r
- }\r
- void Release(){ sq_delete(this,SQFunctionProto);}\r
- const SQChar* GetLocal(SQVM *v,SQUnsignedInteger stackbase,SQUnsignedInteger nseq,SQUnsignedInteger nop);\r
- SQInteger GetLine(SQInstruction *curr);\r
- bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);\r
- bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read);\r
- SQObjectPtrVec _literals;\r
- SQObjectPtrVec _functions;\r
- SQObjectPtrVec _parameters;\r
- SQOuterVarVec _outervalues;\r
- SQInstructionVec _instructions;\r
- SQObjectPtr _sourcename;\r
- SQObjectPtr _name;\r
- SQLocalVarInfoVec _localvarinfos;\r
- SQLineInfoVec _lineinfos;\r
- SQInteger _stacksize;\r
- bool _bgenerator;\r
- bool _varparams;\r
-};\r
-\r
-#endif //_SQFUNCTION_H_\r
+/* see copyright notice in squirrel.h */
+#ifndef _SQFUNCTION_H_
+#define _SQFUNCTION_H_
+
+#include "sqopcodes.h"
+
+enum SQOuterType {
+ otLOCAL = 0,
+ otSYMBOL = 1,
+ otOUTER = 2
+};
+
+struct SQOuterVar
+{
+
+ SQOuterVar(){}
+ SQOuterVar(const SQObjectPtr &name,const SQObjectPtr &src,SQOuterType t)
+ {
+ _name = name;
+ _src=src;
+ _type=t;
+ }
+ SQOuterVar(const SQOuterVar &ov)
+ {
+ _type=ov._type;
+ _src=ov._src;
+ _name=ov._name;
+ }
+ SQOuterType _type;
+ SQObjectPtr _name;
+ SQObjectPtr _src;
+};
+
+struct SQLocalVarInfo
+{
+ SQLocalVarInfo():_start_op(0),_end_op(0){}
+ SQLocalVarInfo(const SQLocalVarInfo &lvi)
+ {
+ _name=lvi._name;
+ _start_op=lvi._start_op;
+ _end_op=lvi._end_op;
+ _pos=lvi._pos;
+ }
+ SQObjectPtr _name;
+ SQUnsignedInteger _start_op;
+ SQUnsignedInteger _end_op;
+ SQUnsignedInteger _pos;
+};
+
+struct SQLineInfo { SQInteger _line;SQInteger _op; };
+
+typedef sqvector<SQOuterVar> SQOuterVarVec;
+typedef sqvector<SQLocalVarInfo> SQLocalVarInfoVec;
+typedef sqvector<SQLineInfo> SQLineInfoVec;
+
+struct SQFunctionProto : public SQRefCounted
+{
+private:
+ SQFunctionProto(){
+ _stacksize=0;
+ _bgenerator=false;}
+public:
+ static SQFunctionProto *Create()
+ {
+ SQFunctionProto *f;
+ sq_new(f,SQFunctionProto);
+ return f;
+ }
+ void Release(){ sq_delete(this,SQFunctionProto);}
+ const SQChar* GetLocal(SQVM *v,SQUnsignedInteger stackbase,SQUnsignedInteger nseq,SQUnsignedInteger nop);
+ SQInteger GetLine(SQInstruction *curr);
+ bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);
+ bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read);
+ SQObjectPtrVec _literals;
+ SQObjectPtrVec _functions;
+ SQObjectPtrVec _parameters;
+ SQOuterVarVec _outervalues;
+ SQInstructionVec _instructions;
+ SQObjectPtr _sourcename;
+ SQObjectPtr _name;
+ SQLocalVarInfoVec _localvarinfos;
+ SQLineInfoVec _lineinfos;
+ SQInteger _stacksize;
+ bool _bgenerator;
+ bool _varparams;
+};
+
+#endif //_SQFUNCTION_H_