Glib::Variant

Section: User Contributed Perl Documentation (3pm)
Updated: 2019-02-11
Page Index
 

NAME

Glib::Variant - strongly typed value datatype  

SYNOPSIS

  my $v = Glib::Variant->new ('as', ['GTK+', 'Perl']);
  my $aref = $v->get ('as');

 

DESCRIPTION

There are two sets of APIs for creating and dealing with "Glib::Variant"s: the low-level API described below under ``METHODS'', and the convenience API described in this section.  

CONVENIENCE API

variant = Glib::Variant->new ($format_string, $value)
(variant1, ...) = Glib::Variant->new ($format_string, $value1, ...)
Constructs a variant from $format_string and $value. Also supports constructing multiple variants when the format string is a concatenation of multiple types.
value = $variant->get ($format_string)
Deconstructs $variant according to $format_string.

The following symbols are currently supported in format strings:

  +------------------------------+---------------------------------+
  |            Symbol            |             Meaning             |
  +------------------------------+---------------------------------+
  | b, y, n, q, i, u, x, t, h, d | Boolean, byte and numeric types |
  | s, o, g                      | String types                    |
  | v                            | Variant types                   |
  | a                            | Arrays                          |
  | m                            | Maybe types                     |
  | ()                           | Tuples                          |
  | {}                           | Dictionary entries              |
  +------------------------------+---------------------------------+

Note that if a format string specifies an array, a tuple or a dictionary entry (``a'', ``()'' or ``{}''), then array references are expected by "new" and produced by "get". For arrays of dictionary entries (``a{}''), hash references are also supported by "new" and handled as you would expect.

For a complete specification, see the documentation at

<https://developer.gnome.org/glib/stable/glib-GVariantType.html>
<https://developer.gnome.org/glib/stable/glib-GVariant.html>
<https://developer.gnome.org/glib/stable/gvariant-format-strings.html>
<https://developer.gnome.org/glib/stable/gvariant-text.html>
 

HIERARCHY

  Glib::Variant

 

METHODS

 

variant = Glib::Variant->new_array ($child_type, $children)

$child_type (Glib::VariantType)
$children (scalar)
 

variant = Glib::Variant->new_boolean ($value)

$value (boolean)
 

variant = Glib::Variant->new_byte ($value)

$value (Glib::UChar)
 

variant = Glib::Variant->new_bytestring ($string)

$string (byte string)

Since: glib 2.26  

variant = Glib::Variant->new_dict_entry ($key, $value)

$key (Glib::Variant)
$value (Glib::Variant)
 

variant = Glib::Variant->new_double ($value)

$value (double)
 

variant = Glib::Variant->new_handle ($value)

$value (integer)
 

variant = Glib::Variant->new_int16 ($value)

$value (integer)
 

variant = Glib::Variant->new_int32 ($value)

$value (integer)
 

variant = Glib::Variant->new_int64 ($value)

$value (64 bit integer)
 

variant = Glib::Variant->new_maybe ($child_type, $child)

$child_type (Glib::VariantType)
$child (Glib::Variant)
 

variant = Glib::Variant->new_object_path ($object_path)

$object_path (string)
 

variant = Glib::Variant->new_signature ($signature)

$signature (string)
 

variant = Glib::Variant->new_string ($string)

$string (string)
 

variant = Glib::Variant->new_tuple ($children)

$children (scalar)
 

variant = Glib::Variant->new_uint16 ($value)

$value (unsigned)
 

variant = Glib::Variant->new_uint32 ($value)

$value (unsigned)
 

variant = Glib::Variant->new_uint64 ($value)

$value (64 bit unsigned)
 

variant = Glib::Variant->new_variant ($value)

$value (Glib::Variant)
 

boolean = $value->get_boolean

 

uchar = $value->get_byte

 

string = $value->get_bytestring

Since: glib 2.26  

variant = $value->byteswap

 

variant = $value->get_child_value ($index_)

$index_ (unsigned)
 

string = $value->classify

 

integer = $one->compare ($two)

$two (Glib::Variant)

Since: glib 2.26  

double = $value->get_double

 

boolean = $one->equal ($two)

$two (Glib::Variant)
 

integer = $value->get_handle

 

integer = $value->hash

 

integer = $value->get_int16

 

integer = $value->get_int32

 

64 bit integer = $value->get_int64

 

boolean = $value->is_container

 

boolean = $value->is_normal_form

 

boolean = $string->is_object_path

 

boolean = $value->is_of_type ($type)

$type (Glib::VariantType)
 

boolean = $string->is_signature

 

variant = $dictionary->lookup_value ($key, $expected_type)

$key (string)
$expected_type (Glib::VariantType)

Since: glib 2.28  

variant = $value->get_maybe

 

unsigned = $value->n_children

 

variant = $value->get_normal_form

 

variant = Glib::Variant::parse ($type, $text)

$type (Glib::VariantType)
$text (string)

May croak with a Glib::Error in $@ on failure.  

string = $value->print ($type_annotate)

$type_annotate (boolean)
 

unsigned = $value->get_size

 

string = $value->get_string

 

varianttype = $value->get_type

 

string = $value->get_type_string

 

unsigned = $value->get_uint16

 

unsigned = $value->get_uint32

 

64 bit unsigned = $value->get_uint64

 

variant = $value->get_variant

 

SEE ALSO

Glib, Glib::VariantType, Glib::VariantDict  

COPYRIGHT

Copyright (C) 2003-2011 by the gtk2-perl team.

This software is licensed under the LGPL. See Glib for a full notice.


 

Index

NAME
SYNOPSIS
DESCRIPTION
CONVENIENCE API
HIERARCHY
METHODS
variant = Glib::Variant->new_array ($child_type, $children)
variant = Glib::Variant->new_boolean ($value)
variant = Glib::Variant->new_byte ($value)
variant = Glib::Variant->new_bytestring ($string)
variant = Glib::Variant->new_dict_entry ($key, $value)
variant = Glib::Variant->new_double ($value)
variant = Glib::Variant->new_handle ($value)
variant = Glib::Variant->new_int16 ($value)
variant = Glib::Variant->new_int32 ($value)
variant = Glib::Variant->new_int64 ($value)
variant = Glib::Variant->new_maybe ($child_type, $child)
variant = Glib::Variant->new_object_path ($object_path)
variant = Glib::Variant->new_signature ($signature)
variant = Glib::Variant->new_string ($string)
variant = Glib::Variant->new_tuple ($children)
variant = Glib::Variant->new_uint16 ($value)
variant = Glib::Variant->new_uint32 ($value)
variant = Glib::Variant->new_uint64 ($value)
variant = Glib::Variant->new_variant ($value)
boolean = $value->get_boolean
uchar = $value->get_byte
string = $value->get_bytestring
variant = $value->byteswap
variant = $value->get_child_value ($index_)
string = $value->classify
integer = $one->compare ($two)
double = $value->get_double
boolean = $one->equal ($two)
integer = $value->get_handle
integer = $value->hash
integer = $value->get_int16
integer = $value->get_int32
64 bit integer = $value->get_int64
boolean = $value->is_container
boolean = $value->is_normal_form
boolean = $string->is_object_path
boolean = $value->is_of_type ($type)
boolean = $string->is_signature
variant = $dictionary->lookup_value ($key, $expected_type)
variant = $value->get_maybe
unsigned = $value->n_children
variant = $value->get_normal_form
variant = Glib::Variant::parse ($type, $text)
string = $value->print ($type_annotate)
unsigned = $value->get_size
string = $value->get_string
varianttype = $value->get_type
string = $value->get_type_string
unsigned = $value->get_uint16
unsigned = $value->get_uint32
64 bit unsigned = $value->get_uint64
variant = $value->get_variant
SEE ALSO
COPYRIGHT