Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef RVIZ_CONFIG_H
00030 #define RVIZ_CONFIG_H
00031
00032 #include <string>
00033 #include <iostream>
00034 #include <map>
00035
00036 namespace rviz
00037 {
00038
00044 class Config
00045 {
00046 public:
00048 bool readFromFile( const std::string& filename );
00049
00051 bool writeToFile( const std::string& filename );
00052
00054 void read( std::istream& input );
00055
00057 void write( std::ostream& output );
00058
00059 void set( const std::string& key, const std::string& value ) { map_[ key ] = value; }
00060 void set( const std::string& key, float value );
00061 void set( const std::string& key, int value );
00062
00065 void unset( const std::string& key ) { map_.erase( key ); }
00066
00067 bool get( const std::string& key, std::string* output, const std::string& default_value = "" );
00068 bool get( const std::string& key, float* output, float default_value = 0 );
00069 bool get( const std::string& key, int* output, int default_value = 0 );
00070
00071 class DirectoryCompare
00072 {
00073 public:
00074 bool operator() (const std::string& lhs, const std::string& rhs) const;
00075 };
00076
00077 typedef std::map<std::string, std::string, DirectoryCompare> Map;
00078 typedef Map::iterator Iterator;
00079
00080 Iterator begin() { return map_.begin(); }
00081 Iterator end() { return map_.end(); }
00082
00083 void clear() { map_.clear(); }
00084
00085 private:
00088 const std::string stripFirstSlash( const std::string& str );
00089
00092 void writeDirectory( std::ostream& output, const std::string& new_dir, const std::string& prev_dir );
00093
00095 std::string escapeKey( const std::string& raw_key );
00096
00098 std::string unescapeKey( const std::string& cooked_key );
00099
00100 Map map_;
00101 };
00102
00103 }
00104
00105 #endif // RVIZ_CONFIG_H