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 unsigned int _start_op;
\r
46 unsigned int _end_op;
\r
50 struct SQLineInfo { int _line;int _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
64 static SQFunctionProto *Create()
\r
67 sq_new(f,SQFunctionProto);
\r
70 void Release(){ sq_delete(this,SQFunctionProto);}
\r
71 const SQChar* GetLocal(SQVM *v,unsigned int stackbase,unsigned int nseq,unsigned int nop);
\r
72 int GetLine(SQInstruction *curr);
\r
73 bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);
\r
74 bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read);
\r
75 SQObjectPtrVec _literals;
\r
76 SQObjectPtrVec _functions;
\r
77 SQObjectPtrVec _parameters;
\r
78 SQOuterVarVec _outervalues;
\r
79 SQInstructionVec _instructions;
\r
80 SQObjectPtr _sourcename;
\r
82 SQLocalVarInfoVec _localvarinfos;
\r
83 SQLineInfoVec _lineinfos;
\r
89 #endif //_SQFUNCTION_H_
\r