| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium OS Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROMEOS_GLIB_OBJECT_H_ | 5 #ifndef CHROMEOS_GLIB_OBJECT_H_ |
| 6 #define CHROMEOS_GLIB_OBJECT_H_ | 6 #define CHROMEOS_GLIB_OBJECT_H_ |
| 7 | 7 |
| 8 #include <glib-object.h> | 8 #include <glib-object.h> |
| 9 | 9 |
| 10 #include <base/basictypes.h> | 10 #include <base/basictypes.h> |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 // assumes sizeof(guint) == sizeof(guint32). Need a static_assert to assert | 108 // assumes sizeof(guint) == sizeof(guint32). Need a static_assert to assert |
| 109 // that. | 109 // that. |
| 110 return G_TYPE_UINT; | 110 return G_TYPE_UINT; |
| 111 }; | 111 }; |
| 112 | 112 |
| 113 template < > | 113 template < > |
| 114 inline ::GType type_to_gtypeid< ::int64>() { | 114 inline ::GType type_to_gtypeid< ::int64>() { |
| 115 return G_TYPE_INT64; | 115 return G_TYPE_INT64; |
| 116 }; | 116 }; |
| 117 | 117 |
| 118 template < > |
| 119 inline ::GType type_to_gtypeid< ::int32>() { |
| 120 return G_TYPE_INT; |
| 121 }; |
| 122 |
| 118 // \brief Value (and Retrieve) support using std::string as well as const char* | 123 // \brief Value (and Retrieve) support using std::string as well as const char* |
| 119 // by promoting from const char* to the string. promote_from provides a mapping | 124 // by promoting from const char* to the string. promote_from provides a mapping |
| 120 // for this promotion (and possibly others in the future). | 125 // for this promotion (and possibly others in the future). |
| 121 | 126 |
| 122 template <typename T> struct promotes_from { | 127 template <typename T> struct promotes_from { |
| 123 typedef T type; | 128 typedef T type; |
| 124 }; | 129 }; |
| 125 template < > struct promotes_from<std::string> { | 130 template < > struct promotes_from<std::string> { |
| 126 typedef const char* type; | 131 typedef const char* type; |
| 127 }; | 132 }; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 151 return static_cast<bool>(::g_value_get_boolean(&x)); | 156 return static_cast<bool>(::g_value_get_boolean(&x)); |
| 152 } | 157 } |
| 153 template < > | 158 template < > |
| 154 inline ::uint32 RawCast< ::uint32>(const ::GValue& x) { | 159 inline ::uint32 RawCast< ::uint32>(const ::GValue& x) { |
| 155 return static_cast< ::uint32>(::g_value_get_uint(&x)); | 160 return static_cast< ::uint32>(::g_value_get_uint(&x)); |
| 156 } | 161 } |
| 157 template < > | 162 template < > |
| 158 inline ::uint8 RawCast< ::uint8>(const ::GValue& x) { | 163 inline ::uint8 RawCast< ::uint8>(const ::GValue& x) { |
| 159 return static_cast< ::uint8>(::g_value_get_uchar(&x)); | 164 return static_cast< ::uint8>(::g_value_get_uchar(&x)); |
| 160 } | 165 } |
| 161 | |
| 162 template < > | 166 template < > |
| 163 inline ::int64 RawCast< ::int64>(const ::GValue& x) { | 167 inline ::int64 RawCast< ::int64>(const ::GValue& x) { |
| 164 return static_cast< ::int64>(::g_value_get_int64(&x)); | 168 return static_cast< ::int64>(::g_value_get_int64(&x)); |
| 165 } | 169 } |
| 170 template < > |
| 171 inline ::int32 RawCast< ::int32>(const ::GValue& x) { |
| 172 return static_cast< ::int32>(::g_value_get_int(&x)); |
| 173 } |
| 166 | 174 |
| 167 inline void RawSet(GValue* x, const std::string& v) { | 175 inline void RawSet(GValue* x, const std::string& v) { |
| 168 ::g_value_set_string(x, v.c_str()); | 176 ::g_value_set_string(x, v.c_str()); |
| 169 } | 177 } |
| 170 inline void RawSet(GValue* x, const char* v) { | 178 inline void RawSet(GValue* x, const char* v) { |
| 171 ::g_value_set_string(x, v); | 179 ::g_value_set_string(x, v); |
| 172 } | 180 } |
| 173 inline void RawSet(GValue* x, double v) { | 181 inline void RawSet(GValue* x, double v) { |
| 174 ::g_value_set_double(x, v); | 182 ::g_value_set_double(x, v); |
| 175 } | 183 } |
| 176 inline void RawSet(GValue* x, bool v) { | 184 inline void RawSet(GValue* x, bool v) { |
| 177 ::g_value_set_boolean(x, v); | 185 ::g_value_set_boolean(x, v); |
| 178 } | 186 } |
| 179 inline void RawSet(GValue* x, ::uint32 v) { | 187 inline void RawSet(GValue* x, ::uint32 v) { |
| 180 ::g_value_set_uint(x, v); | 188 ::g_value_set_uint(x, v); |
| 181 } | 189 } |
| 182 inline void RawSet(GValue* x, ::uint8 v) { | 190 inline void RawSet(GValue* x, ::uint8 v) { |
| 183 ::g_value_set_uchar(x, v); | 191 ::g_value_set_uchar(x, v); |
| 184 } | 192 } |
| 185 inline void RawSet(GValue* x, ::int64 v) { | 193 inline void RawSet(GValue* x, ::int64 v) { |
| 186 ::g_value_set_int64(x, v); | 194 ::g_value_set_int64(x, v); |
| 187 } | 195 } |
| 196 inline void RawSet(GValue* x, ::int32 v) { |
| 197 ::g_value_set_int(x, v); |
| 198 } |
| 188 | 199 |
| 189 // \brief Value is a data type for managing GValues. | 200 // \brief Value is a data type for managing GValues. |
| 190 // | 201 // |
| 191 // A Value is a polymorphic container holding at most a single value. | 202 // A Value is a polymorphic container holding at most a single value. |
| 192 // | 203 // |
| 193 // The Value wrapper ensures proper initialization, copies, and assignment of | 204 // The Value wrapper ensures proper initialization, copies, and assignment of |
| 194 // GValues. | 205 // GValues. |
| 195 // | 206 // |
| 196 // \note GValues are equationally incomplete and so can't support proper | 207 // \note GValues are equationally incomplete and so can't support proper |
| 197 // equality. The semantics of copy are verified with equality of retrieved | 208 // equality. The semantics of copy are verified with equality of retrieved |
| (...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 } | 479 } |
| 469 | 480 |
| 470 private: | 481 private: |
| 471 ::GHashTable* object_; | 482 ::GHashTable* object_; |
| 472 }; | 483 }; |
| 473 | 484 |
| 474 } // namespace glib | 485 } // namespace glib |
| 475 } // namespace chromeos | 486 } // namespace chromeos |
| 476 | 487 |
| 477 #endif // GLIB_OBJECT_H_ | 488 #endif // GLIB_OBJECT_H_ |
| OLD | NEW |