summaryrefslogtreecommitdiff
path: root/glib/src/variant.ccg
diff options
context:
space:
mode:
authorKjell Ahlstedt <kjell.ahlstedt@bredband.net>2015-04-27 09:37:25 +0200
committerKjell Ahlstedt <kjell.ahlstedt@bredband.net>2015-04-27 09:37:25 +0200
commite89b9ab99416ec328e81668c1e097c63394462f1 (patch)
tree7826ea8b20cad8ec32d57b4277a64750e94e4ba3 /glib/src/variant.ccg
parentf23d78236a236ec8206236d5e43a250ac828116a (diff)
downloadglibmm-e89b9ab99416ec328e81668c1e097c63394462f1.tar.gz
Glib::Variant: Wrap handles, add get_data_as_bytes()
* glib/src/variant.[hg|ccg]: VariantBase::is_castable_to(): Accept casts of handles to Variant<gint32>. Add VariantBase::get_data_as_bytes(). Deprecate the non-const get_data() and add a const one. * glib/src/variant_basictypes.[h|cc].m4: Add Variant<gint32>::create_handle().
Diffstat (limited to 'glib/src/variant.ccg')
-rw-r--r--glib/src/variant.ccg13
1 files changed, 10 insertions, 3 deletions
diff --git a/glib/src/variant.ccg b/glib/src/variant.ccg
index fe835400..fd47549c 100644
--- a/glib/src/variant.ccg
+++ b/glib/src/variant.ccg
@@ -66,10 +66,12 @@ bool VariantBase::is_castable_to(const VariantType& supertype) const
// - Both types are assumed to be definite types (no indefinite types,
// no 'r', '?' or '*').
// - VARIANT_TYPE_OBJECT_PATH (o) and VARIANT_TYPE_SIGNATURE (g) can be cast to
- // VARIANT_TYPE_STRING (s), the type of Glib::ustring.
+ // VARIANT_TYPE_STRING (s), (Variant<Glib::ustring>::variant_type()).
// - VARIANT_TYPE_STRING (s), VARIANT_TYPE_OBJECT_PATH (o) and
- // VARIANT_TYPE_SIGNATURE (g) can be cast to
- // VARIANT_TYPE_BYTESTRING (ay), the type of std::string.
+ // VARIANT_TYPE_SIGNATURE (g) can be cast to VARIANT_TYPE_BYTESTRING (ay),
+ // (Variant<std::string>::variant_type()).
+ // - VARIANT_TYPE_HANDLE (h) can be cast to VARIANT_TYPE_INT32 (i),
+ // (Variant<gint32>::variant_type()).
std::size_t subtype_index = 0;
std::size_t supertype_index = 0;
@@ -96,6 +98,11 @@ bool VariantBase::is_castable_to(const VariantType& supertype) const
supertype_index++;
break;
+ case 'i':
+ if (!(subtype_char == 'h'))
+ return false;
+ break;
+
default:
return false;
}