#include <windows.h>
#include "kbsid_config.h"

static const wchar_t SEC_GENERAL[] = L"General";
static const wchar_t KEY_ENABLE_RESID[] = L"EnableReSID";
extern HINSTANCE g_hKpi;
/////////////////////////////////////////////////////////////////////////////
BOOL __fastcall kbsid_EnumConfig(IKpiConfigEnumerator *pEnumerator)
{
    static const KPI_CFG_SECTION sec[] = {
        {SEC_GENERAL, NULL, L"kbsid.kpi に関する一般的な設定です。"},
        {NULL, NULL, NULL}
    };
    static const KPI_CFG_KEY key[] = {
        {KPI_CFG_TYPE_BOOL, SEC_GENERAL, KEY_ENABLE_RESID, NULL, 
            L"1", NULL, NULL, //default/min/max
            NULL, NULL, //list/listdesc
            L"true にするとエミュレーションに ReSID を使用します。"},//help*/
        {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
    };
    for(int i = 0; sec[i].cszSection; i++){
        pEnumerator->EnumSection(&sec[i]);
    }
    for(int i = 0; key[i].cszSection; i++){
        pEnumerator->EnumKey(&key[i]);
    }
    return TRUE;
}
/////////////////////////////////////////////////////////////////////////////
DWORD __fastcall kbsid_ApplyConfig(IKpiConfig *pConfig,
                               const wchar_t *cszSection,//セクション名
                               const wchar_t *cszKey,    //キー名
                               INT64  nValue, //変更後の値(BOOL/INT の場合)
                               double dValue, //変更後の値(FLOAT の場合)
                               const wchar_t *cszValue)////変更後の値(文字列)
{
    pConfig->SetStr(cszSection, cszKey, cszValue);
    return KPI_CFGRET_RELOAD_DATA;
}
/////////////////////////////////////////////////////////////////////////////
void __fastcall kbsid_GetSettings(IKpiConfig *pConfig, kbsid_Settings *pSettings)
{
    pSettings->bEnableReSID = pConfig->GetInt(SEC_GENERAL, KEY_ENABLE_RESID, 1) != 0;
}
/////////////////////////////////////////////////////////////////////////////
