Config.h revision 10447
110447Snilay@cs.wisc.edu#ifndef __LIBUTIL_CONFIG_H__ 210447Snilay@cs.wisc.edu#define __LIBUTIL_CONFIG_H__ 310447Snilay@cs.wisc.edu 410447Snilay@cs.wisc.edu#include <iostream> 510447Snilay@cs.wisc.edu 610447Snilay@cs.wisc.edu#include "Map.h" 710447Snilay@cs.wisc.edu 810447Snilay@cs.wisc.edunamespace LibUtil 910447Snilay@cs.wisc.edu{ 1010447Snilay@cs.wisc.edu class Config : public StringMap 1110447Snilay@cs.wisc.edu { 1210447Snilay@cs.wisc.edu public: 1310447Snilay@cs.wisc.edu Config(const String& delimiter_ = "=", const String& comment_ = "#", const String& sentry_ = "End"); 1410447Snilay@cs.wisc.edu Config(const Config& config_); 1510447Snilay@cs.wisc.edu virtual ~Config(); 1610447Snilay@cs.wisc.edu 1710447Snilay@cs.wisc.edu public: 1810447Snilay@cs.wisc.edu // Make a copy of this instance 1910447Snilay@cs.wisc.edu virtual Config* clone() const; 2010447Snilay@cs.wisc.edu // Load the config from file 2110447Snilay@cs.wisc.edu virtual void readFile(const String& filename_); 2210447Snilay@cs.wisc.edu // Parse string and overwrite the Config instance if keys exist 2310447Snilay@cs.wisc.edu virtual void readString(const String& str_); 2410447Snilay@cs.wisc.edu 2510447Snilay@cs.wisc.edu // Write or read map using standard IO 2610447Snilay@cs.wisc.edu friend std::ostream& operator<<(std::ostream& ost_, const Config& config_); 2710447Snilay@cs.wisc.edu friend std::istream& operator>>(std::istream& ist_, Config& config_); 2810447Snilay@cs.wisc.edu 2910447Snilay@cs.wisc.edu protected: 3010447Snilay@cs.wisc.edu String mDelimiter; 3110447Snilay@cs.wisc.edu String mComment; 3210447Snilay@cs.wisc.edu String mSentry; 3310447Snilay@cs.wisc.edu }; 3410447Snilay@cs.wisc.edu} 3510447Snilay@cs.wisc.edu 3610447Snilay@cs.wisc.edu#endif // __LIBUTIL_CONFIG_H__ 3710447Snilay@cs.wisc.edu 38