#pragma once
#include "ISGManager.h"

#include "DllDefines.h"

/*
 * This is a singleton that contains the one and only SGManager
 */
class SECSGEM_DLL CSGManagerSingleton
{
private:
    CSGManagerSingleton(void);
    ~CSGManagerSingleton(void);
    /* The below copy constructor and assignment operators are
     * not implemented but by defining them here their default
     * implementation will not be used.
     */
    static CMutex m_mutex;
    static ISGManager* m_pInstance;
    CSGManagerSingleton(const CSGManagerSingleton&);
    void operator=(const CSGManagerSingleton&);

public:
    static ISGManager& Instance();
    static void Destroy();
};
