TNB Library
クラス | 公開型 | 公開メンバ関数 | 限定公開メンバ関数 | 全メンバ一覧
CMutualAccessor クラス

情報相互アクセスクラス [詳解]

#include <TnbMutualAccessor.h>

クラス

class  CSubSection
 情報相互アクセスサブセクションクラス [詳解]
 
struct  IWorker
 情報相互アクセスのワーカーインターフェース [詳解]
 

公開型

enum  EMode { QUERY , WRITE }
 モード [詳解]
 

公開メンバ関数

 CMutualAccessor (IAccessor *pAccessor, EMode mode=QUERY)
 コンストラクタ [詳解]
 
 CMutualAccessor (IAccessor::CSection &sec, EMode mode=QUERY)
 コンストラクタ [詳解]
 
bool InSubSection (LPCTSTR lpszSection)
 [設定] 対象セクション変更. [詳解]
 
bool IsQueryMode (void) const
 [確認] モード確認 [詳解]
 
bool IsWriteMode (void) const
 [確認] モード確認 [詳解]
 
IAccessor::CSectionoperator-> (void)
 [参照] CSection 参照. [詳解]
 
void PreviousSubSection (void)
 [設定] 対象セクション変更. [詳解]
 
bool Works (LPCTSTR lpszKey, bool &_boValue, bool def=false)
 [処理] bool 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, BYTE &_bValue, BYTE def=0)
 [処理] BYTE 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, CButton &button, int def=BST_UNCHECKED)
 [処理] ボタン情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, CComboBox &comboBox, int def=0)
 [処理] コンボボックス情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, CStr &_strValue, LPCTSTR def=NULL)
 [処理] 文字列情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, CString &_strValue, LPCTSTR def=NULL)
 [処理] 文字列情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, double &_value, double def=0.0)
 [処理] LONGLONG 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, DWORD &_dwValue, const CStrVector &vs, DWORD def=0)
 [処理] DWORD 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, DWORD &_dwValue, DWORD def=0)
 [処理] DWORD 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, HWND hWnd, LPCTSTR def=NULL)
 [処理] ウィンドウテキスト情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, ICollectionT< BYTE > &_c)
 [処理] コレクション情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, int &_iValue, int def=0)
 [処理] int 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, ISerializable &_s)
 [処理] シリアライザブル情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, IWorker &_worker)
 [処理] ワーカー情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, long &_lValue, long def=0)
 [処理] long 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, LONGLONG &_llValue, LONGLONG def=0)
 [処理] LONGLONG 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, short &_value, short def=0)
 [処理] short 情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, size_t size, LPVOID P)
 [処理] レガシー構造体情報処理. [詳解]
 
bool Works (LPCTSTR lpszKey, WORD &_wValue, WORD def=0)
 [処理] WORD 情報処理. [詳解]
 

限定公開メンバ関数

virtual void OnFalse (void) const
 [通知] 各処理失敗通知. [詳解]
 

詳解

情報相互アクセスクラス

IAccessor を持つクラスのアクセス補助クラスです。

IAccessor へのアクセス(Query / Write)を行う変数と管理用のキーを
一元に管理することが出来るようになります。
使用例
    void CFoo::Init(void)
    {
        CInifileAccessor ini;
        CMutualAccessor a(&ini, CMutualAccessor::QUERY);
        BackupRestore(a);
    }

    void CFoo::Exit(void)
    {
        CInifileAccessor ini;
        CMutualAccessor a(&ini, CMutualAccessor::WRITE);
        BackupRestore(a);
    }

    bool CFoo::BuckupRestore(CMutualAccessor& _a)
    {
        CMutualAccessor::CSubSection sub(&_a, _T("Settings"));
        //
        bool r = _a.Works("DeviceNumber", m_wDeviceNumber, 1);
        r &= _a.Works("ModelNo", m_wModelNo, 3);
        r &= _a.Works("HardVersion", m_wHardVersion, 3);
        //
        CStrVector vs;
        vs.Add("NoConnect");
        vs.Add("Connect");
        r &= _a.Works("Mode", m_dwMode, vs, 0);
        return r;
    }

    
必要ファイル
TnbMutualAccessor.h
日付
08/04/01 新規作成
08/04/15 OnFalse() 追加。 CSubSectionクラス 追加。
10/01/15 構造更新。
11/02/11 double にも対応。

TnbMutualAccessor.h71 行目に定義があります。

列挙型メンバ詳解

◆ EMode

enum EMode

モード

列挙値
QUERY 

QUERYモード

WRITE 

WRITEモード

TnbMutualAccessor.h152 行目に定義があります。

構築子と解体子

◆ CMutualAccessor() [1/2]

CMutualAccessor ( IAccessor pAccessor,
EMode  mode = QUERY 
)

コンストラクタ

引数
pAccessorIAccessor のポインタ。 NULL は指定できません。
mode本インスタンスのモード。 省略か QUERY なら QUERYモード、 WRITE ならWRITEモードを指定。

TnbMutualAccessor.h163 行目に定義があります。

◆ CMutualAccessor() [2/2]

コンストラクタ

引数
secセクション。
mode本インスタンスのモード。 省略か QUERY なら QUERYモード、 WRITE ならWRITEモードを指定。

TnbMutualAccessor.h173 行目に定義があります。

関数詳解

◆ InSubSection()

bool InSubSection ( LPCTSTR  lpszSection)

[設定] 対象セクション変更.

指定のサブセクションを追加し、取得対象をそのセクション内にします。

引数
lpszSectionセクション名
戻り値
true成功
false失敗

TnbMutualAccessor.h185 行目に定義があります。

◆ IsQueryMode()

bool IsQueryMode ( void  ) const

[確認] モード確認

戻り値
trueQUERYモード
falseWRITEモード

TnbMutualAccessor.h205 行目に定義があります。

◆ IsWriteMode()

bool IsWriteMode ( void  ) const

[確認] モード確認

戻り値
falseQUERYモード
trueWRITEモード

TnbMutualAccessor.h215 行目に定義があります。

◆ OnFalse()

virtual void OnFalse ( void  ) const
protectedvirtual

[通知] 各処理失敗通知.

覚え書き
各処理が失敗した時に通知されます。このメソッドを継承して Throw するなど、処理を変更できます。
本クラスでは、何もしません。

TnbMutualAccessor.h648 行目に定義があります。

◆ operator->()

IAccessor::CSection * operator-> ( void  )

[参照] CSection 参照.

覚え書き
本クラスが使用している CSection を参照します。 Works() メソッドだけでは処理できない場合、モードを確認して本メソッドを使って、処理が可能です。
戻り値
CSection 。

TnbMutualAccessor.h226 行目に定義があります。

◆ PreviousSubSection()

void PreviousSubSection ( void  )

[設定] 対象セクション変更.

取得対象を一つ上のセクション内ににします。

覚え書き
IsSubSection() と対になるように使用します。

TnbMutualAccessor.h195 行目に定義があります。

◆ Works() [1/19]

bool Works ( LPCTSTR  lpszKey,
bool &  _boValue,
bool  def = false 
)

[処理] bool 情報処理.

bool 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_boValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 QUERYモードの時は、値が不明文字列の場合( _boValue は def が入ります)。
WRITEモードの場合は書込みに失敗した時。

TnbMutualAccessor.h241 行目に定義があります。

◆ Works() [2/19]

bool Works ( LPCTSTR  lpszKey,
BYTE &  _bValue,
BYTE  def = 0 
)

[処理] BYTE 情報処理.

BYTE 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_bValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h261 行目に定義があります。

◆ Works() [3/19]

bool Works ( LPCTSTR  lpszKey,
CButton button,
int  def = BST_UNCHECKED 
)

[処理] ボタン情報処理.

ボタン情報を Query / Write します。ボタンは通常「チェックボックス」のものを使います。

引数
[in]lpszKeyキー。
[in,out]buttonボタン。QUERYモードなら取得した値でボタン状態を設定。WRITEモードならボタン状態をインデックスを書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値をボタン状態とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h630 行目に定義があります。

◆ Works() [4/19]

bool Works ( LPCTSTR  lpszKey,
CComboBox &  comboBox,
int  def = 0 
)

[処理] コンボボックス情報処理.

コンボボックス情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]comboBoxコンボボックス。QUERYモードなら取得したインデックスでコンボボックスを選択。WRITEモードなら選択されているインデックスを書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値をインデックスとします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h611 行目に定義があります。

◆ Works() [5/19]

bool Works ( LPCTSTR  lpszKey,
CStr _strValue,
LPCTSTR  def = NULL 
)

[処理] 文字列情報処理.

文字列情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_strValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h424 行目に定義があります。

◆ Works() [6/19]

bool Works ( LPCTSTR  lpszKey,
CString &  _strValue,
LPCTSTR  def = NULL 
)

[処理] 文字列情報処理.

文字列情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_strValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h572 行目に定義があります。

◆ Works() [7/19]

bool Works ( LPCTSTR  lpszKey,
double &  _value,
double  def = 0.0 
)

[処理] LONGLONG 情報処理.

LONGLONG 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_value値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h399 行目に定義があります。

◆ Works() [8/19]

bool Works ( LPCTSTR  lpszKey,
DWORD &  _dwValue,
const CStrVector vs,
DWORD  def = 0 
)

[処理] DWORD 情報処理.

DWORD 情報をQuery / Write します。その際、値と対になる文字列配列を使って、情報を管理します。

引数
[in]lpszKeyキー。
[in,out]_dwValue値。QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]vs値を対になる文字列配列。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 QUERYモードの時は、値が不明文字列の場合( _dwValue は def が入ります)。
WRITEモードの場合は書込みに失敗した時。

TnbMutualAccessor.h522 行目に定義があります。

◆ Works() [9/19]

bool Works ( LPCTSTR  lpszKey,
DWORD &  _dwValue,
DWORD  def = 0 
)

[処理] DWORD 情報処理.

DWORD 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_dwValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h321 行目に定義があります。

◆ Works() [10/19]

bool Works ( LPCTSTR  lpszKey,
HWND  hWnd,
LPCTSTR  def = NULL 
)

[処理] ウィンドウテキスト情報処理.

ウィンドウテキスト情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]hWndウィンドウハンドル。QUERYモードなら取得したテキストをこのウィンドウに設定。WRITEモードならこのウィンドウのテキストを書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h592 行目に定義があります。

◆ Works() [11/19]

bool Works ( LPCTSTR  lpszKey,
ICollectionT< BYTE > &  _c 
)

[処理] コレクション情報処理.

コレクション情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_c値。 QUERYモードなら取得した情報をこれに格納。WRITEモードならこの情報を書込み。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h466 行目に定義があります。

◆ Works() [12/19]

bool Works ( LPCTSTR  lpszKey,
int &  _iValue,
int  def = 0 
)

[処理] int 情報処理.

int 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_iValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h340 行目に定義があります。

◆ Works() [13/19]

bool Works ( LPCTSTR  lpszKey,
ISerializable _s 
)

[処理] シリアライザブル情報処理.

シリアライザブル情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_s値。 QUERYモードなら取得した情報をこれに格納。WRITEモードならこの情報を書込み。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h485 行目に定義があります。

◆ Works() [14/19]

bool Works ( LPCTSTR  lpszKey,
IWorker _worker 
)

[処理] ワーカー情報処理.

ワーカー情報をQuery / Write します。

引数
[in]lpszKeyキー。
[in,out]_workerワーカー。
戻り値
true成功。
false失敗。WRITEモードの場合は書込みに失敗した時。

TnbMutualAccessor.h556 行目に定義があります。

◆ Works() [15/19]

bool Works ( LPCTSTR  lpszKey,
long &  _lValue,
long  def = 0 
)

[処理] long 情報処理.

long 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_lValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h360 行目に定義があります。

◆ Works() [16/19]

bool Works ( LPCTSTR  lpszKey,
LONGLONG &  _llValue,
LONGLONG  def = 0 
)

[処理] LONGLONG 情報処理.

LONGLONG 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_llValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h380 行目に定義があります。

◆ Works() [17/19]

bool Works ( LPCTSTR  lpszKey,
short &  _value,
short  def = 0 
)

[処理] short 情報処理.

short 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_value値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h301 行目に定義があります。

◆ Works() [18/19]

bool Works ( LPCTSTR  lpszKey,
size_t  size,
LPVOID  P 
)

[処理] レガシー構造体情報処理.

構造体を Query / Write します。

引数
[in]lpszKeyキー。
[in]sizeP のバッファサイズ。
[in,out]P値。 QUERYモードなら取得した情報をこれに格納。WRITEモードならこの情報を書込み。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h443 行目に定義があります。

◆ Works() [19/19]

bool Works ( LPCTSTR  lpszKey,
WORD &  _wValue,
WORD  def = 0 
)

[処理] WORD 情報処理.

WORD 情報を Query / Write します。

引数
[in]lpszKeyキー。
[in,out]_wValue値。 QUERYモードなら取得した値をこれに格納。WRITEモードならこの値を書込み。
[in]defQUERYモードのみ使用。指定のキーがない場合、この値が戻り値とします。
戻り値
true成功。
false失敗。 WRITEモードの場合は書込みに失敗した時(QUERYモードは失敗はありません)。

TnbMutualAccessor.h281 行目に定義があります。