1 /* see copyright notice in squirrel.h */
\r
2 #ifndef _SQFUNCTION_H_
\r
3 #define _SQFUNCTION_H_
\r
5 #include "sqopcodes.h"
\r
17 SQOuterVar(const SQObjectPtr &name,const SQObjectPtr &src,SQOuterType t)
\r
23 SQOuterVar(const SQOuterVar &ov)
\r
34 struct SQLocalVarInfo
\r
36 SQLocalVarInfo():_start_op(0),_end_op(0){}
\r
37 SQLocalVarInfo(const SQLocalVarInfo &lvi)
\r
40 _start_op=lvi._start_op;
\r
41 _end_op=lvi._end_op;
\r
45 SQUnsignedInteger _start_op;
\r
46 SQUnsignedInteger _end_op;
\r
47 SQUnsignedInteger _pos;
\r
50 struct SQLineInfo { SQInteger _line;SQInteger _op; };
\r
52 typedef sqvector<SQOuterVar> SQOuterVarVec;
\r
53 typedef sqvector<SQLocalVarInfo> SQLocalVarInfoVec;
\r
54 typedef sqvector<SQLineInfo> SQLineInfoVec;
\r
56 struct SQFunctionProto : public SQRefCounted
\r
63 static SQFunctionProto *Create()
\r
66 sq_new(f,SQFunctionProto);
\r
69 void Release(){ sq_delete(this,SQFunctionProto);}
\r
70 const SQChar* GetLocal(SQVM *v,SQUnsignedInteger stackbase,SQUnsignedInteger nseq,SQUnsignedInteger nop);
\r
71 SQInteger GetLine(SQInstruction *curr);
\r
72 bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);
\r
73 bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read);
\r
74 SQObjectPtrVec _literals;
\r
75 SQObjectPtrVec _functions;
\r
76 SQObjectPtrVec _parameters;
\r
77 SQOuterVarVec _outervalues;
\r
78 SQInstructionVec _instructions;
\r
79 SQObjectPtr _sourcename;
\r
81 SQLocalVarInfoVec _localvarinfos;
\r
82 SQLineInfoVec _lineinfos;
\r
83 SQInteger _stacksize;
\r
88 #endif //_SQFUNCTION_H_
\r