#ifndef NN_CONFIG_LOADER_H_ #define NN_CONFIG_LOADER_H_ namespace common { using namespace nn; using namespace nn::fs; using namespace std; class ConfigFileLoader { private: static const int PARAM_NAME_MAX_STRING_LENGTH = 16; static const int PARAM_VALUE_MAX_STRING_LENGTH = 128; static const int PARAM_MAX_NUM = 64; char m_ReadCharBuffer[PARAM_VALUE_MAX_STRING_LENGTH]; wchar_t *m_ParamName[PARAM_MAX_NUM]; wchar_t *m_ParamValue[PARAM_MAX_NUM]; wchar_t *m_Buffer; s32 m_UsedBufferSize; s32 m_ParamNum; public: ConfigFileLoader() : m_Buffer(0), m_UsedBufferSize(0), m_ParamNum(0) { } /* @brief ConfigFileLoader を初期化します. 使用するファイルが存在するアーカイブは,あらかじめマウントしておく必要があります. 読み込みに使用するバッファを確保し,引数 buffer に与える必要があります. Finalize を呼ぶまでこのバッファは開放しないでください. 読み込ませることのできるフォーマット ・エンコーディング:UTF-16 ・バイトオーダ  :リトルエンディアン ・改行記号    :不問 半角コロンを含む行のみパラメータ記述行として読み込み,含まない行は無視します. 半角コロンより前の文字はすべてパラメータ名として取得し, 半角コロンより後の文字はすべてパラメータの値として取得します. ParameterName : ParameterValue; と記述すると パラメータ名は L"ParameterName " パラメータ値は L" ParameterValue;" となります. @param[in] fileName 設定ファイル名 @param[in] buffer ファイル読み込み用のバッファ @param[in] bufferSize 上記 buffer の大きさ @return 結果を返します. */ Result Initialize(const wchar_t* fileName, void* buffer, const size_t bufferSize); void Finalize(); // スレッドセーフです. const wchar_t *ReadAsWChar(const wchar_t *paramName); // スレッドセーフではありません. const char *ReadAsChar(const wchar_t *paramName); // スレッドセーフです. int ReadAsInteger(const wchar_t *paramName); private: Result ParseData(); s32 SearchParamName(const wchar_t *paramName); }; } #endif // NN_CONFIG_LOADER_H_