#pragma once
#include <set>
#include "MICmdBase.h"
#include "MICmdMgrSetCmdDeleteCallback.h"
#include "MICmnBase.h"
#include "MIUtilSingletonBase.h"
class CMICmdInterpreter;
class CMICmdFactory;
class CMICmdInvoker;
class CMICmdBase;
class CMICmdMgr : public CMICmnBase, public MI::ISingleton<CMICmdMgr> {
friend class MI::ISingleton<CMICmdMgr>;
public:
bool Initialize() override;
bool Shutdown() override;
bool CmdInterpret(const CMIUtilString &vTextLine, bool &vwbYesValid,
bool &vwbCmdNotInCmdFactor, SMICmdData &rwCmdData);
bool CmdExecute(const SMICmdData &vCmdData);
bool CmdDelete(SMICmdData vCmdData);
bool CmdRegisterForDeleteNotification(
CMICmdMgrSetCmdDeleteCallback::ICallback &vObject);
bool CmdUnregisterForDeleteNotification(
CMICmdMgrSetCmdDeleteCallback::ICallback &vObject);
private:
CMICmdMgr();
CMICmdMgr(const CMICmdMgr &);
void operator=(const CMICmdMgr &);
public:
~CMICmdMgr() override;
private:
CMICmdInterpreter &m_interpretor;
CMICmdFactory &m_factory;
CMICmdInvoker &m_invoker;
CMICmdMgrSetCmdDeleteCallback::CSetClients m_setCmdDeleteCallback;
};