fix cr/lfs and remove trailing whitespaces...
[supertux.git] / src / squirrel / squirrel / sqclosure.h
index 7a5df1b..d8dc90a 100644 (file)
-/*     see copyright notice in squirrel.h */\r
-#ifndef _SQCLOSURE_H_\r
-#define _SQCLOSURE_H_\r
-\r
-struct SQFunctionProto;\r
-\r
-struct SQClosure : public CHAINABLE_OBJ\r
-{\r
-private:\r
-       SQClosure(SQSharedState *ss,SQFunctionProto *func){_function=func; INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);}\r
-public:\r
-       static SQClosure *Create(SQSharedState *ss,SQFunctionProto *func){\r
-               SQClosure *nc=(SQClosure*)SQ_MALLOC(sizeof(SQClosure));\r
-               new (nc) SQClosure(ss,func);\r
-               return nc;\r
-       }\r
-       void Release(){\r
-               sq_delete(this,SQClosure);\r
-       }\r
-       SQClosure *Clone()\r
-       {\r
-               SQClosure * ret = SQClosure::Create(_opt_ss(this),_funcproto(_function));\r
-               ret->_env = _env;\r
-               ret->_outervalues.copy(_outervalues);\r
-               return ret;\r
-       }\r
-       ~SQClosure()\r
-       {\r
-               REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);\r
-       }\r
-       bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);\r
-       bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read);\r
-#ifndef NO_GARBAGE_COLLECTOR\r
-       void Mark(SQCollectable **chain);\r
-       void Finalize(){_outervalues.resize(0); }\r
-#endif\r
-       SQObjectPtr _env;\r
-       SQObjectPtr _function;\r
-       SQObjectPtrVec _outervalues;\r
-};\r
-//////////////////////////////////////////////\r
-struct SQGenerator : public CHAINABLE_OBJ \r
-{\r
-       enum SQGeneratorState{eRunning,eSuspended,eDead};\r
-private:\r
-       SQGenerator(SQSharedState *ss,SQClosure *closure){_closure=closure;_state=eRunning;_ci._generator=_null_;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);}\r
-public:\r
-       static SQGenerator *Create(SQSharedState *ss,SQClosure *closure){\r
-               SQGenerator *nc=(SQGenerator*)SQ_MALLOC(sizeof(SQGenerator));\r
-               new (nc) SQGenerator(ss,closure);\r
-               return nc;\r
-       }\r
-       ~SQGenerator()\r
-       {\r
-               REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);\r
-       }\r
-    void Kill(){\r
-               _state=eDead;\r
-               _stack.resize(0);\r
-               _closure=_null_;}\r
-       void Release(){\r
-               sq_delete(this,SQGenerator);\r
-       }\r
-       bool Yield(SQVM *v);\r
-       bool Resume(SQVM *v,SQInteger target);\r
-#ifndef NO_GARBAGE_COLLECTOR\r
-       void Mark(SQCollectable **chain);\r
-       void Finalize(){_stack.resize(0);_closure=_null_;}\r
-#endif\r
-       SQObjectPtr _closure;\r
-       SQObjectPtrVec _stack;\r
-       SQObjectPtrVec _vargsstack;\r
-       SQVM::CallInfo _ci;\r
-       ExceptionsTraps _etraps;\r
-       SQGeneratorState _state;\r
-};\r
-\r
-struct SQNativeClosure : public CHAINABLE_OBJ\r
-{\r
-private:\r
-       SQNativeClosure(SQSharedState *ss,SQFUNCTION func){_function=func;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);        }\r
-public:\r
-       static SQNativeClosure *Create(SQSharedState *ss,SQFUNCTION func)\r
-       {\r
-               SQNativeClosure *nc=(SQNativeClosure*)SQ_MALLOC(sizeof(SQNativeClosure));\r
-               new (nc) SQNativeClosure(ss,func);\r
-               return nc;\r
-       }\r
-       SQNativeClosure *Clone()\r
-       {\r
-               SQNativeClosure * ret = SQNativeClosure::Create(_opt_ss(this),_function);\r
-               ret->_env = _env;\r
-               ret->_name = _name;\r
-               ret->_outervalues.copy(_outervalues);\r
-               ret->_typecheck = _typecheck;\r
-               ret->_nparamscheck = _nparamscheck;\r
-               return ret;\r
-       }\r
-       ~SQNativeClosure()\r
-       {\r
-               REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);\r
-       }\r
-       void Release(){\r
-               sq_delete(this,SQNativeClosure);\r
-       }\r
-#ifndef NO_GARBAGE_COLLECTOR\r
-       void Mark(SQCollectable **chain);\r
-       void Finalize(){_outervalues.resize(0);}\r
-#endif\r
-       SQObjectPtr _env;\r
-       SQFUNCTION _function;\r
-       SQObjectPtr _name;\r
-       SQObjectPtrVec _outervalues;\r
-       SQIntVec _typecheck;\r
-       SQInteger _nparamscheck;\r
-};\r
-\r
-\r
-\r
-#endif //_SQCLOSURE_H_\r
+/*     see copyright notice in squirrel.h */
+#ifndef _SQCLOSURE_H_
+#define _SQCLOSURE_H_
+
+struct SQFunctionProto;
+
+struct SQClosure : public CHAINABLE_OBJ
+{
+private:
+       SQClosure(SQSharedState *ss,SQFunctionProto *func){_function=func; INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);}
+public:
+       static SQClosure *Create(SQSharedState *ss,SQFunctionProto *func){
+               SQClosure *nc=(SQClosure*)SQ_MALLOC(sizeof(SQClosure));
+               new (nc) SQClosure(ss,func);
+               return nc;
+       }
+       void Release(){
+               sq_delete(this,SQClosure);
+       }
+       SQClosure *Clone()
+       {
+               SQClosure * ret = SQClosure::Create(_opt_ss(this),_funcproto(_function));
+               ret->_env = _env;
+               ret->_outervalues.copy(_outervalues);
+               return ret;
+       }
+       ~SQClosure()
+       {
+               REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);
+       }
+       bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);
+       bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read);
+#ifndef NO_GARBAGE_COLLECTOR
+       void Mark(SQCollectable **chain);
+       void Finalize(){_outervalues.resize(0); }
+#endif
+       SQObjectPtr _env;
+       SQObjectPtr _function;
+       SQObjectPtrVec _outervalues;
+};
+//////////////////////////////////////////////
+struct SQGenerator : public CHAINABLE_OBJ
+{
+       enum SQGeneratorState{eRunning,eSuspended,eDead};
+private:
+       SQGenerator(SQSharedState *ss,SQClosure *closure){_closure=closure;_state=eRunning;_ci._generator=_null_;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);}
+public:
+       static SQGenerator *Create(SQSharedState *ss,SQClosure *closure){
+               SQGenerator *nc=(SQGenerator*)SQ_MALLOC(sizeof(SQGenerator));
+               new (nc) SQGenerator(ss,closure);
+               return nc;
+       }
+       ~SQGenerator()
+       {
+               REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);
+       }
+    void Kill(){
+               _state=eDead;
+               _stack.resize(0);
+               _closure=_null_;}
+       void Release(){
+               sq_delete(this,SQGenerator);
+       }
+       bool Yield(SQVM *v);
+       bool Resume(SQVM *v,SQInteger target);
+#ifndef NO_GARBAGE_COLLECTOR
+       void Mark(SQCollectable **chain);
+       void Finalize(){_stack.resize(0);_closure=_null_;}
+#endif
+       SQObjectPtr _closure;
+       SQObjectPtrVec _stack;
+       SQObjectPtrVec _vargsstack;
+       SQVM::CallInfo _ci;
+       ExceptionsTraps _etraps;
+       SQGeneratorState _state;
+};
+
+struct SQNativeClosure : public CHAINABLE_OBJ
+{
+private:
+       SQNativeClosure(SQSharedState *ss,SQFUNCTION func){_function=func;INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);        }
+public:
+       static SQNativeClosure *Create(SQSharedState *ss,SQFUNCTION func)
+       {
+               SQNativeClosure *nc=(SQNativeClosure*)SQ_MALLOC(sizeof(SQNativeClosure));
+               new (nc) SQNativeClosure(ss,func);
+               return nc;
+       }
+       SQNativeClosure *Clone()
+       {
+               SQNativeClosure * ret = SQNativeClosure::Create(_opt_ss(this),_function);
+               ret->_env = _env;
+               ret->_name = _name;
+               ret->_outervalues.copy(_outervalues);
+               ret->_typecheck = _typecheck;
+               ret->_nparamscheck = _nparamscheck;
+               return ret;
+       }
+       ~SQNativeClosure()
+       {
+               REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);
+       }
+       void Release(){
+               sq_delete(this,SQNativeClosure);
+       }
+#ifndef NO_GARBAGE_COLLECTOR
+       void Mark(SQCollectable **chain);
+       void Finalize(){_outervalues.resize(0);}
+#endif
+       SQObjectPtr _env;
+       SQFUNCTION _function;
+       SQObjectPtr _name;
+       SQObjectPtrVec _outervalues;
+       SQIntVec _typecheck;
+       SQInteger _nparamscheck;
+};
+
+
+
+#endif //_SQCLOSURE_H_