trigger update
authorksg <ken@mihrtec.com>
Thu, 30 Jun 2016 17:06:22 +0000 (10:06 -0700)
committerksg <ken@mihrtec.com>
Thu, 30 Jun 2016 17:06:22 +0000 (10:06 -0700)
src/core/trigger.h

index b1a8b71..1f1878d 100644 (file)
 
   \author  K
   \date    2016
 
   \author  K
   \date    2016
-  ------------------------------------------------------------------------------*/
+  -----------------------------------------------------------------------------*/
 
 #ifndef _TRIGGER_H_
 #define _TRIGGER_H_
 
 
 #ifndef _TRIGGER_H_
 #define _TRIGGER_H_
 
-/* Function trigger stack for "unwinding" initialization of modules */
+/** The number of trigger functions per trigger */
 #ifndef MAX_TRIGGER_FUNCS
 #define MAX_TRIGGER_FUNCS 15
 #endif
 
 /* Internal macro prototypes */
 #ifndef MAX_TRIGGER_FUNCS
 #define MAX_TRIGGER_FUNCS 15
 #endif
 
 /* Internal macro prototypes */
-#define _TRIGGER_POP(TARG) --TARG.num_funcs
+#define _TRIGGER_DEL(TARG) --TARG.num_funcs
+#define _TRIGGER_POP(TARG) (TARG.func[_TRIGGER_DEL(TARG)])()
 #define _TRIGGER_SET(TARG, FUNC) TARG.func[TARG.num_funcs++] = FUNC
 #define _TRIGGER_SET(TARG, FUNC) TARG.func[TARG.num_funcs++] = FUNC
-#define _TRIGGER(TARG) while(TARG.num_funcs) (TARG.func[TRIGGER_POP(TARG)])()
+#define _TRIGGER(TARG) while(TARG.num_funcs) TRIGGER_POP(TARG)
 
 /* If TRIGGERS is not defined, use only a default trigger and define shorthand
 
 /* If TRIGGERS is not defined, use only a default trigger and define shorthand
-   functions for easy use.
-*******************************************************************************/
+   functions for easy use. */
 #ifndef TRIGGERS
 #define TRIGGERS default_trigger
 #ifndef TRIGGERS
 #define TRIGGERS default_trigger
+#define TRIGGER_DEL() _TRIGGER_DEL(default_trigger)
 #define TRIGGER_POP() _TRIGGER_POP(default_trigger)
 #define TRIGGER_SET(FUNC) _TRIGGER_SET(default_trigger, FUNC)
 #define TRIGGER() _TRIGGER(default_trigger)
 #else
 #define TRIGGER_POP() _TRIGGER_POP(default_trigger)
 #define TRIGGER_SET(FUNC) _TRIGGER_SET(default_trigger, FUNC)
 #define TRIGGER() _TRIGGER(default_trigger)
 #else
+#define TRIGGER_DEL(TARG) _TRIGGER_DEL(TARG)
 #define TRIGGER_POP(TARG) _TRIGGER_POP(TARG)
 #define TRIGGER_SET(TARG,FUNC) _TRIGGER_SET(TARG,FUNC)
 #define TRIGGER(TARG) _TRIGGER(TARG)
 #define TRIGGER_POP(TARG) _TRIGGER_POP(TARG)
 #define TRIGGER_SET(TARG,FUNC) _TRIGGER_SET(TARG,FUNC)
 #define TRIGGER(TARG) _TRIGGER(TARG)