20 #define _TnbACCESSOR_Tree_ENABLE
22#ifdef _TnbACCESSOR_Tree_ENABLE
148 m_vbData.
CopyElements(len,
static_cast<const BYTE*
>(P));
198 s =
CStr::Fmt(_T(
"%u"),
static_cast<DWORD
>(m_llData));
263 #ifdef _TnbACCESSOR_Tree_ENABLE
302 bool m_IsEmpty(
const CValue& v)
const
322 : m_piAccessor(const_cast<
IAccessor *>(I)), m_strSection(lpszSectionName)
326 ASSERT0(
false,
"CSection::CSection()",
"IAccessor が指定されていません。" );
348 CStr s = m_strSection;
355 return vs.
Find(s) != INVALID_INDEX;
369 if ( ! m_strSection.
IsEmpty() )
371 m_strSection += _T(
'\\');
373 m_strSection += lpszSubName;
389 m_strSection = m_strSection.
Left(d);
393 m_strSection.
Empty();
441 return m_piAccessor->
GetKeyKind(m_strSection, lpszKey);
475 return m_piAccessor->
WriteValue(m_strSection, lpszKey, value);
485 return m_piAccessor->
QueryValue(m_strSection, lpszKey);
590 return m_IsEmpty(v) ? dwDefault : v.
QueryDword();
626 template<
typename TYP>
630 vb.
SetElements(
sizeof(TYP),
reinterpret_cast<const BYTE*
>(&t));
643 template<
typename TYP>
647 if ( v.
GetSize() !=
sizeof(TYP) )
651 BYTE* B =
reinterpret_cast<BYTE*
>(&_t);
754 int l = ::GetWindowTextLength(hWnd);
757 ::GetWindowText(hWnd, s.
GetBuffer(l + 2), l + 1);
775 return !! ::SetWindowText(hWnd, s);
780 #ifdef _TnbACCESSOR_Tree_ENABLE
818 mapKey.
Get(i, key, value);
825 _tree.
Add(key, value);
851 mapKey.
Get(i, key, value);
939 template<
typename TYP>
978 return CSection(
this, lpszSectionName);
988 return CSection(
this, lpszSectionName);
1017 #ifdef _TnbACCESSOR_Tree_ENABLE
1060 DWORD dwRc = ::GetModuleFileName(NULL, str.
GetBuffer(MAX_PATH), MAX_PATH);
1062 ASSERTLIB(dwRc != 0);
1067 #if defined(_DEBUG) && !defined(_WIN32_WCE)
1070 DWORD dwLength = MAX_COMPUTERNAME_LENGTH + 1;
1191 WINDOWPLACEMENT t = { 0 };
1192 t.length =
sizeof(WINDOWPLACEMENT);
1193 if ( ! ::GetWindowPlacement(hWnd, &t) ){
return false; }
1195 boRc &= _sec.
WriteLonglong(_T(
"SX"), t.rcNormalPosition.left);
1196 boRc &= _sec.
WriteLonglong(_T(
"SY"), t.rcNormalPosition.top);
1197 boRc &= _sec.
WriteLonglong(_T(
"EX"), t.rcNormalPosition.right);
1198 boRc &= _sec.
WriteLonglong(_T(
"EY"), t.rcNormalPosition.bottom);
1199 boRc &= _sec.
WriteDword(_T(
"Show"), ::IsWindowVisible(hWnd));
1200 boRc &= _sec.
WriteDword(_T(
"Maximize"), ::IsZoomed(hWnd));
1231 WINDOWPLACEMENT t = { 0 };
1232 t.length =
sizeof(WINDOWPLACEMENT);
1233 if ( ! ::GetWindowPlacement(hWnd, &t) )
1237 int width = t.rcNormalPosition.right - t.rcNormalPosition.left;
1238 int height = t.rcNormalPosition.bottom - t.rcNormalPosition.top;
1239 t.rcNormalPosition.left =
static_cast<LONG
>(sec.
QueryLonglong(_T(
"SX"), 0));
1240 t.rcNormalPosition.top =
static_cast<LONG
>(sec.
QueryLonglong(_T(
"SY"), 0));
1241 if ( withWindowSize )
1243 t.rcNormalPosition.right =
static_cast<LONG
>(sec.
QueryLonglong(_T(
"EX"), 100));
1244 t.rcNormalPosition.bottom =
static_cast<LONG
>(sec.
QueryLonglong(_T(
"EY"), 100));
1248 t.rcNormalPosition.right = t.rcNormalPosition.left + width;
1249 t.rcNormalPosition.bottom = t.rcNormalPosition.top + height;
1252 DWORD cx = t.rcNormalPosition.right - t.rcNormalPosition.left;
1253 DWORD cy = t.rcNormalPosition.bottom - t.rcNormalPosition.top;
1254 if ( cx > 4000 || cy > 4000 )
1258 t.flags = WPF_SETMINPOSITION;
1259 t.showCmd = SW_HIDE;
1260 ::SetWindowPlacement(hWnd, &t);
1264 ::ShowWindow(hWnd, (s != 0) ? SW_SHOW : SW_HIDE);
1266 if ( !! sec.
QueryDword(_T(
"Maximize"), FALSE) )
1268 ::ShowWindow(hWnd, SW_MAXIMIZE);
#define loop(VAR, CNT)
loop構文.
static CStr MakeDefineFilePath(void)
[作成] 定義ファイル名作成.
virtual bool Flush(void)
[操作] フラッシュ.
const CSection operator[](LPCTSTR lpszSectionName) const
[取得] CSection取得
bool DeleteAllSection(void)
[削除] 全セクション削除
CSection operator[](LPCTSTR lpszSectionName)
[取得] CSection取得
void GetKeyTree(CKeyTree &_tree) const
[取得] 全値取得
void GetKeyTree(CStrsTree &_tree) const
[取得] 全値取得
void Execute(IAccessor::CSection §ion)
[実行] 検索開始.
virtual EResult OnFindSection(LPCTSTR lpszSection, IAccessor::CSection &sec, int depth)
[通知] セクション発見.
CDeepAccessFinder(void)
コンストラクタ
virtual size_t GetSize(void) const
[取得] 要素数取得
virtual CPair Get(INDEX index) const
[取得] キーと値を取得.
static CStrT< TYP > BinaryToHexString(const IConstCollectionT< BYTE > &c)
[作成] バイナリ→HEX文字列
static CByteVector HexStringToBinary(const TYP *lpszHex)
[作成] HEX文字列→バイナリ
INT_PTR ReverseFind(TYP t) const
[確認] 検索(後ろから)
bool IsEmpty(void) const
[確認] 空チェック
CStrT Left(size_t iSize) const
[作成] 範囲取得.
void ReleaseBuffer(void)
[操作] 割り当てたバッファを開放.
static CStrT Fmt(const TCHAR *lpszFormat,...)
[作成] 書式付き文字列作成
LONGLONG ToLonglong(INDEX iOffset=0) const
[取得] 数値(LONGLONG)へ変換
TYP * GetBuffer(size_t iLength=0)
[操作] 書き込みバッファ要求.
CStrsTree Refer(LPCTSTR key)
[取得] キー下のTree取得
CTreeT< KEY, VAL, INK > Refer(INK key)
[取得] キー下のTree取得
bool Add(INK key, VAL v)
[追加] キー下の値追加
const VAL & AtSelf(void) const
[取得] 直下の情報の参照
virtual size_t GetSize(void) const
[取得] サイズ取得
virtual bool SetSize(size_t size)
[操作] サイズ指定
virtual const TYP * ReferBuffer(void) const
[取得] データアドレス取得
virtual size_t SetElements(size_t size, const TYP *P=NULL)
[設定] 複数要素設定.
CStrVector EnumKeyNames(void) const
[取得] キー名一覧取得
bool WriteWindowText(LPCTSTR lpszKey, HWND hWnd)
[追加] ウィンドウテキスト情報記録
CStr QueryString(LPCTSTR lpszKey, LPCTSTR lpszDefault=NULL) const
[取得] 文字列情報取得
bool InSubSection(LPCTSTR lpszSubName)
[設定] 対象セクション変更.
CStr GetSectionName(void) const
[取得] セクション名取得
bool CanQuery(void) const
[確認] 参照可能? そのセクションが存在し読み込める、確認できます。
bool WriteDword(LPCTSTR lpszKey, DWORD dwValue)
[追加] 数値情報記録
CVectorT< CValue > QueryVector(void) const
[取得] 配列値取得
bool WriteData(LPCTSTR lpszKey, size_t len, LPCVOID P)
[追加] バイナリ情報記録
CSection(const IAccessor *I, LPCTSTR lpszSectionName)
代入コンストラクタ
bool QueryWindowText(LPCTSTR lpszKey, HWND hWnd, LPCTSTR lpszDefault=NULL) const
[取得] ウィンドウテキスト情報取得
bool WritePluralStrings(LPCTSTR lpszKey, const CStrVector &vs)
[追加] 文字列群情報記録
bool WriteString(LPCTSTR lpszKey, LPCTSTR lpszValue)
[追加] 文字列情報記録
CStrVector QueryPluralStrings(LPCTSTR lpszKey) const
[取得] 文字列群情報取得
const IAccessor * ReferAccessor(void) const
[参照] Accessorインターフェース参照
LONGLONG QueryLonglong(LPCTSTR lpszKey, LONGLONG llDefault=0) const
[取得] 数値情報取得
bool WriteValue(LPCTSTR lpszKey, const CValue &value)
[追加] 情報記録
bool WriteData(LPCTSTR lpszKey, const IConstCollectionT< BYTE > &c)
[追加] バイナリ情報記録
CStrVector EnumSectionNames(void) const
[取得] セクション名一覧取得
bool HasKey(LPCTSTR lpszKey) const
[確認] 情報存在確認
bool DeleteAllKeys(void)
[削除] 全キー削除
CValue QueryValue(LPCTSTR lpszKey) const
[取得] 情報取得
void GetKeyTree(CKeyTree &_tree) const
[取得] 全値取得
bool QueryStruct(LPCTSTR lpszKey, TYP &_t) const
[取得] バイナリ情報取得
void PreviousSubSection(void)
[設定] 対象セクション変更.
CKeyMap GetKeyMap(void) const
[取得] 全値取得
DWORD QueryDword(LPCTSTR lpszKey, DWORD dwDefault=0) const
[取得] 数値情報取得
bool WriteVector(const CVectorT< CValue > &vv)
[追加] 配列値記録
void GetKeyTree(CStrsTree &_tree) const
[取得] 全値取得
bool QuerySerializableData(LPCTSTR lpszKey, ISerializable &_d) const
[取得] シリアライザブルデータ情報取得
bool WriteLonglong(LPCTSTR lpszKey, LONGLONG llValue)
[追加] 数値情報記録
bool WriteStruct(LPCTSTR lpszKey, const TYP &t)
[追加] バイナリ情報記録
bool DeleteKey(LPCTSTR lpszKey)
[削除] 指定キー削除
EKind GetKeyKind(LPCTSTR lpszKey) const
[取得] 情報取種取得
CByteVector QueryData(LPCTSTR lpszKey) const
[取得] バイナリ情報取得
bool WriteSerializableData(LPCTSTR lpszKey, const ISerializable &s)
[追加] シリアライザブルデータ情報記録
CValue(const CStrVector &vstr)
コンストラクタ
CStr QueryString(void) const
[取得] 文字列情報取得
CValue(LPCTSTR lpsz)
コンストラクタ
LONGLONG QueryLonglong(void) const
[取得] 数値情報取得
CValue(LONGLONG ll)
コンストラクタ
CValue(size_t len, LPCVOID P)
コンストラクタ 指定のバイナリを持ったオブジェクトになります。
CByteVector QueryData(void) const
[取得] バイナリ情報取得
DWORD QueryDword(void) const
[取得] 数値情報取得
CValue(const IConstCollectionT< BYTE > &c)
コンストラクタ
CStrVector QueryPluralStrings(void) const
[取得] 文字列群情報取得
EKind GetKind(void) const
[取得] 情報取種取得
bool IsNull(void) const
[確認] 情報有無確認
bool RestoreWindowPlacement(const IAccessor::CSection &sec, HWND hWnd, bool withWindowSize=true, bool withShowHide=false)
ウィンドウの状態を復元.
bool StoreWindowPlacement(IAccessor::CSection &_sec, HWND hWnd)
ウィンドウの状態を保存.
CStr StrVectorToStrEx(const CStrVector &vs, TCHAR sepaChar='^', TCHAR escChar='\\')
[変換] CStrVector → CStr
INT_PTR IndexOf(LPCSTR lpszText, char c, INDEX iFromIndex=0)
[検索] 文字検索(ASCII/SJIS用)
CStr GetComputerName(void)
[取得] PC名取得
size_t GetLen(LPCSTR lpsz)
[計算] 文字列長計算(ASCII/SJIS用)
CStrVector StrToStrVectorEx(LPCTSTR lpsz, TCHAR sepaChar='^', TCHAR escChar='\\')
[変換] CStr → CStrVector
void IgnoreUnusedValue(const T &value)
[宣言] 参照しない値宣言.
void MemCopy(T *_pDst, const void *pSrc, size_t len)
[複製] メモリコピー
virtual CStrVector EnumSectionNames(LPCTSTR lpszSectionName=NULL) const =0
[取得] セクション名一覧取得
virtual CValue QueryValue(LPCTSTR lpszSectionName, LPCTSTR lpszKey) const =0
[取得] 情報取得
virtual EKind GetKeyKind(LPCTSTR lpszSectionName, LPCTSTR lpszKey) const =0
[取得] 情報取種取得
virtual CStrVector EnumKeyNames(LPCTSTR lpszSectionName) const =0
[取得] キー名一覧取得
static CVectorT< IAccessor::CValue > ToValueVector(const CVectorT< TYP > &vt)
[変換] 配列変換.
CTreeT< CStr, CValue, LPCTSTR > CKeyTree
キーと値のツリー型宣言
CMapT< CStr, CValue, LPCTSTR > CKeyMap
キーと値のマップ型宣言
virtual ~IAccessor(void)
デストラクタ
virtual bool Flush(void)=0
[操作] フラッシュ.
virtual CStr GetTypeName(void) const =0
[取得] タイプ名取得
@ EK_Dword
32Bit Unsigned Integer
@ EK_PluralStrings
複数の文字列群
@ EK_Longlong
64Bit Signed Integer
virtual bool DeleteSection(LPCTSTR lpszSectionName)=0
[削除] 指定セクション削除
virtual bool WriteValue(LPCTSTR lpszSectionName, LPCTSTR lpszKey, const IAccessor::CValue &value)=0
[設定] 情報設定
virtual size_t Copy(const IConstCollectionT< TYP > &c)
[設定] コピー.
virtual size_t CopyElements(size_t size, const TYP *P=NULL)
[設定] コピー.
bool IsEmpty(void) const
[確認] 要素の有無確認.
INDEX Find(const IChecker &checker, INDEX startIndex=0, bool boIsReverse=false) const
[検索] 条件一致要素の検索.