From 0143364a29bb468612b7df5b47af6f6d20a9211a Mon Sep 17 00:00:00 2001 From: brain Date: Wed, 25 Jul 2007 17:03:16 +0000 Subject: Forgot to add this git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7566 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/caller.h | 216 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 include/caller.h diff --git a/include/caller.h b/include/caller.h new file mode 100644 index 000000000..328aed2c9 --- /dev/null +++ b/include/caller.h @@ -0,0 +1,216 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + +#ifndef __CALLER__H__ +#define __CALLER__H__ + +template class CoreExport HandlerBase0 +{ + public: + virtual ReturnType Call() = 0; + virtual ~HandlerBase0() { } +}; + +template class CoreExport HandlerBase1 +{ + public: + virtual ReturnType Call(Param1) = 0; + virtual ~HandlerBase1() { } +}; + +template class CoreExport HandlerBase2 +{ + public: + virtual ReturnType Call(Param1, Param2) = 0; + virtual ~HandlerBase2() { } +}; + +template class CoreExport HandlerBase3 +{ + public: + virtual ReturnType Call(Param1, Param2, Param3) = 0; + virtual ~HandlerBase3() { } +}; + +template class CoreExport HandlerBase4 +{ + public: + virtual ReturnType Call(Param1, Param2, Param3, Param4) = 0; + virtual ~HandlerBase4() { } +}; + +template class CoreExport HandlerBase5 +{ + public: + virtual ReturnType Call(Param1, Param2, Param3, Param4, Param5) = 0; + virtual ~HandlerBase5() { } +}; + +template class CoreExport HandlerBase6 +{ + public: + virtual ReturnType Call(Param1, Param2, Param3, Param4, Param5, Param6) = 0; + virtual ~HandlerBase6() { } +}; + +template class CoreExport HandlerBase7 +{ + public: + virtual ReturnType Call(Param1, Param2, Param3, Param4, Param5, Param6, Param7) = 0; + virtual ~HandlerBase7() { } +}; + +template class CoreExport HandlerBase8 +{ + public: + virtual ReturnType Call(Param1, Param2, Param3, Param4, Param5, Param6, Param7, Param8) = 0; + virtual ~HandlerBase8() { } +}; + +template class CoreExport caller +{ + public: + HandlerType* target; + + caller(HandlerType* initial) + : target(initial) + { } + + virtual ~caller() { } + + caller& operator=(HandlerType* newtarget) + { + target = newtarget; + return *this; + } +}; + +template class CoreExport caller0 : public caller< HandlerBase0 > +{ + public: + caller0(HandlerBase0* initial) + : caller< HandlerBase0 >::caller(initial) + { } + + virtual ReturnType operator() () + { + return this->target->Call(); + } +}; + +template class CoreExport caller1 : public caller< HandlerBase1 > +{ + public: + caller1(HandlerBase1* initial) + : caller< HandlerBase1 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1) + { + return this->target->Call(param1); + } +}; + +template class CoreExport caller2 : public caller< HandlerBase2 > +{ + public: + caller2(HandlerBase2* initial) + : caller< HandlerBase2 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1, Param2 param2) + { + return this->target->Call(param1, param2); + } +}; + +template class CoreExport caller3 : public caller< HandlerBase3 > +{ + public: + caller3(HandlerBase3* initial) + : caller< HandlerBase3 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1, Param2 param2, Param3 param3) + { + return this->target->Call(param1, param2, param3); + } +}; + +template class CoreExport caller4 : public caller< HandlerBase4 > +{ + public: + caller4(HandlerBase4* initial) + : caller< HandlerBase4 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1, Param2 param2, Param3 param3, Param4 param4) + { + return this->target->Call(param1, param2, param3, param4); + } +}; + +template class CoreExport caller5 : public caller< HandlerBase5 > +{ + public: + caller5(HandlerBase5* initial) + : caller< HandlerBase5 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5) + { + return this->target->Call(param1, param2, param3, param4, param5); + } +}; + +template class CoreExport caller6 : public caller< HandlerBase6 > +{ + public: + caller6(HandlerBase6* initial) + : caller< HandlerBase6 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6) + { + return this->target->Call(param1, param2, param3, param4, param5, param6); + } +}; + +template class CoreExport caller7 : public caller< HandlerBase7 > +{ + public: + caller7(HandlerBase7* initial) + : caller< HandlerBase7 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6, Param7 param7) + { + return this->target->Call(param1, param2, param3, param4, param5, param6, param7); + } +}; + +template class CoreExport caller8 : public caller< HandlerBase8 > +{ + public: + caller8(HandlerBase8* initial) + : caller< HandlerBase8 >::caller(initial) + { } + + virtual ReturnType operator() (Param1 param1, Param2 param2, Param3 param3, Param4 param4, Param5 param5, Param6 param6, Param7 param7, Param8 param8) + { + return this->target->Call(param1, param2, param3, param4, param5, param6, param7, param8); + } +}; + +#endif + -- cgit v1.2.3