12#ifdef TEMPLATE_EVENT_NAME
13 #ifdef TEMPLATE_BIND_BUFFER_SIZE
19 #ifdef TEMPLATE_EVENT_ARG_NUM
21 #if TEMPLATE_EVENT_ARG_NUM == 1
23 typedef void (*
TEMPLATE(type,TEMPLATE_EVENT_NAME))(TEMPLATE_EVENT_ARG_1 a1);
25 TEMPLATE(type,TEMPLATE_EVENT_NAME)
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[TEMPLATE_BIND_BUFFER_SIZE];
26 uint8_t
TEMPLATE(TEMPLATE_EVENT_NAME,num_events) = 0;
28 void TEMPLATE_EVENT_NAME(TEMPLATE_EVENT_ARG_1 a1)
31 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
33 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
35 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i](a1);
37 if(lcnt >= num_events)
return;
42 bool TEMPLATE(bind,TEMPLATE_EVENT_NAME)(void (*handler)(TEMPLATE_EVENT_ARG_1 a1))
45 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
47 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
50 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== handler)
53 if(lcnt >= num_events)
break;
56 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
58 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== 0)
60 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] = handler;
61 TEMPLATE(TEMPLATE_EVENT_NAME,num_events)++;
68 bool TEMPLATE(unbind,TEMPLATE_EVENT_NAME)(void (*handler)(TEMPLATE_EVENT_ARG_1 a1))
71 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
73 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
76 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== handler)
78 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] = 0;
79 TEMPLATE(TEMPLATE_EVENT_NAME,num_events)--;
82 if(lcnt>=
TEMPLATE(TEMPLATE_EVENT_NAME,num_events))
return false;
87 #undef TEMPLATE_EVENT_ARG_1
90 #if TEMPLATE_EVENT_ARG_NUM == 2
92 typedef void (*
TEMPLATE(type,TEMPLATE_EVENT_NAME))(TEMPLATE_EVENT_ARG_1 a1, TEMPLATE_EVENT_ARG_2 a2);
94 TEMPLATE(type,TEMPLATE_EVENT_NAME)
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[TEMPLATE_BIND_BUFFER_SIZE];
95 uint8_t
TEMPLATE(TEMPLATE_EVENT_NAME,num_events) = 0;
97 void TEMPLATE_EVENT_NAME(TEMPLATE_EVENT_ARG_1 a1, TEMPLATE_EVENT_ARG_2 a2)
100 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
102 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
104 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i](a1,a2);
106 if(lcnt >=
TEMPLATE(TEMPLATE_EVENT_NAME,num_events))
return;
111 bool TEMPLATE(bind,TEMPLATE_EVENT_NAME)(void (*handler)(TEMPLATE_EVENT_ARG_1 a1, TEMPLATE_EVENT_ARG_2 a2))
114 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
116 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
119 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== handler)
122 if(lcnt >=
TEMPLATE(TEMPLATE_EVENT_NAME,num_events))
break;
125 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
127 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== 0)
129 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] = handler;
130 TEMPLATE(TEMPLATE_EVENT_NAME,num_events)++;
137 bool TEMPLATE(unbind,TEMPLATE_EVENT_NAME)(void (*handler)(TEMPLATE_EVENT_ARG_1 a1, TEMPLATE_EVENT_ARG_2 a2))
140 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
142 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
145 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== handler)
147 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] = 0;
148 TEMPLATE(TEMPLATE_EVENT_NAME,num_events)--;
151 if(lcnt>=
TEMPLATE(TEMPLATE_EVENT_NAME,num_events))
return false;
156 #undef TEMPLATE_EVENT_ARG_1
157 #undef TEMPLATE_EVENT_ARG_2
159 #undef TEMPLATE_EVENT_ARG_NUM
162 typedef void (*
TEMPLATE(type,TEMPLATE_EVENT_NAME))();
164 TEMPLATE(type,TEMPLATE_EVENT_NAME)
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[TEMPLATE_BIND_BUFFER_SIZE];
165 uint8_t
TEMPLATE(TEMPLATE_EVENT_NAME,num_events) = 0;
167 void TEMPLATE_EVENT_NAME()
170 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
172 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
174 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]();
176 if(lcnt >=
TEMPLATE(TEMPLATE_EVENT_NAME,num_events))
return;
180 bool TEMPLATE(bind,TEMPLATE_EVENT_NAME)(void (*handler)())
183 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
185 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
188 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== handler)
191 if(lcnt >=
TEMPLATE(TEMPLATE_EVENT_NAME,num_events))
break;
194 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
196 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== 0)
198 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] = handler;
199 TEMPLATE(TEMPLATE_EVENT_NAME,num_events)++;
206 bool TEMPLATE(unbind,TEMPLATE_EVENT_NAME)(void (*handler)())
209 for(uint8_t i = 0; i<TEMPLATE_BIND_BUFFER_SIZE; i++)
211 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] != 0)
214 if(
TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i]== handler)
216 TEMPLATE(TEMPLATE_EVENT_NAME,bind_events)[i] = 0;
217 TEMPLATE(TEMPLATE_EVENT_NAME,num_events)--;
220 if(lcnt>=
TEMPLATE(TEMPLATE_EVENT_NAME,num_events))
return false;
227 #undef TEMPLATE_BIND_BUFFER_SIZE
229#undef TEMPLATE_EVENT_NAME
#define TEMPLATE(X, Y)
Definition templates.h:14