// // Copyright (C) 2004-2006, Maciej Sobczak // // Permission to copy, use, modify, sell and distribute this software // is granted provided this copyright notice appears in all copies. // This software is provided "as is" without express or implied // warranty, and with no claim as to its suitability for any purpose. // // Note: this file is not supposed to be a stand-alone header template class callback0 : public callback_base { typedef R (*functor_type)(); public: callback0(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int, Tcl_Obj * CONST [], policies const &) { dispatch::do_dispatch(interp, f_); } private: functor_type f_; }; template class callback1 : public callback_base { typedef R (*functor_type)(T1); public: callback1(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 2); dispatch::template do_dispatch(interp, f_, tcl_cast::from(interp, objv[1])); } private: functor_type f_; }; template class callback2 : public callback_base { typedef R (*functor_type)(T1, T2); public: callback2(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 3); dispatch::template do_dispatch(interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2])); } private: functor_type f_; }; template class callback3 : public callback_base { typedef R (*functor_type)(T1, T2, T3); public: callback3(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 4); dispatch::template do_dispatch(interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2]), tcl_cast::from(interp, objv[3])); } private: functor_type f_; }; template class callback4 : public callback_base { typedef R (*functor_type)(T1, T2, T3, T4); public: callback4(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 5); dispatch::template do_dispatch(interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2]), tcl_cast::from(interp, objv[3]), tcl_cast::from(interp, objv[4])); } private: functor_type f_; }; template class callback5 : public callback_base { typedef R (*functor_type)(T1, T2, T3, T4, T5); public: callback5(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 6); dispatch::template do_dispatch(interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2]), tcl_cast::from(interp, objv[3]), tcl_cast::from(interp, objv[4]), tcl_cast::from(interp, objv[5])); } private: functor_type f_; }; template class callback6 : public callback_base { typedef R (*functor_type)(T1, T2, T3, T4, T5, T6); public: callback6(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 7); dispatch::template do_dispatch( interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2]), tcl_cast::from(interp, objv[3]), tcl_cast::from(interp, objv[4]), tcl_cast::from(interp, objv[5]), tcl_cast::from(interp, objv[6])); } private: functor_type f_; }; template class callback7 : public callback_base { typedef R (*functor_type)(T1, T2, T3, T4, T5, T6, T7); public: callback7(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 8); dispatch::template do_dispatch( interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2]), tcl_cast::from(interp, objv[3]), tcl_cast::from(interp, objv[4]), tcl_cast::from(interp, objv[5]), tcl_cast::from(interp, objv[6]), tcl_cast::from(interp, objv[7])); } private: functor_type f_; }; template class callback8 : public callback_base { typedef R (*functor_type)(T1, T2, T3, T4, T5, T6, T7, T8); public: callback8(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 9); dispatch::template do_dispatch( interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2]), tcl_cast::from(interp, objv[3]), tcl_cast::from(interp, objv[4]), tcl_cast::from(interp, objv[5]), tcl_cast::from(interp, objv[6]), tcl_cast::from(interp, objv[7]), tcl_cast::from(interp, objv[8])); } private: functor_type f_; }; template class callback9 : public callback_base { typedef R (*functor_type)(T1, T2, T3, T4, T5, T6, T7, T8, T9); public: callback9(functor_type f) : f_(f) {} virtual void invoke(Tcl_Interp *interp, int objc, Tcl_Obj * CONST objv[], policies const &) { check_params_no(objc, 10); dispatch::template do_dispatch< T1, T2, T3, T4, T5, T6, T7, T8, T9>(interp, f_, tcl_cast::from(interp, objv[1]), tcl_cast::from(interp, objv[2]), tcl_cast::from(interp, objv[3]), tcl_cast::from(interp, objv[4]), tcl_cast::from(interp, objv[5]), tcl_cast::from(interp, objv[6]), tcl_cast::from(interp, objv[7]), tcl_cast::from(interp, objv[8]), tcl_cast::from(interp, objv[9])); } private: functor_type f_; };