OpenRTM-aist  1.2.1
Properties.h
[詳解]
1 // -*- C++ -*-
20 #ifndef COIL_PROPERTIES_H
21 #define COIL_PROPERTIES_H
22 
23 
24 #include <string>
25 #include <vector>
26 #include <map>
27 #include <climits>
28 
29 
45 namespace coil
46 {
102  {
103  public:
127  Properties(const char* key = "", const char* value = "");
128 
150  Properties(std::map<std::string, std::string>& defaults);
151 
210  Properties(const char* defaults[], long num = LONG_MAX);
211 
228  Properties(const Properties& prop);
229 
247  Properties& operator=(const Properties& prop);
248 
260  virtual ~Properties(void);
261 
262  //============================================================
263  // public functions
264  //============================================================
265 
283  inline const char* getName(void) const {return name.c_str();}
284 
302  inline const char* getValue(void) const {return value.c_str();}
303 
321  inline const char* getDefaultValue(void) const {return default_value.c_str();}
322 
340  inline const std::vector<Properties*>& getLeaf(void) const {return leaf;}
341 
359  inline const Properties* getRoot(void) const {return root;}
360 
390  const std::string& getProperty(const std::string& key) const;
391 
420  const std::string& getProperty(const std::string& key,
421  const std::string& def) const;
422 
451  const std::string& operator[](const std::string& key) const;
452 
485  std::string& operator[](const std::string& key);
486 
511  const std::string& getDefault(const std::string& key) const;
512 
541  std::string setProperty(const std::string& key, const std::string& value);
542 
566  std::string setDefault(const std::string& key, const std::string& value);
567 
595  void setDefaults(const char* defaults[], long num = LONG_MAX);
596 
597  //============================================================
598  // load and save functions
599  //============================================================
621  void list(std::ostream& out);
622 
749  void load(std::istream& inStream);
750 
776  void save(std::ostream& out, const std::string& header);
777 
860  void store(std::ostream& out, const std::string& header);
861 
862  //============================================================
863  // other util functions
864  //============================================================
890  std::vector<std::string> propertyNames(void) const;
891 
909  int size(void) const;
910 
933  Properties* const findNode(const std::string& key) const;
956  Properties& getNode(const std::string& key);
957 
984  bool createNode(const std::string& key);
985 
1009  Properties* removeNode(const char* leaf_name);
1010 
1034  Properties* hasKey(const char* key) const;
1035 
1043  void clear(void);
1044 
1066  Properties& operator<<(const Properties& prop);
1067 
1068  protected:
1105  static void splitKeyValue(const std::string& str, std::string& key,
1106  std::string& value);
1107 
1139  static bool split(const std::string& str, const char delim,
1140  std::vector<std::string>& value);
1141 
1174  static Properties* _getNode(std::vector<std::string>& keys,
1175  std::vector<Properties*>::size_type index,
1176  const Properties* curr);
1177 
1199  static void _propertiyNames(std::vector<std::string>& names,
1200  std::string curr_name,
1201  const Properties* curr);
1202 
1224  static void _store(std::ostream& out, std::string curr_name,
1225  Properties* curr);
1226 
1254  static std::ostream& _dump(std::ostream& out, const Properties& curr,
1255  int index);
1256 
1280  static std::string indent(int index);
1281 
1282  private:
1283  std::string name;
1284  std::string value;
1285  std::string default_value;
1286  Properties* root;
1287  std::vector<Properties*> leaf;
1288  const std::string m_empty;
1289 
1313  friend std::ostream& operator<<(std::ostream& lhs, const Properties& rhs);
1314 
1315  }; // class Properties
1316 }; // namespace coil
1317 #endif // COIL_PROPERTIES_H
1318 
const std::vector< Properties * > & getLeaf(void) const
子要素の取得
Definition: Properties.h:340
Properties & operator=(const Properties &prop)
代入演算子
const char * getName(void) const
Name の取得
Definition: Properties.h:283
static void splitKeyValue(const std::string &str, std::string &key, std::string &value)
文字列をキーと値のペアに分割する
const char * getDefaultValue(void) const
デフォルト値の取得
Definition: Properties.h:321
Properties(const char *key="", const char *value="")
コンストラクタ(rootノードのみ作成)
void clear(void)
子ノードを全て削除する
void store(std::ostream &out, const std::string &header)
プロパティリストを出力ストリームへ保存する
Properties * hasKey(const char *key) const
子ノードにkeyがあるかどうか
std::vector< std::string > propertyNames(void) const
プロパティのキーのリストを vector で返す
static void _store(std::ostream &out, std::string curr_name, Properties *curr)
プロパティの名称リストを保存する
const std::string & getProperty(const std::string &key) const
指定されたキーを持つプロパティを、プロパティリストから探す
void list(std::ostream &out)
指定された出力ストリームに、プロパティリストを出力する
Properties & getNode(const std::string &key)
ノードを取得する
Properties *const findNode(const std::string &key) const
ノードを取得する
void setDefaults(const char *defaults[], long num=LONG_MAX)
Properties にデフォルト値をまとめて登録する
static void _propertiyNames(std::vector< std::string > &names, std::string curr_name, const Properties *curr)
プロパティの名称リストを取得する
virtual ~Properties(void)
デストラクタ
Properties & operator<<(const Properties &prop)
Propertyをマージする
std::string setProperty(const std::string &key, const std::string &value)
Properties に value を key について登録する
bool createNode(const std::string &key)
新規ノードを生成する
void load(std::istream &inStream)
入力ストリームからキーと要素が対になったプロパティリストを読み込む
static bool split(const std::string &str, const char delim, std::vector< std::string > &value)
文字列を分割する
Properties * removeNode(const char *leaf_name)
ノードを削除する
const std::string & operator[](const std::string &key) const
指定されたキーを持つプロパティを、プロパティリストから探す
プロパティセットを表現するクラス
Definition: Properties.h:101
const char * getValue(void) const
値の取得
Definition: Properties.h:302
int size(void) const
プロパティの数を取得する
static Properties * _getNode(std::vector< std::string > &keys, std::vector< Properties * >::size_type index, const Properties *curr)
プロパティを取得する
static std::string indent(int index)
インデントを生成する
static std::ostream & _dump(std::ostream &out, const Properties &curr, int index)
プロパティの内容を保存する
void save(std::ostream &out, const std::string &header)
プロパティリストを指定されたストリームに保存する
const std::string & getDefault(const std::string &key) const
指定されたキーに対してデフォルト値を取得する
std::string setDefault(const std::string &key, const std::string &value)
デフォルト値を登録する
Common Object Interface Layer.
Definition: Affinity.h:28
const Properties * getRoot(void) const
ルート要素の取得
Definition: Properties.h:359