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 CONFIG_H
00030 #define CONFIG_H
00031
00032 #include <stdio.h>
00033
00034 #include <string>
00035
00036 #include <boost/shared_ptr.hpp>
00037
00038 #include <QMap>
00039 #include <QString>
00040 #include <QVariant>
00041
00042 namespace rviz
00043 {
00044
00123 class Config
00124 {
00125 private:
00126 class Node;
00127 typedef boost::shared_ptr<Node> NodePtr;
00128
00129 public:
00131 Config();
00133 Config( const Config& source );
00135 Config( QVariant value );
00136
00138 void copy( const Config& source );
00139
00147 enum Type { Map, List, Value, Empty, Invalid };
00148
00151 Type getType() const;
00152
00163 void setType( Type new_type );
00164
00167 bool isValid() const;
00168
00181 void mapSetValue( const QString& key, QVariant value );
00182
00186 Config mapMakeChild( const QString& key );
00187
00192 Config mapGetChild( const QString& key ) const;
00193
00201 bool mapGetValue( const QString& key, QVariant *value_out ) const;
00202
00211 bool mapGetInt( const QString& key, int *value_out ) const;
00212
00221 bool mapGetFloat( const QString& key, float *value_out ) const;
00222
00231 bool mapGetBool( const QString& key, bool *value_out ) const;
00232
00241 bool mapGetString( const QString& key, QString *value_out ) const;
00242
00245 void setValue( const QVariant& value );
00246
00249 QVariant getValue() const;
00250
00253 int listLength() const;
00254
00258 Config listChildAt( int i ) const;
00259
00263 Config listAppendNew();
00264
00280 class MapIterator
00281 {
00282 public:
00284 void advance();
00285
00289 bool isValid();
00290
00292 void start();
00293
00295 QString currentKey();
00296
00298 Config currentChild();
00299
00300 private:
00303 MapIterator();
00304
00305 Config::NodePtr node_;
00306 QMap<QString, Config::NodePtr>::const_iterator iterator_;
00307 bool iterator_valid_;
00308 friend class Config;
00309 };
00310
00318 MapIterator mapIterator() const;
00319
00320 private:
00321 Config( NodePtr node );
00322 static Config invalidConfig();
00323
00325 void makeValid();
00326
00327 NodePtr node_;
00328
00329 friend class MapIterator;
00330 };
00331
00332 }
00333
00334 #endif // CONFIG_H