Module: use macros for event definitions to ensure consistency
authorMichael Moon <triffid.hunter@gmail.com>
Wed, 23 Jan 2013 04:14:16 +0000 (15:14 +1100)
committerMichael Moon <triffid.hunter@gmail.com>
Wed, 6 Feb 2013 00:27:55 +0000 (11:27 +1100)
src/libs/Event.h [new file with mode: 0644]
src/libs/Module.cpp
src/libs/Module.h

diff --git a/src/libs/Event.h b/src/libs/Event.h
new file mode 100644 (file)
index 0000000..fcb4935
--- /dev/null
@@ -0,0 +1,17 @@
+
+
+EVENT(ON_MAIN_LOOP, on_main_loop)
+EVENT(ON_CONSOLE_LINE_RECEIVED, on_console_line_received)
+EVENT(ON_GCODE_RECEIVED, on_gcode_received)
+EVENT(ON_STEPPER_WAKE_UP, on_stepper_wake_up)
+EVENT(ON_GCODE_EXECUTE, on_gcode_execute)
+EVENT(ON_SPEED_CHANGE, on_speed_change)
+EVENT(ON_BLOCK_BEGIN, on_block_begin)
+EVENT(ON_BLOCK_END, on_block_end)
+EVENT(ON_CONFIG_RELOAD, on_config_reload)
+EVENT(ON_PLAY, on_play)
+EVENT(ON_PAUSE, on_pause)
+EVENT(ON_IDLE, on_idle)
+EVENT(ON_CONFIG_VALUE, on_config_value)
+EVENT(ON_CONFIG_COMPLETE, on_config_complete)
+EVENT(ON_SECOND_TICK, on_second_tick)
index 8b33394..c318280 100644 (file)
@@ -9,44 +9,19 @@
 #include "libs/Kernel.h"
 
 const ModuleCallback kernel_callback_functions[NUMBER_OF_DEFINED_EVENTS] = {
-    &Module::on_main_loop,
-    &Module::on_console_line_received,
-    &Module::on_gcode_received,
-    &Module::on_stepper_wake_up,
-    &Module::on_gcode_execute,
-    &Module::on_speed_change,
-    &Module::on_block_begin,
-    &Module::on_block_end,
-    &Module::on_config_reload,
-    &Module::on_play,
-    &Module::on_pause,
-    &Module::on_idle,
-    &Module::on_config_value,
-    &Module::on_config_complete,
-    &Module::on_second_tick,
+    #define EVENT(name, func) &Module::func ,
+    #include "Event.h"
+    #undef EVENT
 };
 
-Module::Module(){ }
+Module::Module(){}
 
-void Module::on_module_loaded(){
-}
+void Module::on_module_loaded(){}
 
 void Module::register_for_event(_EVENT_ENUM event_id){
     this->kernel->register_for_event(event_id, this);
 }
 
-void Module::on_main_loop(             void * argument){}
-void Module::on_console_line_received( void * argument){}
-void Module::on_gcode_received(        void * argument){}
-void Module::on_stepper_wake_up(       void * argument){}
-void Module::on_gcode_execute(         void * argument){}
-void Module::on_speed_change(          void * argument){}
-void Module::on_block_begin(           void * argument){}
-void Module::on_block_end(             void * argument){}
-void Module::on_config_reload(         void * argument){}
-void Module::on_play(                  void * argument){}
-void Module::on_pause(                 void * argument){}
-void Module::on_idle(                  void * argument){}
-void Module::on_config_value(          void * argument){}
-void Module::on_config_complete(       void * argument){}
-void Module::on_second_tick(           void * argument){}
+#define EVENT(name, func) void Module::func (void*) {}
+#include "Event.h"
+#undef EVENT
index 52fea24..77634dd 100644 (file)
 using std::string;
 
 // See : http://smoothieware.org/listofevents
+
 enum _EVENT_ENUM {
-    ON_MAIN_LOOP,
-    ON_CONSOLE_LINE_RECEIVED,
-    ON_GCODE_RECEIVED,
-    ON_STEPPER_WAKE_UP,
-    ON_GCODE_EXECUTE,
-    ON_SPEED_CHANGE,
-    ON_BLOCK_BEGIN,
-    ON_BLOCK_END,
-    ON_CONFIG_RELOAD,
-    ON_PLAY,
-    ON_PAUSE,
-    ON_IDLE,
-    ON_CONFIG_VALUE,
-    ON_CONFIG_COMPLETE,
-    ON_SECOND_TICK,
+    #define EVENT(name, func) name,
+    #include "Event.h"
+    #undef EVENT
     NUMBER_OF_DEFINED_EVENTS
 };
 
@@ -45,21 +34,9 @@ class Module {
         Module();
         virtual void on_module_loaded();
         virtual void register_for_event(        _EVENT_ENUM event_id);
-        virtual void on_main_loop(              void * argument);
-        virtual void on_console_line_received(  void * argument);
-        virtual void on_gcode_received(         void * argument);
-        virtual void on_stepper_wake_up(        void * argument);
-        virtual void on_gcode_execute(          void * argument);
-        virtual void on_speed_change(           void * argument);
-        virtual void on_block_begin(            void * argument);
-        virtual void on_block_end(              void * argument);
-        virtual void on_config_reload(          void * argument);
-        virtual void on_play(                   void * argument);
-        virtual void on_pause(                  void * argument);
-        virtual void on_idle(                   void * argument);
-        virtual void on_config_value(           void * argument);
-        virtual void on_config_complete(        void * argument);
-        virtual void on_second_tick(            void * argument);
+        #define EVENT(name, func) virtual void func (void*);
+        #include "Event.h"
+        #undef EVENT
         Kernel * kernel;
 };