#include <iostream>
#include <queue>
using namespace std;

#define CLASS(x) class x {
#define METHODS public:
#define END_CLASS };

typedef void (*ArenaMgr_MsgEventMapFunc)();

typedef int QObject;
typedef QObject QEvent;
typedef QObject QHsm;
typedef QObject Geometry;

typedef std::queue<QEvent> EventQueue;

CLASS(arenamanager)
    int machineSum;
    int regularSig;
    int eventTypeSum;
    ArenaMgr_MsgEventMapFunc s_mapFunc;
    EventQueue queue;
    bool stateMachinesAreIniti;
METHODS
	void arenamgrInit(void);
   	void smRegistry(int id, QHsm * stateMachine);
	void dispatchAsyn(int id, QEvent *event);
  	bool dispatch(int id, QEvent *event);
	void forwardDispatchAsyn(QEvent *event);
    void forwardDispatch(QEvent *event);
	void setMachineSum(int sum);
	void setRegularSig(int sig);
    void setEventTypeSum(int sum);
    void setMsgEventMap(ArenaMgr_MsgEventMapFunc mapFunc);
    void statEng_createArena(int sm_id, int arena_id,  char const* arena_name,  Geometry const*  geom);
    void statEng_enableArena(int sm_id, bool enabled);
    void postForwardDispatchAsyn(QEvent *event);
    void setIsAbrFullMode(bool isAbrFullMode);
    void statEng_initStateMachines(void);
END_CLASS

int main() {
	// your code goes here
	return 0;
}