TNB Library
クラス | 公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
IAccessor 構造体abstract

情報アクセスインターフェース. [詳解]

#include <TnbAccessor.h>

+ IAccessor の継承関係図

クラス

class  CSection
 セクション情報アクセスクラス [詳解]
 
class  CValue
 情報アクセスの汎用値保持クラス. [詳解]
 

公開型

typedef CMapT< CStr, CValue, LPCTSTR > CKeyMap
 キーと値のマップ型宣言 [詳解]
 
typedef CTreeT< CStr, CValue, LPCTSTR > CKeyTree
 キーと値のツリー型宣言 [詳解]
 
enum  EKind {
  EK_Nothing = 'n' , EK_String = 's' , EK_PluralStrings = 'p' , EK_Binary = 'b' ,
  EK_Dword = 'd' , EK_Longlong = 'i'
}
 値型の種類. [詳解]
 

公開メンバ関数

virtual bool DeleteSection (LPCTSTR lpszSectionName)=0
 [削除] 指定セクション削除 [詳解]
 
virtual CStrVector EnumKeyNames (LPCTSTR lpszSectionName) const =0
 [取得] キー名一覧取得 [詳解]
 
virtual CStrVector EnumSectionNames (LPCTSTR lpszSectionName=NULL) const =0
 [取得] セクション名一覧取得 [詳解]
 
virtual bool Flush (void)=0
 [操作] フラッシュ. [詳解]
 
virtual EKind GetKeyKind (LPCTSTR lpszSectionName, LPCTSTR lpszKey) const =0
 [取得] 情報取種取得 [詳解]
 
virtual CStr GetTypeName (void) const =0
 [取得] タイプ名取得 [詳解]
 
virtual CValue QueryValue (LPCTSTR lpszSectionName, LPCTSTR lpszKey) const =0
 [取得] 情報取得 [詳解]
 
virtual bool WriteValue (LPCTSTR lpszSectionName, LPCTSTR lpszKey, const IAccessor::CValue &value)=0
 [設定] 情報設定 [詳解]
 
virtual ~IAccessor (void)
 デストラクタ [詳解]
 

静的公開メンバ関数

template<typename TYP >
static CVectorT< IAccessor::CValueToValueVector (const CVectorT< TYP > &vt)
 [変換] 配列変換. [詳解]
 

詳解

情報アクセスインターフェース.

セクションで区切られた中に複数のキーと値を持つ形の情報を管理するインターフェースです。

コンストラクタなどで情報のベースを指定し、
operator[]() で セクション情報アクセスクラス({@link IAccessor::CSection CSection})を取得し、
Query〜() 、 Write〜() などでキー情報にアクセスします。
覚え書き
本インターフェースにも QueryValue() , WriteValue() など、 セクションを指定しキー情報を操作するメソッドもありますが、 基本的に CSection を使用してください。
使用例

    CInifileAccessor ini;
    CInifileAccessor::CSection sec1 = ini["SEC1"];
    CInifileAccessor::CSection sec2 = ini["SEC2"];
    sec1.WriteString("KEY1", "VALUE1"); //セクション[SEC1]のキー[KEY1]に"VALUE1"を代入      
    sec1.WriteString("KEY2", "VALUE2"); //同セクションにキー[KEY1]に"VALUE1"を代入
    sec2.WriteString("KEY9", "VALUE9"); //セクション[SEC2]のキー[KEY9]に"VALUE9"を代入  
            ;
        CStrVector vs = sec1.EnumKeyNames(); //セクション[SEC1]下のキー名を全取得
    
参照
SetExceptionMode() により、情報がない時や情報の型が異なる時、 CNoSuchTypeExceptionCEmptyException をスローさせることが出来ます。 設定していない時はスローしません。
必要ファイル
TnbAccessor.h
日付
06/05/12 新規作成
06/06/08 メンバ名変更。 CSection クラス、追加。
06/10/31 メンバ改修。キーアクセス関係を CSection クラスに移動。
08/04/04 数値に変換時、EMPTY文字なら Defaultを返すようにした。

TnbAccessor.h73 行目に定義があります。

型定義メンバ詳解

◆ CKeyMap

typedef CMapT<CStr, CValue, LPCTSTR> CKeyMap

キーと値のマップ型宣言

TnbAccessor.h266 行目に定義があります。

◆ CKeyTree

typedef CTreeT<CStr, CValue, LPCTSTR> CKeyTree

キーと値のツリー型宣言

TnbAccessor.h269 行目に定義があります。

列挙型メンバ詳解

◆ EKind

enum EKind

値型の種類.

IAccessorIAccessor::CValue で使う型の種類です。

列挙値
EK_Nothing 

存在しない

EK_String 

文字列

EK_PluralStrings 

複数の文字列群

EK_Binary 

バイナリ

EK_Dword 

32Bit Unsigned Integer

EK_Longlong 

64Bit Signed Integer

TnbAccessor.h79 行目に定義があります。

構築子と解体子

◆ ~IAccessor()

virtual ~IAccessor ( void  )
virtual

デストラクタ

TnbAccessor.h867 行目に定義があります。

関数詳解

◆ DeleteSection()

virtual bool DeleteSection ( LPCTSTR  lpszSectionName)
pure virtual

[削除] 指定セクション削除

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

CDummyAccessor, CInifileAccessor, CRegistryAccessor, CTemporaryAccessor, CXmlAccessorで実装されています。

◆ EnumKeyNames()

virtual CStrVector EnumKeyNames ( LPCTSTR  lpszSectionName) const
pure virtual

[取得] キー名一覧取得

引数
lpszSectionNameセクション名
戻り値
名前一覧。無効状態なら未対応。

CDummyAccessor, CExInifileAccessor, CInifileAccessor, CRegistryAccessor, CTemporaryAccessor, CXmlAccessorで実装されています。

◆ EnumSectionNames()

virtual CStrVector EnumSectionNames ( LPCTSTR  lpszSectionName = NULL) const
pure virtual

[取得] セクション名一覧取得

引数
lpszSectionNameセクション名。 NULLを指定すると、ROOTのセクション一覧が得られます。
戻り値
セクション名一覧

CDummyAccessor, CInifileAccessor, CRegistryAccessor, CTemporaryAccessor, CXmlAccessorで実装されています。

◆ Flush()

virtual bool Flush ( void  )
pure virtual

[操作] フラッシュ.

覚え書き
Writeした情報を確定させます(Subクラスにより動作がことなります。)。
戻り値
true成功
false失敗

CAbstractAccessor, CCeInifileAccessor, CCipherableFileAccessor, CDummyAccessor, CInifileAccessor, CInifileTextAccessor, CRegistryAccessor, CTemporaryAccessor, CXmlAccessor, CXmlFileAccessorで実装されています。

◆ GetKeyKind()

virtual EKind GetKeyKind ( LPCTSTR  lpszSectionName,
LPCTSTR  lpszKey 
) const
pure virtual

[取得] 情報取種取得

引数
lpszSectionNameセクション名
lpszKeyキー名
戻り値
情報種。キーが存在しない場合、EK_Nothing になります。

CDummyAccessor, CExInifileAccessor, CInifileAccessor, CRegistryAccessor, CTemporaryAccessor, CXmlAccessorで実装されています。

◆ GetTypeName()

virtual CStr GetTypeName ( void  ) const
pure virtual

◆ QueryValue()

virtual CValue QueryValue ( LPCTSTR  lpszSectionName,
LPCTSTR  lpszKey 
) const
pure virtual

[取得] 情報取得

引数
lpszSectionNameセクション名
lpszKeyキー名
戻り値
キーの値

CDummyAccessor, CExInifileAccessor, CInifileAccessor, CRegistryAccessor, CTemporaryAccessor, CXmlAccessorで実装されています。

◆ ToValueVector()

static CVectorT< IAccessor::CValue > ToValueVector ( const CVectorT< TYP > &  vt)
static

[変換] 配列変換.

IAccessor::CValue の配列に変換します。

引数
vt配列
戻り値
IAccessor::CValue の配列

TnbAccessor.h940 行目に定義があります。

◆ WriteValue()

virtual bool WriteValue ( LPCTSTR  lpszSectionName,
LPCTSTR  lpszKey,
const IAccessor::CValue value 
)
pure virtual

[設定] 情報設定

引数
lpszSectionNameセクション名
lpszKeyキー名
value設定する値。EK_Nothing の場合、キーを削除します。
戻り値
true成功
false失敗

CDummyAccessor, CExInifileAccessor, CInifileAccessor, CRegistryAccessor, CTemporaryAccessor, CXmlAccessorで実装されています。