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