![]() ![]() ![]()
|
SophiaFramework 2.2 |
#include <SFUConfig.hpp>
class SFUConfig;
typedef SFUConfig& SFUConfigRef; typedef SFUConfig* SFUConfigPtr; typedef SFUConfig** SFUConfigHandle; typedef const SFUConfig ConstSFUConfig; typedef const SFUConfig& ConstSFUConfigRef; typedef const SFUConfig* ConstSFUConfigPtr; typedef const SFUConfig** ConstSFUConfigHandle;
SFUConfig は、アプリケーションの各種設定を管理するクラスです。 例えば、SFUConfig オブジェクトを使用して、 ユーザー操作で変更されたウィンドウの位置や配色を、設定ファイルとして保存します。 保存した設定ファイルをアプリケーションの再起動時に読み込むことで、 ウィンドウの位置や配色を簡単に復元できます。
アプリケーションの各種設定は、エントリ単位で管理します。 エントリは、タグ (ID) と値から成り立っています。 タグは 0 から 60000 までの範囲の数値で、ユーザーが任意に設定できます。 値には、数値または文字列が設定できます。 SFUConfig オブジェクトは、ヌル文字を含む形で文字列を管理しています。
アプリケーションの各種設定は、設定ファイルとして保存できます。 設定ファイルは、TLV (Tag-Length-Value) 形式で保存されます。 TLV 形式とは、タグと値の長さ、値でデータを管理する形式です。 TLV 形式のデータは、タグの種類によって値の長さを動的に変更できます。
設定ファイルのフォーマットを、以下に図示します。

先頭の 4 バイトには、識別子として "TLV□" (□には、スペースが入ります。) を設定します。 その次の 2 バイトには、ヒント値を設定します。 ヒント値は、設定ファイル中のエントリ数を表す値です。 SFUConfig オブジェクトは設定ファイルを読み込むときに、 ヒント値を参考にしてエントリのリストを作成します。
| コンストラクタ/デストラクタ | ||
|---|---|---|
| public |
SFUConfig | SFUConfig クラスのコンストラクタです。 |
| public |
~SFUConfig | SFUConfig クラスのデストラクタです。 |
| パブリック関数 | ||
|---|---|---|
| public |
GetCount | SFUConfig オブジェクト内のエントリ数を取得します。 |
| public |
GetEntry | SFUConfig オブジェクト中の任意のエントリを取得します。 |
| public |
GetFileName | SFUConfig オブジェクトで管理している設定ファイルの名前 (パス) を取得します。 |
| public |
Load | 指定した設定ファイルをロードします。 |
| public |
Move | SFUConfig オブジェクト内のエントリの位置を移動します。 |
| public |
ReadAnsiString | 指定したタグを含むエントリから、AChar 型の文字列を読み込みます。 |
| public |
ReadBinary | 指定したタグを含むエントリを取得します。 |
| public |
ReadBool | 指定したタグを含むエントリから、Bool 型の値を読み込みます。 |
| public |
ReadDouble | 指定したタグを含むエントリから、SFUDouble 型の値 (浮動小数点値) を読み込みます。 |
| public |
ReadInt | 指定したタグを含むエントリから、4 バイトの整数値を読み込みます。 |
| public |
ReadWideString | 指定したタグを含むエントリから、WChar 型の文字列を読み込みます。 |
| public |
Remove | 指定したエントリを削除します。 |
| public |
RemoveAll | SFUConfig オブジェクト中のすべてのエントリを削除します。 |
| public |
Save | アプリケーションの各種設定を設定ファイルに保存します。 |
| public |
SetFileName | SFUConfig オブジェクトで管理している設定ファイルの名前 (パス) を変更します。 |
| public |
WriteAnsiString | 指定したタグを含むエントリの値に、AChar 型の文字列を書き込みます。 |
| public |
WriteBinary | 指定したタグを含むエントリの値に、バイナリデータを書き込みます。 |
| public |
WriteBool | 指定したタグを含むエントリの値に、Bool 型の値を書き込みます。 |
| public |
WriteDouble | 指定したタグを含むエントリの値に、SFUDouble 型の値 (浮動小数点値) を書き込みます。 |
| public |
WriteInt | 指定したタグを含むエントリの値に、4 バイトの整数値を書き込みます。 |
| public |
WriteWideString | 指定したタグを含むエントリの値に、WChar 型の文字列を書き込みます。 |
[ public ] SFUConfig(Void);
[ public, virtual ] ~SFUConfig(Void);
デストラクタは SFUConfig::RemoveAll を呼び出し、SFUConfig オブジェクト中のエントリをすべて削除します。
[ public ] UInt16 GetCount(Void);
SFUConfig オブジェクト内のエントリ数を返します。
SFUConfig config;
UInt16 entryNum = 0;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// SFUConfig オブジェクト内のエントリ数を取得します。
entryNum = config.GetCount();
[ public ] ConstSFUConfigEntryPtr GetEntry( UInt16 index );
エントリのインデックス番号を指定します。
index で指定されたエントリを指すポインタを返します。
SFUConfig config;
ConstSFUConfigEntryPtr entry;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// SFUConfig オブジェクト中の任意のエントリを取得します。
entry = config.GetEntry(0);
[ public, const ] SFUAnsiString GetFileName(Void);
SFUConfig オブジェクトで管理している設定ファイルの名前を返します。
SFUConfig config;
SFUAnsiString str;
// 設定ファイルをロードします。
config.Load("config.cfg");
// 設定ファイル名を取得します。
str = config.GetFileName();
[ public ] Bool Load( ConstSFUAnsiStringRef fileName // 設定ファイルのパス );
設定ファイルのロードに成功した場合や、 設定ファイルが存在しない場合に、TRUE を返します。 設定ファイルのロードに失敗した場合に、FALSE を返します。
設定ファイルをロードし、設定ファイルの名前を SFUConfig オブジェクトの管理領域に設定します。 SFUConfig オブジェクトで管理している設定ファイルの名前を使用して、 SFUConfig::Save は設定ファイルを作成します。 SFUConfig オブジェクトを使用する場合は、この関数を最初に呼び出してください。 設定ファイルを多重にロードした場合は、最後にロードした設定ファイルの内容が有効となり、 それ以前の設定ファイルの内容は破棄されます。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
移動元のエントリのインデックス番号を指定します。
移動先のエントリのインデックス番号を指定します。
エントリの移動に成功した場合は、TRUE を返します。 エントリの移動に失敗した場合は、FALSE を返します。
移動元のインデックス番号の位置にあるエントリを 移動先のインデックス番号の位置に挿入します。 インデックス番号が範囲外である場合は、この関数は失敗します。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// SFUConfig オブジェクト内のエントリの位置を移動します。
config.Move(2, 1);
[ public ] SFUAnsiString ReadAnsiString( UInt16 tag // タグ ConstSFUAnsiStringRef defaultVal // デフォルト値 );
指定されたタグを含むエントリが SFUConfig オブジェクト中に存在し、 値の長さが 0 バイトでない場合は、その値を返します。 また、値の長さが 0 バイトである場合や、 指定されたタグを含むエントリが存在しない場合は、defaultVal を返します。
指定したタグを含むエントリから、SFUConfig::WriteAnsiString を使用して書き込んだ AChar 型の文字列を読み込みます。 AChar 型の文字列は、ヌル文字を含む形で管理されていますので、 値の長さが 1 バイトの場合は、空文字列 (ヌル文字列) を含む SFUAnsiString オブジェクトを返します。
SFUConfig config;
SFUAnsiString astr;
// 設定ファイルをロードします。
config.Load("config.cfg");
// AChar 型の文字列を書き込みます。
config.WriteAnsiString(100, "Config");
config.WriteAnsiString(101, "Sample");
config.WriteAnsiString(102, "SophiaFramework");
// アプリケーションの各種設定を、
// 設定ファイルとして保存します。
config.Save();
// 設定ファイルをロードします。
config.Load("config.cfg");
// AChar* 型の文字列を読み込みます。
astr = config.ReadAnsiString(100, "Read Config");
[ public ] ConstSFUConfigEntryPtr ReadBinary( UInt16 tag // タグ );
指定されたタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリを指すポインタを返します。 指定されたタグを含むエントリが存在しない場合は、NULL を返します。
SFUConfig config;
ConstSFUConfigEntryPtr entry;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// アプリケーションの各種設定を、
// 設定ファイルとして保存します。
config.Save();
// 設定ファイルをロードします。
config.Load("config.cfg");
// 指定したタグを含むエントリを取得します。
entry = config.ReadBinary(100);
指定されたタグを含むエントリが SFUConfig オブジェクト中に存在し、 そのエントリの値が Bool 型である場合は、その値を返します。 また、そのエントリの値が Bool 型でない場合や、 タグを含むエントリが存在しない場合は、defaultVal を返します。
指定したタグを含むエントリから、SFUConfig::WriteBool を使用して書き込んだ Bool 型の値を読み込みます。
SFUConfig config;
Bool tmpBool;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// アプリケーションの各種設定を、
// 設定ファイルとして保存します。
config.Save();
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を読み込みます。
tmpBool = config.ReadBool(100, FALSE);
指定されたタグを含むエントリが SFUConfig オブジェクト中に存在し、 そのエントリの値が SFUDouble 型である場合は、その値を返します。 また、そのエントリの値が SFUDouble 型でない場合や、 タグを含むエントリが存在しない場合は、defaultVal を返します。
指定したタグを含むエントリから、SFUConfig::WriteDouble を使用して書き込んだ SFUDouble 型の値を読み込みます。
SFUConfig config;
SFUDouble double1(0.12345), double2(0.000000), double3(-1.234);
SFUDouble tmpDouble;
// 設定ファイルをロードします。
config.Load("config.cfg");
// SFUDouble 型の値を書き込みます。
config.WriteDouble(100, double0);
config.WriteDouble(101, double1);
config.WriteDouble(102, double2);
// アプリケーションの各種設定を、
// 設定ファイルとして保存します。
config.Save();
// 設定ファイルをロードします。
config.Load("config.cfg");
// 指定したタグを含むエントリから SFUDouble 型の値を読み込みます。
tmpDouble == config.ReadDouble(100, double1);
指定されたタグを含むエントリが SFUConfig オブジェクト中に存在し、 そのエントリの値が 4 バイトの整数値である場合は、その値を返します。 また、そのエントリの値が 4 バイトの整数値でない場合や、 タグを含むエントリが存在しない場合は、defaultVal を返します。
指定したタグを含むエントリから、SFUConfig::WriteInt を使用して書き込んだ 4 バイトの整数値を読み込みます。
SFUConfig config;
SInt32 tmpInt;
// 設定ファイルをロードします。
config.Load("config.cfg");
// 4 バイトの整数値を書き込みます。
config.WriteInt(100, 0x00000000);
config.WriteInt(101, 0x00005678);
config.WriteInt(102, 0xffffffff);
// アプリケーションの各種設定を、
// 設定ファイルとして保存します。
config.Save();
// 設定ファイルをロードします。
config.Load("config.cfg");
// 4 バイトの値を読み込みます。
tmpInt = config.ReadInt(100, 0x12340000);
[ public ] SFUWideString ReadWideString( UInt16 tag // タグ ConstSFUWideStringRef defaultVal // デフォルト値 );
指定されたタグを含むエントリが SFUConfig オブジェクト中に存在し、 値の長さが 0 バイトでない場合は、その値を返します。 また、値の長さが 0 バイトである場合や、 指定されたタグを含むエントリが存在しない場合は、defaultVal を返します。
指定したタグを含むエントリから、SFUConfig::WriteWideString を使用して書き込んだ WChar 型の文字列を読み込みます。 WChar 型の文字列は、ヌル文字を含む形で管理されていますので、 値の長さが 2 バイトの場合は、空文字列 (ヌル文字列) を含む SFUWideString オブジェクトを返します。
SFUConfig config;
SFUWideString wstr;
// 設定ファイルをロードします。
config.Load("config.cfg");
// WChar* 型の文字列を書き込みます。
config.WriteWideString(100, "Config");
config.WriteWideString(101, "Sample");
config.WriteWideString(102, "SophiaFramework");
// アプリケーションの各種設定を、
// 設定ファイルとして保存します。
config.Save();
// 設定ファイルをロードします。
config.Load("config.cfg");
// WChar 型の文字列を読み込みます。
wstr = config.WriteWideString(100, "Read Config");
エントリの削除に成功した場合は、TRUE を返します。 エントリの削除に失敗した場合は、FALSE を返します。
指定したタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリを削除します。この関数を使用して更新した SFUConfig オブジェクトの内容は、 SFUConfig::Save を呼び出さない限り設定ファイルに反映されません。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// 指定したエントリを削除します。
config.Remove(101);
[ public ] Bool RemoveAll(Void);
エントリの消去に成功した場合は、TRUE を返します。 エントリの消去に失敗した場合は、FALSE を返します。
SFUConfig オブジェクト中の全てのエントリを削除します。 この関数を使用して更新した SFUConfig オブジェクトの内容は、 SFUConfig::Save を呼び出さない限り設定ファイルに反映されません。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// 指定したエントリを削除します。
config.RemoveAll();
[ public ] Bool Save(Void);
保存する必要のない場合や、 保存に成功した場合は、TRUE を返します。 設定ファイルの保存に失敗した場合は、FALSE を返します。
アプリケーションの各種設定を設定ファイルに保存します。 設定ファイルの名前 (パス) は、SFUConfig オブジェクトで管理している名前を使用します。 設定ファイルの名前を変更する場合は、SFUConfig::SetFileName を使用してください。 設定ファイルの内容と SFUConfig オブジェクトの内容が異なる場合に限り、 設定ファイルとして保存します。それ以外の場合は、保存しません。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
// アプリケーションの各種設定を、
// 設定ファイルとして保存します。
config.Save();
[ public ] Void SetFileName( ConstSFUAnsiStringRef fileName // 設定ファイルの名前 );
SFUConfig オブジェクトで管理している設定ファイルの名前を変更します。 SFUConfig オブジェクトで管理している設定ファイルの名前を使用して、 SFUConfig::Save は設定ファイルを作成します。
SFUConfig config;
SFUAnsiString str;
// 設定ファイルをロードします。
config.Load("config.cfg");
// 設定ファイル名を変更します。
config.GetFileName("new-config.cfg");
// 新しい設定ファイルに保存します。
config.Save();
[ public ] Void WriteAnsiString( UInt16 tag // タグ ConstSFUAnsiStringRef string // 文字列 );
指定したタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリの値に AChar 型の文字列を書き込みます。 また、SFUConfig オブジェクト中に指定したタグを含むエントリが存在しない場合は、 新規にエントリを作成し、そのエントリの値に AChar 型の文字列を書き込みます。 string が空文字列 (ヌル文字列) を返す場合は、ヌル文字をエントリの値に書き込みます。 エントリの値に書き込んだ AChar 型の文字列を読み込む場合は、 SFUConfig::ReadAnsiString を使用してください。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// AChar 型の文字列を書き込みます。
config.WriteAnsiString(100, "Config");
config.WriteAnsiString(101, "Sample");
config.WriteAnsiString(102, "SophiaFramework");
[ public ] Void WriteBinary( UInt16 tag // タグ UInt16 length // バイナリデータの長さ ConstVoidPtr value // バイナリデータを指すポインタ );
指定したタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリの値に value で指定したデータを length 分書き込みます。 また、指定したタグを含むエントリが SFUConfig オブジェクト中に存在しない場合は、 新規にエントリを作成し、そのエントリの値に value で指定したデータを length 分書き込みます。
SFUConfig config;
AChar moji[] = {"abcdefghijk"};
// 設定ファイルをロードします。
config.Load("config.cfg");
// バイナリデータを書き込みます。
config.WriteBinary(100, STRLEN(moji), (ConstBytePtr)moji);
指定したタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリの値に Bool 型の値を書き込みます。 また、指定したタグを含むエントリが SFUConfig オブジェクト中に存在しない場合は、 新規にエントリを作成し、そのエントリの値に Bool 型の値を書き込みます。 エントリの値に書き込んだ Bool 型の値を読み込む場合は、 SFUConfig::ReadBool を使用してください。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// Bool 型の値を書き込みます。
config.WriteBool(100, TRUE);
config.WriteBool(101, FALSE);
指定したタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリの値に SFUDouble 型の値を書き込みます。 また、指定したタグを含むエントリが SFUConfig オブジェクト中に存在しない場合は、 新規にエントリを作成し、そのエントリの値に SFUDouble 型の値を書き込みます。 エントリの値に書き込んだ SFUDouble 型の値を読み込む場合は、 SFUConfig::ReadDouble を使用してください。
SFUConfig config;
SFUDouble double1(0.12345), double2(0.000000), double3(-1.234);
// 設定ファイルをロードします。
config.Load("config.cfg");
// SFUDouble 型の値を書き込みます。
config.WriteDouble(100, double0);
config.WriteDouble(101, double1);
config.WriteDouble(102, double2);
指定したタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリの値に 4 バイトの整数値を書き込みます。 また、指定したタグを含むエントリが SFUConfig オブジェクト中に存在しない場合は、 新規にエントリを作成し、そのエントリの値に 4 バイトの整数値を書き込みます。 エントリの値に書き込んだ 4 バイトの整数値を読み込む場合は、 SFUConfig::ReadInt を使用してください。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// 4 バイトの整数値を書き込みます。
config.WriteInt(100, 0x00000000);
config.WriteInt(101, 0x00005678);
config.WriteInt(102, 0xffffffff);
[ public ] Void WriteWideString( UInt16 tag // タグ ConstSFUWideStringRef string // 文字列 );
指定したタグを含むエントリが SFUConfig オブジェクト中に存在する場合は、 そのエントリの値に WChar 型の文字列を書き込みます。 また、指定したタグを含むエントリが SFUConfig オブジェクト中に存在しない場合は、 新規にエントリを作成し、そのエントリの値に WChar 型の文字列を書き込みます。 string が空文字列 (ヌル文字列) を返す場合は、ヌル文字をエントリの値に書き込みます。 エントリの値に書き込んだ WChar 型の文字列を読み込む場合は、 SFUConfig::ReadWideString を使用してください。
SFUConfig config;
// 設定ファイルをロードします。
config.Load("config.cfg");
// WChar* 型の文字列を書き込みます。
config.WriteWideString(100, "Config");
config.WriteWideString(101, "Sample");
config.WriteWideString(102, "SophiaFramework");
| Copyright(C) 2003-2004 Sophia Cradle Inc., All Rights Reserved. |
![]() ![]() ![]()
|