Нужно сказать что в коде реализовано плохо, что хорошо, а что можно было бы заменить другими конструкциями.
Собственно код :
Code
enum ibEvent{ //Перечисление возможных событий
IB_ON_LOAD,
IB_ON_EXIT
};
struct ibEvents{ //Структура образец
void (*FunctionEvent)(void);
ibEvent eventType;
};
ibEvents events[5]; //Хранилище событий
int key; //Текущая позиция
void ibAddEvent(ibEvent type, void (*FunctionCB)(void)){
events[key].eventType = type;
events[key].FunctionEvent = FunctionCB;
key++;
}
void ibCallEvent(ibEvent type){
for (int i = 0; i <= key; i++){
if (events[i].eventType == type){
events[i].FunctionEvent();
}
}
}
А теперь про то что делает этот код :
Когда пользователь вызывает функцию ibAddEvent он добавляет событие к определённому участку кода (в этом участке вызывается функция ibCallEvent)