class Poco::Util::PropertyFileConfiguration
Overview
This implementation of a Configuration reads properties from a Java-style properties file. More…
#include <PropertyFileConfiguration.h> class PropertyFileConfiguration: public Poco::Util::MapConfiguration { public: // construction PropertyFileConfiguration(); PropertyFileConfiguration(std::istream& istr); PropertyFileConfiguration(const std::string& path); // methods void load(std::istream& istr); void load(const std::string& path); void save(std::ostream& ostr) const; void save(const std::string& path) const; };
Inherited Members
public: // typedefs typedef std::vector<std::string> Keys; // classes class KeyValue; // fields Poco::BasicEvent<KeyValue> propertyChanging; Poco::BasicEvent<const KeyValue> propertyChanged; Poco::BasicEvent<const std::string> propertyRemoving; Poco::BasicEvent<const std::string> propertyRemoved; // methods void duplicate() const; void release() const; int referenceCount() const; bool hasProperty(const std::string& key) const; bool hasOption(const std::string& key) const; bool has(const std::string& key) const; std::string getString(const std::string& key) const; std::string getString( const std::string& key, const std::string& defaultValue ) const; std::string getRawString(const std::string& key) const; std::string getRawString( const std::string& key, const std::string& defaultValue ) const; int getInt(const std::string& key) const; unsigned int getUInt(const std::string& key) const; int getInt( const std::string& key, int defaultValue ) const; unsigned int getUInt( const std::string& key, unsigned int defaultValue ) const; double getDouble(const std::string& key) const; double getDouble( const std::string& key, double defaultValue ) const; bool getBool(const std::string& key) const; bool getBool( const std::string& key, bool defaultValue ) const; virtual void setString( const std::string& key, const std::string& value ); virtual void setInt( const std::string& key, int value ); virtual void setUInt( const std::string& key, unsigned int value ); virtual void setDouble( const std::string& key, double value ); virtual void setBool( const std::string& key, bool value ); void keys(Keys& range) const; void keys( const std::string& key, Keys& range ) const; const AbstractConfiguration* createView(const std::string& prefix) const; AbstractConfiguration* createView(const std::string& prefix); std::string expand(const std::string& value) const; void remove(const std::string& key); void enableEvents(bool enable = true); bool eventsEnabled() const; void copyTo(AbstractConfiguration& config); void clear(); protected: // typedefs typedef std::map<std::string, std::string> StringMap; typedef StringMap::const_iterator iterator; // methods virtual bool getRaw( const std::string& key, std::string& value ) const = 0; virtual void setRaw( const std::string& key, const std::string& value ) = 0; virtual void enumerate( const std::string& key, Keys& range ) const = 0; virtual void removeRaw(const std::string& key); void setRawWithEvent( const std::string& key, std::string value ); static int parseInt(const std::string& value); static unsigned parseUInt(const std::string& value); static bool parseBool(const std::string& value); virtual bool getRaw( const std::string& key, std::string& value ) const; virtual void setRaw( const std::string& key, const std::string& value ); virtual void enumerate( const std::string& key, Keys& range ) const; virtual void removeRaw(const std::string& key); iterator begin() const; iterator end() const;
Detailed Documentation
This implementation of a Configuration reads properties from a Java-style properties file.
The file syntax is implemented as follows.
- a line starting with a hash '#' or exclamation mark '!' is treated as a comment and ignored - every other line denotes a property assignment in the form <key> = <value> or <key> : <value>
Keys and values may contain special characters represented by the following escape sequences:
- \t: tab (0x09) - \n: line feed (0x0a) - \r: carriage return (0x0d) - \f: form feed (0x0c)
For every other sequence that starts with a backslash, the backslash is removed. Therefore, the sequence would just yield an ‘a’.
A value can spread across multiple lines if the last character in a line (the character immediately before the carriage return or line feed character) is a single backslash.
Property names are case sensitive. Leading and trailing whitespace is removed from both keys and values. A property name can neither contain a colon ‘:’ nor an equal sign ‘=’ character.
Construction
PropertyFileConfiguration()
Creates an empty PropertyFileConfiguration.
PropertyFileConfiguration(std::istream& istr)
Creates an PropertyFileConfiguration and loads the configuration data from the given stream, which must be in properties file format.
PropertyFileConfiguration(const std::string& path)
Creates an PropertyFileConfiguration and loads the configuration data from the given file, which must be in properties file format.
Methods
void load(std::istream& istr)
Loads the configuration data from the given stream, which must be in properties file format.
void load(const std::string& path)
Loads the configuration data from the given file, which must be in properties file format.
void save(std::ostream& ostr) const
Writes the configuration data to the given stream.
The data is written as a sequence of statements in the form <key>:
separated by a newline character.
void save(const std::string& path) const
Writes the configuration data to the given file.