00001
00002
00003 #ifndef _GCONFMM_VALUE_H
00004 #define _GCONFMM_VALUE_H
00005
00006 #include <glibmm.h>
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #include <glibmm/ustring.h>
00031 #include <gconfmm/value_listhelpers.h>
00032
00033
00034 namespace Gnome
00035 {
00036
00037 namespace Conf
00038 {
00039
00045 enum ValueType
00046 {
00047 VALUE_INVALID,
00048 VALUE_STRING,
00049 VALUE_INT,
00050 VALUE_FLOAT,
00051 VALUE_BOOL,
00052 VALUE_SCHEMA,
00053 VALUE_LIST,
00054 VALUE_PAIR
00055 };
00056
00057 }
00058
00059 }
00060
00061
00062 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00063 namespace Glib
00064 {
00065
00066 template <>
00067 class Value<Gnome::Conf::ValueType> : public Glib::Value_Enum<Gnome::Conf::ValueType>
00068 {
00069 public:
00070 static GType value_type() G_GNUC_CONST;
00071 };
00072
00073 }
00074 #endif
00075
00076
00077 namespace Gnome
00078 {
00079
00080 namespace Conf
00081 {
00082
00083
00084 typedef std::pair<Value, Value> ValuePair;
00085 typedef std::pair<ValueType, ValueType> ValueTypePair;
00086
00106 class Value
00107 {
00108 public:
00109 #ifndef DOXYGEN_SHOULD_SKIP_THIS
00110 typedef Value CppObjectType;
00111 typedef GConfValue BaseObjectType;
00112 #endif
00113
00114
00115
00116 explicit Value(GConfValue* castitem, bool make_a_copy = false);
00117
00118 Value(const Value& src);
00119 Value& operator=(const Value& src);
00120
00121 ~Value();
00122
00123 GConfValue* gobj() { return gobject_; }
00124 const GConfValue* gobj() const { return gobject_; }
00125
00126
00127 GConfValue* gobj_copy() const;
00128
00129 protected:
00130 GConfValue* gobject_;
00131
00132 private:
00133
00134 ;
00135
00136 public:
00137
00142 Value(ValueType type = VALUE_INVALID);
00143
00147 void set(gint val);
00148
00153 void set(gdouble val);
00154
00157 void set(bool val);
00158
00161 void set(const Schema& sc);
00162
00165 void set_car(const Value& car);
00166
00169 void set_cdr(const Value& cdr);
00170
00173 void set(const Glib::ustring& val);
00174
00175
00178 void set_list_type(ValueType type);
00179
00185 void set_int_list(const SListHandle_ValueInt& list);
00186
00190 void set_bool_list(const SListHandle_ValueBool& list);
00191
00195 void set_float_list(const SListHandle_ValueFloat& list);
00196
00200 void set_string_list(const SListHandle_ValueString& list);
00201
00205 void set_schema_list(const SListHandle_ValueSchema& list);
00206
00207
00211 ValueType get_type() const;
00212
00213
00219 ValueType get_list_type() const;
00220
00223 int get_int() const;
00224
00227 bool get_bool() const;
00228
00231 double get_float() const;
00232
00235 Glib::ustring get_string() const;
00236
00237
00239 Schema get_schema() const;
00240
00241
00243 Value get_car() const;
00244
00246 Value get_cdr() const;
00247
00257 SListHandle_ValueFloat get_float_list() const;
00258
00263 SListHandle_ValueInt get_int_list() const;
00264
00269 SListHandle_ValueBool get_bool_list() const;
00270
00275 SListHandle_ValueString get_string_list() const;
00276
00281 SListHandle_ValueSchema get_schema_list() const;
00282
00288 Glib::ustring to_string() const;
00289
00290
00291 };
00292
00293 }
00294 }
00295
00296
00297 namespace Glib
00298 {
00299
00301 Gnome::Conf::Value wrap(GConfValue* object, bool take_copy = false);
00302
00303 }
00304
00305 #endif
00306