#ifndef PROPERTY_INFO_H
#define PROPERTY_INFO_H

/*!
  \file
  \brief 情報のグローバル管理
  
  \author Satofumi KAMIMURA
  
  $Id: propertyInfo.h 286 2008-10-20 09:40:22Z satofumi $
*/

#include <fstream>
#include <string>


/*!
  \brief 情報の読み出しと保存
*/
class PropertyInfo {
  bool before_read;
  std::string file_name;
  std::fstream fd;
  bool read_fail;

  bool firstRead(void);
  virtual void evaluate(void) = 0;

public:
  PropertyInfo(void);
  virtual ~PropertyInfo(void);

  /*!
    \brief 読み出し

    \param fname [i] ファイル名
    \param path [i] ファイルを検索するパス文字列の配列
  */
  bool load(const char* fname, const char* path[]);

  /*!
    \brief 保存
  */
  void save(void);

  /*!
    \brief 数値情報の処理
  */
  void value(int* int_num, const char* key, int def_num = 0);

  /*!
    \brief 文字列情報の処理
  */
  void value(std::string& str, const char* key, const char* def_str = "");
};

#endif /* !PROPERTY_INFO_H */
