#pragma once


class CPMSetting
{
public:

    CPMSetting();
    virtual ~CPMSetting();

    bool LoadSetting(LPCTSTR szSetupFileName);
    bool LoadSetting() { return LoadSetting(GetSettingFileName()); }
    bool SaveSetting();

    LPCTSTR GetSettingFileName() const { return m_szSetupFileName.GetString(); }

    bool GetSettingData(LPCTSTR szKey, CString& szValue);
    void SetSettingData(LPCTSTR szKey, LPCTSTR szValue);

private:
    
    CMapStringToString  m_SetupDataMap;
    CString             m_szSetupFileName;
};


class CPMDefaultSetting : public CPMSetting
{
public:

    static CPMSetting& GetInstance();
    static LPCTSTR GetDefaultSettingName();

private:

    CPMDefaultSetting() { }
    virtual ~CPMDefaultSetting() { }
};