diff --git a/bazaar/MtAlt/MtAlt.h b/bazaar/MtAlt/MtAlt.h index 55fc64c77..d37275b88 100644 --- a/bazaar/MtAlt/MtAlt.h +++ b/bazaar/MtAlt/MtAlt.h @@ -161,6 +161,34 @@ public: LOCK_ADD_UNLOCK; } + template + void Request(void (OBJECT::*m)(pick_ P1 &, pick_ P2 &, pick_ P3 &, pick_ P4 &, pick_ P5 &), pick_ P1 &p1, pick_ P2 &p2, pick_ P3 &p3, pick_ P4 &p4, pick_ P5 &p5) + { + Element5 *e = new Element5; + e->caller = static_cast(this); + e->m = m; + e->p1 = p1; + e->p2 = p2; + e->p3 = p3; + e->p4 = p4; + e->p5 = p5; + LOCK_ADD_UNLOCK; + } + + template + void Request(void (OBJECT::*m)(P1,P2,P3,P4,P5), P1 p1, P2 p2, P3 p3, P4 p4, P5 p5) + { + Element5c *e = new Element5c; + e->caller = static_cast(this); + e->m = m; + e->p1 = p1; + e->p2 = p2; + e->p3 = p3; + e->p4 = p4; + e->p5 = p5; + LOCK_ADD_UNLOCK; + } + void DoTasks() { while (!IsShutdown()) @@ -324,6 +352,32 @@ private: P4 p4; }; + template + struct Element5 : public Element + { + virtual ~Element5() {} + virtual void Execute() {((static_cast(caller))->*m)(p1,p2,p3,p4,p5);} + void (OBJECT::*m)(pick_ P1 &p1, pick_ P2 &p2, pick_ P3 &p3, pick_ P4 &p4, pick_ P5 &p5); + P1 p1; + P2 p2; + P3 p3; + P4 p4; + P5 p5; + }; + + template + struct Element5c : public Element + { + virtual ~Element5c() {} + virtual void Execute() {((static_cast(caller))->*m)(p1,p2,p3,p4,p5);} + void (OBJECT::*m)(P1 p1, P2 p2, P3 p3, P4 p4, P5 p5); + P1 p1; + P2 p2; + P3 p3; + P4 p4; + P5 p5; + }; + void DoNothingJustAwake(){} BiArray queue;