From: <ms...@us...> - 2007-02-22 14:26:42
|
Revision: 2721 http://svn.sourceforge.net/kamaelia/?rev=2721&view=rev Author: ms_ Date: 2007-02-22 06:26:30 -0800 (Thu, 22 Feb 2007) Log Message: ----------- Autogenerated + a little help conversion of a python mini Axon based system into a C++ based system Michael. Modified Paths: -------------- trunk/Sketches/MPS/SS/test.cpp trunk/Sketches/MPS/SS/test.hpp trunk/Sketches/MPS/SS/test.py Modified: trunk/Sketches/MPS/SS/test.cpp =================================================================== --- trunk/Sketches/MPS/SS/test.cpp 2007-02-22 12:33:11 UTC (rev 2720) +++ trunk/Sketches/MPS/SS/test.cpp 2007-02-22 14:26:30 UTC (rev 2721) @@ -6,9 +6,9 @@ __iter<int> *MT, *__13, *__14; int __15, i; -component *c; postman *postie; str *__name__; +Consumer *c; scheduler *myscheduler; Producer *p; @@ -33,7 +33,7 @@ class_ *cl_scheduler; -int scheduler::activateMicroprocess(lambda0 some_gen, component *some_obj) { +int scheduler::activateMicroprocess(lambda0 some_gen, microprocess *some_obj) { __iter<int> *microthread; microthread = some_gen(some_obj); @@ -41,6 +41,38 @@ return 0; } +int scheduler::activateMicroprocess(lambda1 some_gen, component *some_obj) { + __iter<int> *microthread; + + microthread = some_gen(some_obj); + (this->newqueue)->append(microthread); + return 0; +} + +int scheduler::activateMicroprocess(lambda2 some_gen, postman *some_obj) { + __iter<int> *microthread; + + microthread = some_gen(some_obj); + (this->newqueue)->append(microthread); + return 0; +} + +int scheduler::activateMicroprocess(lambda3 some_gen, Producer *some_obj) { + __iter<int> *microthread; + + microthread = some_gen(some_obj); + (this->newqueue)->append(microthread); + return 0; +} + +int scheduler::activateMicroprocess(lambda4 some_gen, Consumer *some_obj) { + __iter<int> *microthread; + + microthread = some_gen(some_obj); + (this->newqueue)->append(microthread); + return 0; +} + scheduler::scheduler() : microprocess(const_0) { this->__class__ = cl_scheduler; @@ -85,7 +117,7 @@ class_ *cl_postman; -postman::postman(Producer *source, str *sourcebox, component *sink, str *sinkbox) : microprocess(const_0) { +postman::postman(Producer *source, str *sourcebox, Consumer *sink, str *sinkbox) : microprocess(const_0) { this->__class__ = cl_postman; this->source = source; @@ -112,6 +144,11 @@ class_ *cl_Consumer; +Consumer::Consumer() : component() { + this->__class__ = cl_Consumer; + +} + void __init() { const_0 = new str("hello"); const_1 = new str("inbox"); @@ -120,19 +157,20 @@ __name__ = new str("__main__"); - cl_postman = new class_("postman", 16, 16); - cl_Producer = new class_("Producer", 18, 18); - cl_microprocess = new class_("microprocess", 15, 20); - cl_component = new class_("component", 17, 19); - cl_scheduler = new class_("scheduler", 20, 20); - cl_Consumer = new class_("Consumer", 19, 19); + cl_postman = new class_("postman", 32, 32); + cl_Producer = new class_("Producer", 34, 34); + cl_microprocess = new class_("microprocess", 31, 36); + cl_component = new class_("component", 33, 35); + cl_scheduler = new class_("scheduler", 36, 36); + cl_Consumer = new class_("Consumer", 35, 35); p = (new Producer(const_3)); - c = (new component()); + c = (new Consumer()); postie = (new postman(p, const_2, c, const_1)); myscheduler = (new scheduler()); myscheduler->activateMicroprocess(Consumer_main, c); myscheduler->activateMicroprocess(Producer_main, p); + myscheduler->activateMicroprocess(postman_main, postie); MT = scheduler_main(myscheduler); FOR_IN(i,MT,14) @@ -218,6 +256,42 @@ } +class __gen_postman_main : public __iter<int> { +public: + postman *zelf; + str *d; + int __last_yield; + + __gen_postman_main(postman *zelf) { + this->zelf = zelf; + __last_yield = -1; + } + + int next() { + switch(__last_yield) { + case 0: goto __after_yield_0; + default: break; + } + + while(1) { + __last_yield = 0; + return 1; + __after_yield_0:; + if ((zelf->source)->dataReady(zelf->sourcebox)) { + d = (zelf->source)->recv(zelf->sourcebox); + (zelf->sink)->send(d, zelf->sinkbox); + } + } + throw new StopIteration(); + } + +}; + +__iter<int> *postman_main(postman *zelf) { + return new __gen_postman_main(zelf); + +} + class __gen_Producer_main : public __iter<int> { public: Producer *zelf; @@ -254,10 +328,10 @@ public: int count; str *data; - component *zelf; + Consumer *zelf; int __last_yield; - __gen_Consumer_main(component *zelf) { + __gen_Consumer_main(Consumer *zelf) { this->zelf = zelf; __last_yield = -1; } @@ -284,7 +358,7 @@ }; -__iter<int> *Consumer_main(component *zelf) { +__iter<int> *Consumer_main(Consumer *zelf) { return new __gen_Consumer_main(zelf); } Modified: trunk/Sketches/MPS/SS/test.hpp =================================================================== --- trunk/Sketches/MPS/SS/test.hpp 2007-02-22 12:33:11 UTC (rev 2720) +++ trunk/Sketches/MPS/SS/test.hpp 2007-02-22 14:26:30 UTC (rev 2721) @@ -13,8 +13,11 @@ class Producer; class Consumer; -typedef __iter<int> *(*lambda0)(component *); -typedef __iter<int> *(*lambda1)(Producer *); +typedef __iter<int> *(*lambda0)(microprocess *); +typedef __iter<int> *(*lambda1)(component *); +typedef __iter<int> *(*lambda2)(postman *); +typedef __iter<int> *(*lambda3)(Producer *); +typedef __iter<int> *(*lambda4)(Consumer *); extern class_ *cl_microprocess; class microprocess : public pyobj { @@ -33,7 +36,11 @@ list<__iter<int> *> *newqueue; list<__iter<int> *> *active; - int activateMicroprocess(lambda0 some_gen, component *some_obj); + int activateMicroprocess(lambda0 some_gen, microprocess *some_obj); + int activateMicroprocess(lambda1 some_gen, component *some_obj); + int activateMicroprocess(lambda2 some_gen, postman *some_obj); + int activateMicroprocess(lambda3 some_gen, Producer *some_obj); + int activateMicroprocess(lambda4 some_gen, Consumer *some_obj); scheduler(); }; @@ -53,10 +60,10 @@ public: str *sinkbox; Producer *source; - component *sink; + Consumer *sink; str *sourcebox; - postman(Producer *source, str *sourcebox, component *sink, str *sinkbox); + postman(Producer *source, str *sourcebox, Consumer *sink, str *sinkbox); }; extern class_ *cl_Producer; @@ -70,11 +77,14 @@ extern class_ *cl_Consumer; class Consumer : public component { public: + + Consumer(); }; __iter<int> *scheduler_main(scheduler *zelf); +__iter<int> *postman_main(postman *zelf); __iter<int> *Producer_main(Producer *zelf); -__iter<int> *Consumer_main(component *zelf); +__iter<int> *Consumer_main(Consumer *zelf); } // module namespace #endif Modified: trunk/Sketches/MPS/SS/test.py =================================================================== --- trunk/Sketches/MPS/SS/test.py 2007-02-22 12:33:11 UTC (rev 2720) +++ trunk/Sketches/MPS/SS/test.py 2007-02-22 14:26:30 UTC (rev 2721) @@ -106,14 +106,13 @@ # p = Producer("Hello World") -# c = Consumer() -c = component() +c = Consumer() postie = postman(p, "outbox", c, "inbox") myscheduler = scheduler() myscheduler.activateMicroprocess(Consumer_main,c) myscheduler.activateMicroprocess(Producer_main,p) -# myscheduler.activateMicroprocess(postman_main,postie) +myscheduler.activateMicroprocess(postman_main,postie) MT = scheduler_main(myscheduler) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |