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