メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ

クラス RTC::Properties

#include <Properties.h>

すべてのメンバ一覧

Public メソッド

 Properties ()
 コンストラクタ
 Properties (const std::map< std::string, std::string > &defaults)
 コンストラクタ
 Properties (const char *defaults[], long num=LONG_MAX)
 コンストラクタ
virtual ~Properties ()
 デストラクタ
std::string getProperty (const std::string &key) const
 指定されたキーを持つプロパティを、プロパティリストから探す
std::string getProperty (const std::string &key, const std::string &defaultValue) const
 指定されたキーを持つプロパティを、プロパティリストから探す。
void list (std::ostream &out)
 指定された出力ストリームに、プロパティリストを出力する
void load (std::istream &inStream)
 入力ストリームからキーと要素が対になったプロパティリストを読み込む.
std::vector< std::string > propertyNames ()
 プロパティのキーのリストを vector で返す
void save (std::ostream &out, const std::string &header)
 プロパティリストを指定されたストリームに保存する
std::string setProperty (const std::string &key, const std::string &value)
 Properties に value を key について登録する.
void store (std::ostream &out, const std::string &header)
 プロパティリストを出力ストリームへ保存する

Protected 型

typedef std::map< std::string,
std::string >::iterator 
Itr

Protected メソッド

void splitKeyValue (const std::string &str, std::string &key, std::string &value)

Protected 変数

std::map< std::string, std::string > m_defaults


説明

Properties クラスは、不変のプロパティセットを表す。Properties をストリーム に保管したり、ストリームからロードしたりすることができる。 プロパティリストの各キー、およびそれに対応する値は文字列となっている。

プロパティリストには、その「デフォルト値」として別のプロパティリストを持つ ことができる。元のプロパティリストでプロパティキーが見つからないと、この 2番目のプロパティリストが検索される。

Properties は std::map<std::string, std:string> を継承するので、std::map が持つメソッドを適用することができる。しかし、これらのメソッドを使用する ことは推奨されない。 プロパティの取得には getProperty、プロパティのセットには setProperty と いったメソッドを使用することが推奨される。

プロパティをストリームに保存するとき、またはストリームからロードするときに、 ISO 8859-1 文字エンコーディングが使用される。このエンコーディングに直接表示 できない文字は、扱うことができない。

このクラスは、Java の Properties クラス (java.util.Properties) とほぼ同様の メソッドを持つ。また、入出力されるファイルは Java の Properties クラスが 出力するものと互換性があるが、Unicode を含むものは扱うことができない。


型定義

typedef std::map<std::string, std::string>::iterator RTC::Properties::Itr [protected]
 


コンストラクタとデストラクタ

RTC::Properties::Properties  )  [inline]
 

コンストラクタ

デフォルト値を持たない空のプロパティリストを作成する。

RTC::Properties::Properties const std::map< std::string, std::string > &  defaults  ) 
 

コンストラクタ

指定されたデフォルト値を持つ空のプロパティリストを作成する。

RTC::Properties::Properties const char *  defaults[],
long  num = LONG_MAX
 

コンストラクタ

指定されたデフォルト値を持つ空のプロパティリストを作成する。 デフォルト値は char* の配列により与えられ、key と value の対になっており、 リストの終端は配列の数を表す引数 num か、空文字の key で与えらられなければ ならない。 以下に例を示す。

const char* defaults = { "key1", "value1", "key2", "value2", "key3", "value3", "key4", "value4", "key5", "value5", "" }; Properties p(defaults); // もしくは Properties p(defaults, 10);

virtual RTC::Properties::~Properties  )  [virtual]
 

デストラクタ


関数

std::string RTC::Properties::getProperty const std::string &  key,
const std::string &  defaultValue
const
 

指定されたキーを持つプロパティを、プロパティリストから探す。

指定されたキーを持つプロパティを、プロパティリストから探す。 そのキーがプロパティリストにないと、デフォルトのプロパティリスト、 さらにそのデフォルト値が繰り返し調べられる。 そのプロパティが見つからない場合は、デフォルト値の引数が返される。

引数:
key プロパティキー
defaultValue デフォルト値
戻り値:
指定されたキー値を持つこのプロパティリストの値

std::string RTC::Properties::getProperty const std::string &  key  )  const
 

指定されたキーを持つプロパティを、プロパティリストから探す

指定されたキーを持つプロパティを、プロパティリストから探す。 そのキーがプロパティリストにないと、デフォルトのプロパティリスト、 さらにそのデフォルト値が繰り返し調べられる。 そのプロパティが見つからない場合は、null が返される。

引数:
key プロパティキー
戻り値:
指定されたキー値を持つこのプロパティリストの値

void RTC::Properties::list std::ostream &  out  ) 
 

指定された出力ストリームに、プロパティリストを出力する

指定された出力ストリームに、プロパティリストを出力する。 このメソッドは主にデバッグに用いられる。

引数:
out 出力ストリーム

void RTC::Properties::load std::istream &  inStream  ) 
 

入力ストリームからキーと要素が対になったプロパティリストを読み込む.

入力ストリームからキーと要素が対になったプロパティリストを読み込む。 ストリームは、ISO 8859-1 文字エンコーディングを使用しているとみなされる。 各プロパティは、入力ストリームに行単位で登録されているものとみなされ、 各行は行区切り文字 (
、、または
) で終わる。 入力ストリームから読み込んだ行は、入力ストリームでファイルの終わりに 達するまで処理される。

空白文字だけの行、または最初の非空白文字が ASCII 文字 # または ! である 行は無視される。つまり、# または ! はコメント行を示す。

空白行またはコメント行以外のすべての行は、テーブルに追加されるプロパティ を記述する。ただし、行の終わりが \ の場合は、次の行があれば継続行として 扱われます (下記を参照)。 キーは、最初の非空白文字から、最初の ASCII 文字 =、:、または空白文字の直前までの、行内のすべての文字から構成される。

キーの終わりを示す文字は、前に \ を付けることによりキーに含めることも できる。キーの後ろの空白はすべてスキップされる。 キーの後ろの最初の非空白文字が = または : である場合は、これらのキーは 無視され、そのあとの空白文字もすべてスキップされる。 行内のそれ以外の文字はすべて、関連した要素文字列の一部となる。 要素文字列内では、ASCII エスケープシーケンス 、
、、\、\"、\'、 \ (円記号とスペース)、および は認識され、単独の文字に変換される。 また、行の最後の文字が \ である場合は、次の行は現在の行の継続として 扱われる。その場合、\ と行区切り文字が破棄され、継続行の先頭に空白が あればそれもすべて破棄され、要素文字列の一部にはならない。

たとえば、次の 4 行はそれぞれキー Truth と、関連した要素値 Beauty を表す。

Truth = Beauty
Truth:Beauty
Truth :Beauty

また、次の 3 行は 1 つのプロパティを表す。

fruits apple, banana, pear, \
cantaloupe, watermelon, \
kiwi, mango
キーは fruits で、次の要素に関連付けれられる。 "apple, banana, pear, cantaloupe, watermelon, kiwi, mango" 最終的な結果でコンマのあとに必ずスペースが表示されるように、 各 \ の前にスペースがある。行の終わりを示す \ と、継続行の先頭にある 空白は破棄され、他の文字に置換されない。 また、次の 3 番目の例では、キーが cheeses で、関連した要素が空の文字列 であることを表す。

cheeses
キーは、cheeses で、関連要素は空の文字列であることを指定している。

引数:
inStream 入力ストリーム

std::vector<std::string> RTC::Properties::propertyNames  ) 
 

プロパティのキーのリストを vector で返す

メインプロパティリストに同じ名前のキーが見つからない場合は、デフォルトの プロパティリストにある個別のキーを含む、このプロパティリストにあるすべて のキーのリストを返します。

戻り値:
プロパティリストにあるすべてのキーのリスト。 デフォルトのプロパティリストにあるキーを含む

void RTC::Properties::save std::ostream &  out,
const std::string &  header
 

プロパティリストを指定されたストリームに保存する

推奨されていません。プロパティリストの保存方法としては、 store(ostream out, string header) メソッドの使用が推奨される。 このメソッドは Java Properties との互換性のために定義されている。

引数:
out 出力ストリーム
header プロパティリストの記述

std::string RTC::Properties::setProperty const std::string &  key,
const std::string &  value
 

Properties に value を key について登録する.

Properties に value を key について登録する。 すでに key に対する値を持っている場合、戻り値に古い値を返す。

引数:
key プロパティリストに配置されるキー
value key に対応する値
戻り値:
プロパティリストの指定されたキーの前の値。それがない場合は null

void RTC::Properties::splitKeyValue const std::string &  str,
std::string &  key,
std::string &  value
[protected]
 

void RTC::Properties::store std::ostream &  out,
const std::string &  header
 

プロパティリストを出力ストリームへ保存する

Properties テーブル内のプロパティリスト (キーと要素のペア) を、load メソッドを使って Properties テーブルにロードするのに適切なフォーマットで 出力ストリームに書き込みます。

Properties テーブル内のプロパティリスト (キーと要素のペア) を、load メソッドを使って Properties テーブルにロードするのに適切なフォーマットで 出力ストリームに書き込みます。ストリームは、ISO 8859-1 文字 エンコーディングを使用して書き込まれます。 Properties テーブル (存在する場合) のデフォルトテーブルからの プロパティは、このメソッドによっては書き込まれません。

header 引数が null でない場合は、ASCII 文字の #、header の文字列、 および行区切り文字が最初に出力ストリームに書き込まれます。このため、 header は識別コメントとして使うことができます。

次に、ASCII 文字の #、現在の日時 (Date の toString メソッドによって 現在時刻が生成されるのと同様)、および Writer によって生成される行区切り からなるコメント行が書き込まれます。

続いて、Properties テーブル内のすべてのエントリが 1 行ずつ書き出されます。 各エントリのキー文字列、ASCII 文字の =、関連した要素文字列が書き込まれま す。要素文字列の各文字は、エスケープシーケンスとして描画する必要があるか どうか確認されます。ASCII 文字の \、タブ、改行、および復帰はそれぞれ \、 、
、および として書き込まれます。 より小さい文字および より大きい文字は、対応する 16 進値 xxxx を使って として書き 込まれます。埋め込み空白文字でも後書き空白文字でもない先行空白文字は、 前に \ を付けて書き込まれます。キーと値の文字 #、!、=、および : は、 必ず正しくロードされるように、前にスラッシュを付けて書き込まれます。

エントリが書き込まれたあとで、出力ストリームがフラッシュされます。 出力ストリームはこのメソッドから復帰したあとも開いたままです。


変数

std::map<std::string, std::string> RTC::Properties::m_defaults [protected]
 


このクラスの説明は次のファイルから生成されました:
OpenRTMに対してMon Jan 15 12:14:49 2007に生成されました。  doxygen 1.4.1