~ubuntu-branches/ubuntu/precise/glib2.0/precise-updates

« back to all changes in this revision

Viewing changes to docs/reference/glib/html/gvariant-format-strings.html

  • Committer: Package Import Robot
  • Author(s): Sebastien Bacher
  • Date: 2012-02-21 11:37:24 UTC
  • mfrom: (1.59.40)
  • Revision ID: package-import@ubuntu.com-20120221113724-zrvxbzk185aw5dpv
Tags: 2.31.18-0ubuntu1
* New upstream version, updated symbols for the new version:
  - GDBusProxy has now a flag
    G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES, which can be set 
    to make GDBus automatically reload changed properties even if 
    the propertychanged signal does not contain the new values.
  - GApplication puts non-unique applications on the bus
  - GApplication now has g_application_quit()

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
<td valign="top" align="right"></td>
30
30
</tr></table></div>
31
31
<div class="refsect1">
32
 
<a name="id605548"></a><h2>Variable Argument Conversions</h2>
 
32
<a name="idp5410976"></a><h2>Variable Argument Conversions</h2>
33
33
<p>
34
34
   This page attempts to document how to perform variable argument
35
35
   conversions with GVariant.
46
46
  </p>
47
47
</div>
48
48
<div class="refsect1">
49
 
<a name="id491484"></a><h2>Syntax</h2>
 
49
<a name="idp35382768"></a><h2>Syntax</h2>
50
50
<p>
51
51
   This section exhaustively describes all possibilities for GVariant format strings.  There are no valid forms of
52
52
   format strings other than those described here.  Please note that the format string syntax is likely to expand in the
78
78
</ul></div>
79
79
</div>
80
80
<div class="refsect1">
81
 
<a name="id495189"></a><h2>Symbols</h2>
 
81
<a name="idp6854816"></a><h2>Symbols</h2>
82
82
<p>
83
83
    The following table describes the rough meaning of symbols that may appear inside a GVariant format string.  Each
84
84
    symbol is described in detail in its own section, including usage examples.
470
470
    it operates with pointers.  The pointers must always point to a memory region of exactly the correct size.
471
471
   </p>
472
472
<div class="refsect3">
473
 
<a name="id467569"></a><h4>Examples</h4>
474
 
<div class="informalexample">
475
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
476
 
    <tbody>
477
 
      <tr>
478
 
        <td class="listing_lines" align="right"><pre>1
479
 
2
480
 
3
481
 
4
482
 
5
483
 
6
484
 
7
485
 
8
486
 
9
487
 
10
488
 
11
489
 
12
490
 
13
491
 
14
492
 
15
493
 
16
494
 
17
495
 
18</pre></td>
496
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value3</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value4</span><span class="symbol">;</span>
497
 
 
498
 
<span class="normal">value1 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"y"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">200</span><span class="symbol">);</span>
499
 
<span class="normal">value2 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"b"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#TRUE:CAPS">TRUE</a></span><span class="symbol">);</span>
500
 
<span class="normal">value3 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"d"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">37.5</span><span class="symbol">):</span>
501
 
<span class="normal">value4 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"x"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="glib-Basic-Types.html#G-GINT64-CONSTANT:CAPS">G_GINT64_CONSTANT</a></span><span class="normal"> </span><span class="symbol">(</span><span class="number">998877665544332211</span><span class="symbol">));</span>
502
 
 
503
 
<span class="cbracket">{</span>
504
 
<span class="normal">  </span><span class="usertype">gdouble</span><span class="normal"> floating</span><span class="symbol">;</span>
505
 
<span class="normal">  </span><span class="usertype">gboolean</span><span class="normal"> truth</span><span class="symbol">;</span>
506
 
<span class="normal">  </span><span class="usertype">gint64</span><span class="normal"> bignum</span><span class="symbol">;</span>
507
 
 
508
 
 
509
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"y"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span><span class="normal">      </span><span class="comment">/* ignore the value. */</span>
510
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"b"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">truth</span><span class="symbol">);</span>
511
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value3</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"d"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">floating</span><span class="symbol">);</span>
512
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value4</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"x"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">bignum</span><span class="symbol">);</span>
513
 
<span class="cbracket">}</span></pre></td>
514
 
      </tr>
515
 
    </tbody>
516
 
  </table>
517
 
</div>
518
 
 
 
473
<a name="idp41337648"></a><h4>Examples</h4>
 
474
<div class="informalexample"><pre class="programlisting">
 
475
GVariant *value1, *value2, *value3, *value4;
 
476
 
 
477
value1 = g_variant_new ("y", 200);
 
478
value2 = g_variant_new ("b", TRUE);
 
479
value3 = g_variant_new ("d", 37.5):
 
480
value4 = g_variant_new ("x", G_GINT64_CONSTANT (998877665544332211));
 
481
 
 
482
{
 
483
  gdouble floating;
 
484
  gboolean truth;
 
485
  gint64 bignum;
 
486
 
 
487
 
 
488
  g_variant_get (value1, "y", NULL);      /* ignore the value. */
 
489
  g_variant_get (value2, "b", &amp;truth);
 
490
  g_variant_get (value3, "d", &amp;floating);
 
491
  g_variant_get (value4, "x", &amp;bignum);
 
492
}</pre></div>
519
493
</div>
520
494
</div>
521
495
<hr>
544
518
    string should be ignored (in which case no copy is made).
545
519
   </p>
546
520
<div class="refsect3">
547
 
<a name="id482079"></a><h4>Examples</h4>
548
 
<div class="informalexample">
549
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
550
 
    <tbody>
551
 
      <tr>
552
 
        <td class="listing_lines" align="right"><pre>1
553
 
2
554
 
3
555
 
4
556
 
5
557
 
6
558
 
7
559
 
8
560
 
9
561
 
10
562
 
11
563
 
12
564
 
13
565
 
14
566
 
15
567
 
16
568
 
17</pre></td>
569
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value3</span><span class="symbol">;</span>
570
 
 
571
 
<span class="normal">value1 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"hello world!"</span><span class="symbol">);</span>
572
 
<span class="normal">value2 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"o"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"/must/be/a/valid/path"</span><span class="symbol">);</span>
573
 
<span class="normal">value3 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"g"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"iias"</span><span class="symbol">);</span>
574
 
 
575
 
<span class="preproc">#if</span><span class="normal"> </span><span class="number">0</span>
576
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span><span class="normal">      </span><span class="comment">/* not valid: NULL is not a string. */</span>
577
 
<span class="preproc">#endif</span>
578
 
 
579
 
<span class="cbracket">{</span>
580
 
<span class="normal">  </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">result</span><span class="symbol">;</span>
581
 
 
582
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">result</span><span class="symbol">);</span>
583
 
<span class="normal">  </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"It was '%s'</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> result</span><span class="symbol">);</span>
584
 
<span class="normal">  </span><span class="function"><a href="glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">result</span><span class="symbol">);</span>
585
 
<span class="cbracket">}</span></pre></td>
586
 
      </tr>
587
 
    </tbody>
588
 
  </table>
589
 
</div>
590
 
 
 
521
<a name="idp5809152"></a><h4>Examples</h4>
 
522
<div class="informalexample"><pre class="programlisting">
 
523
GVariant *value1, *value2, *value3;
 
524
 
 
525
value1 = g_variant_new ("s", "hello world!");
 
526
value2 = g_variant_new ("o", "/must/be/a/valid/path");
 
527
value3 = g_variant_new ("g", "iias");
 
528
 
 
529
#if 0
 
530
  g_variant_new ("s", NULL);      /* not valid: NULL is not a string. */
 
531
#endif
 
532
 
 
533
{
 
534
  gchar *result;
 
535
 
 
536
  g_variant_get (value1, "s", &amp;result);
 
537
  g_print ("It was '%s'\n", result);
 
538
  g_free (result);
 
539
}</pre></div>
591
540
</div>
592
541
</div>
593
542
<hr>
613
562
    ignored (in which case no new reference is created).
614
563
   </p>
615
564
<div class="refsect3">
616
 
<a name="id651759"></a><h4>Examples</h4>
617
 
<div class="informalexample">
618
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
619
 
    <tbody>
620
 
      <tr>
621
 
        <td class="listing_lines" align="right"><pre>1
622
 
2
623
 
3
624
 
4
625
 
5
626
 
6
627
 
7
628
 
8
629
 
9</pre></td>
630
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">x</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">y</span><span class="symbol">;</span>
631
 
 
632
 
<span class="comment">/* the following two lines are equivalent: */</span>
633
 
<span class="normal">x </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"v"</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span>
634
 
<span class="normal">x </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new-variant">g_variant_new_variant</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">y</span><span class="symbol">);</span>
635
 
 
636
 
<span class="comment">/* as are these: */</span>
637
 
<span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">x</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"v"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">y</span><span class="symbol">);</span>
638
 
<span class="normal">y </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-get-variant">g_variant_get_variant</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">x</span><span class="symbol">);</span></pre></td>
639
 
      </tr>
640
 
    </tbody>
641
 
  </table>
642
 
</div>
643
 
 
 
565
<a name="idp23022080"></a><h4>Examples</h4>
 
566
<div class="informalexample"><pre class="programlisting">
 
567
GVariant *x, *y;
 
568
 
 
569
/* the following two lines are equivalent: */
 
570
x = g_variant_new ("v", y);
 
571
x = g_variant_new_variant (y);
 
572
 
 
573
/* as are these: */
 
574
g_variant_get (x, "v", &amp;y);
 
575
y = g_variant_get_variant (x);</pre></div>
644
576
</div>
645
577
</div>
646
578
<hr>
672
604
    should be ignored.
673
605
   </p>
674
606
<div class="refsect3">
675
 
<a name="id513902"></a><h4>Examples</h4>
676
 
<div class="informalexample">
677
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
678
 
    <tbody>
679
 
      <tr>
680
 
        <td class="listing_lines" align="right"><pre>1
681
 
2
682
 
3
683
 
4
684
 
5
685
 
6
686
 
7
687
 
8
688
 
9
689
 
10
690
 
11
691
 
12
692
 
13
693
 
14
694
 
15
695
 
16
696
 
17
697
 
18
698
 
19
699
 
20
700
 
21
701
 
22</pre></td>
702
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariantBuilder</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">builder</span><span class="symbol">;</span>
703
 
<span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value</span><span class="symbol">;</span>
704
 
 
705
 
<span class="normal">builder </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-builder-new">g_variant_builder_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="glib-GVariantType.html#G-VARIANT-TYPE:CAPS">G_VARIANT_TYPE</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"as"</span><span class="symbol">));</span>
706
 
<span class="function"><a href="glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"when"</span><span class="symbol">);</span>
707
 
<span class="function"><a href="glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"in"</span><span class="symbol">);</span>
708
 
<span class="function"><a href="glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"the"</span><span class="symbol">);</span>
709
 
<span class="function"><a href="glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"course"</span><span class="symbol">);</span>
710
 
<span class="normal">value </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"as"</span><span class="symbol">,</span><span class="normal"> builder</span><span class="symbol">);</span>
711
 
<span class="function"><a href="glib-GVariant.html#g-variant-builder-unref">g_variant_builder_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">builder</span><span class="symbol">);</span>
712
 
 
713
 
<span class="cbracket">{</span>
714
 
<span class="normal">  </span><span class="usertype">GVariantIter</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">iter</span><span class="symbol">;</span>
715
 
<span class="normal">  </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">str</span><span class="symbol">;</span>
716
 
 
717
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"as"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">iter</span><span class="symbol">);</span>
718
 
<span class="normal">  </span><span class="keyword">while</span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="glib-GVariant.html#g-variant-iter-loop">g_variant_iter_loop</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">iter</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"s"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">str</span><span class="symbol">))</span>
719
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"%s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> str</span><span class="symbol">);</span>
720
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-iter-free">g_variant_iter_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">iter</span><span class="symbol">);</span>
721
 
<span class="cbracket">}</span>
722
 
 
723
 
<span class="function"><a href="glib-GVariant.html#g-variant-unref">g_variant_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value</span><span class="symbol">);</span></pre></td>
724
 
      </tr>
725
 
    </tbody>
726
 
  </table>
727
 
</div>
728
 
 
 
607
<a name="idp18137216"></a><h4>Examples</h4>
 
608
<div class="informalexample"><pre class="programlisting">
 
609
GVariantBuilder *builder;
 
610
GVariant *value;
 
611
 
 
612
builder = g_variant_builder_new (G_VARIANT_TYPE ("as"));
 
613
g_variant_builder_add (builder, "s", "when");
 
614
g_variant_builder_add (builder, "s", "in");
 
615
g_variant_builder_add (builder, "s", "the");
 
616
g_variant_builder_add (builder, "s", "course");
 
617
value = g_variant_new ("as", builder);
 
618
g_variant_builder_unref (builder);
 
619
 
 
620
{
 
621
  GVariantIter *iter;
 
622
  gchar *str;
 
623
 
 
624
  g_variant_get (value, "as", &amp;iter);
 
625
  while (g_variant_iter_loop (iter, "s", &amp;str))
 
626
    g_print ("%s\n", str);
 
627
  g_variant_iter_free (iter);
 
628
}
 
629
 
 
630
g_variant_unref (value);</pre></div>
729
631
</div>
730
632
</div>
731
633
<hr>
784
686
    but have their values set to binary zero.
785
687
   </p>
786
688
<div class="refsect3">
787
 
<a name="id600868"></a><h4>Examples</h4>
788
 
<div class="informalexample">
789
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
790
 
    <tbody>
791
 
      <tr>
792
 
        <td class="listing_lines" align="right"><pre>1
793
 
2
794
 
3
795
 
4
796
 
5
797
 
6
798
 
7
799
 
8
800
 
9
801
 
10
802
 
11
803
 
12
804
 
13
805
 
14
806
 
15
807
 
16
808
 
17
809
 
18
810
 
19
811
 
20
812
 
21
813
 
22
814
 
23
815
 
24
816
 
25
817
 
26
818
 
27
819
 
28
820
 
29
821
 
30
822
 
31
823
 
32
824
 
33
825
 
34
826
 
35
827
 
36
828
 
37
829
 
38
830
 
39
831
 
40
832
 
41
833
 
42
834
 
43
835
 
44
836
 
45
837
 
46
838
 
47
839
 
48
840
 
49
841
 
50
842
 
51
843
 
52
844
 
53
845
 
54
846
 
55</pre></td>
847
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value3</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value4</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value5</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value6</span><span class="symbol">;</span>
848
 
<span class="normal">value1 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"ms"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Hello world"</span><span class="symbol">);</span>
849
 
<span class="normal">value2 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"ms"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span>
850
 
<span class="normal">value3 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(m(ii)s)"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#TRUE:CAPS">TRUE</a></span><span class="symbol">,</span><span class="normal"> </span><span class="number">123</span><span class="symbol">,</span><span class="normal"> </span><span class="number">456</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Done"</span><span class="symbol">);</span>
851
 
<span class="normal">value4 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(m(ii)s)"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#FALSE:CAPS">FALSE</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">-</span><span class="number">1</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Done"</span><span class="symbol">);</span><span class="normal">          </span><span class="comment">/* both '-1' are ignored. */</span>
852
 
<span class="normal">value5 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(m@(ii)s)"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Done"</span><span class="symbol">);</span>
853
 
 
854
 
<span class="cbracket">{</span>
855
 
<span class="normal">  </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">contents</span><span class="symbol">;</span>
856
 
<span class="normal">  </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">cstr</span><span class="symbol">;</span>
857
 
<span class="normal">  </span><span class="usertype">gboolean</span><span class="normal"> just</span><span class="symbol">;</span>
858
 
<span class="normal">  </span><span class="usertype">gint32</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">;</span>
859
 
<span class="normal">  </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">str</span><span class="symbol">;</span>
860
 
 
861
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"ms"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">str</span><span class="symbol">);</span>
862
 
<span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">str </span><span class="symbol">!=</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span>
863
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"str: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> str</span><span class="symbol">);</span>
864
 
<span class="normal">  </span><span class="keyword">else</span>
865
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"it was null</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span>
866
 
<span class="normal">  </span><span class="function"><a href="glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">str</span><span class="symbol">);</span>
867
 
 
868
 
 
869
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"m&amp;s"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">cstr</span><span class="symbol">);</span>
870
 
<span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">cstr </span><span class="symbol">!=</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span>
871
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"str: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> cstr</span><span class="symbol">);</span>
872
 
<span class="normal">  </span><span class="keyword">else</span>
873
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"it was null</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span>
874
 
<span class="normal">  </span><span class="comment">/* don't free 'cstr' */</span>
875
 
 
876
 
 
877
 
<span class="normal">  </span><span class="comment">/* NULL passed for the gboolean *, but two 'gint32 *' still collected */</span>
878
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value3</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(m(ii)s)"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">str</span><span class="symbol">);</span>
879
 
<span class="normal">  </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"string is %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> str</span><span class="symbol">);</span>
880
 
<span class="normal">  </span><span class="function"><a href="glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">str</span><span class="symbol">);</span>
881
 
 
882
 
<span class="normal">  </span><span class="comment">/* note: &amp;s used, so g_free() not needed */</span>
883
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value4</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(m(ii)&amp;s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">just</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">x</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">y</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">cstr</span><span class="symbol">);</span>
884
 
<span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">just</span><span class="symbol">)</span>
885
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"it was (%d, %d)</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span>
886
 
<span class="normal">  </span><span class="keyword">else</span>
887
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"it was null</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span>
888
 
<span class="normal">  </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"string is %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> cstr</span><span class="symbol">);</span>
889
 
<span class="normal">  </span><span class="comment">/* don't free 'cstr' */</span>
890
 
 
891
 
 
892
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value5</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(m*s)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">contents</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">);</span><span class="normal"> </span><span class="comment">/* ignore the string. */</span>
893
 
<span class="normal">  </span><span class="keyword">if</span><span class="normal"> </span><span class="symbol">(</span><span class="normal">contents </span><span class="symbol">!=</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">)</span>
894
 
<span class="normal">    </span><span class="cbracket">{</span>
895
 
<span class="normal">      </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">contents</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(ii)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">x</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">y</span><span class="symbol">);</span>
896
 
<span class="normal">      </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"it was (%d, %d)</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span>
897
 
<span class="normal">      </span><span class="function"><a href="glib-GVariant.html#g-variant-unref">g_variant_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">contents</span><span class="symbol">);</span>
898
 
<span class="normal">    </span><span class="cbracket">}</span>
899
 
<span class="normal">  </span><span class="keyword">else</span>
900
 
<span class="normal">    </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"it was null</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">);</span>
901
 
<span class="cbracket">}</span></pre></td>
902
 
      </tr>
903
 
    </tbody>
904
 
  </table>
905
 
</div>
906
 
 
 
689
<a name="idp9732432"></a><h4>Examples</h4>
 
690
<div class="informalexample"><pre class="programlisting">
 
691
GVariant *value1, *value2, *value3, *value4, *value5, *value6;
 
692
value1 = g_variant_new ("ms", "Hello world");
 
693
value2 = g_variant_new ("ms", NULL);
 
694
value3 = g_variant_new ("(m(ii)s)", TRUE, 123, 456, "Done");
 
695
value4 = g_variant_new ("(m(ii)s)", FALSE, -1, -1, "Done");          /* both '-1' are ignored. */
 
696
value5 = g_variant_new ("(m@(ii)s)", NULL, "Done");
 
697
 
 
698
{
 
699
  GVariant *contents;
 
700
  const gchar *cstr;
 
701
  gboolean just;
 
702
  gint32 x, y;
 
703
  gchar *str;
 
704
 
 
705
  g_variant_get (value1, "ms", &amp;str);
 
706
  if (str != NULL)
 
707
    g_print ("str: %s\n", str);
 
708
  else
 
709
    g_print ("it was null\n");
 
710
  g_free (str);
 
711
 
 
712
 
 
713
  g_variant_get (value2, "m&amp;s", &amp;cstr);
 
714
  if (cstr != NULL)
 
715
    g_print ("str: %s\n", cstr);
 
716
  else
 
717
    g_print ("it was null\n");
 
718
  /* don't free 'cstr' */
 
719
 
 
720
 
 
721
  /* NULL passed for the gboolean *, but two 'gint32 *' still collected */
 
722
  g_variant_get (value3, "(m(ii)s)", NULL, NULL, NULL, &amp;str);
 
723
  g_print ("string is %s\n", str);
 
724
  g_free (str);
 
725
 
 
726
  /* note: &amp;s used, so g_free() not needed */
 
727
  g_variant_get (value4, "(m(ii)&amp;s)", &amp;just, &amp;x, &amp;y, &amp;cstr);
 
728
  if (just)
 
729
    g_print ("it was (%d, %d)\n", x, y);
 
730
  else
 
731
    g_print ("it was null\n");
 
732
  g_print ("string is %s\n", cstr);
 
733
  /* don't free 'cstr' */
 
734
 
 
735
 
 
736
  g_variant_get (value5, "(m*s)", &amp;contents, NULL); /* ignore the string. */
 
737
  if (contents != NULL)
 
738
    {
 
739
      g_variant_get (contents, "(ii)", &amp;x, &amp;y);
 
740
      g_print ("it was (%d, %d)\n", x, y);
 
741
      g_variant_unref (contents);
 
742
    }
 
743
  else
 
744
    g_print ("it was null\n");
 
745
}</pre></div>
907
746
</div>
908
747
</div>
909
748
<hr>
918
757
    Tuples are handled by handling each item in the tuple, in sequence.  Each item is handled in the usual way.
919
758
   </p>
920
759
<div class="refsect3">
921
 
<a name="id497549"></a><h4>Examples</h4>
922
 
<div class="informalexample">
923
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
924
 
    <tbody>
925
 
      <tr>
926
 
        <td class="listing_lines" align="right"><pre>1
927
 
2
928
 
3
929
 
4
930
 
5
931
 
6
932
 
7
933
 
8
934
 
9
935
 
10
936
 
11
937
 
12
938
 
13
939
 
14
940
 
15</pre></td>
941
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value2</span><span class="symbol">;</span>
942
 
 
943
 
<span class="normal">value1 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(s(ii))"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"Hello"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">55</span><span class="symbol">,</span><span class="normal"> </span><span class="number">77</span><span class="symbol">);</span>
944
 
<span class="normal">value2 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"()"</span><span class="symbol">);</span>
945
 
 
946
 
<span class="cbracket">{</span>
947
 
<span class="normal">  </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">string</span><span class="symbol">;</span>
948
 
<span class="normal">  </span><span class="usertype">gint</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">;</span>
949
 
 
950
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(s(ii))"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">string</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">x</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">y</span><span class="symbol">);</span>
951
 
<span class="normal">  </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"%s, %d, %d</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> string</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">);</span>
952
 
<span class="normal">  </span><span class="function"><a href="glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">string</span><span class="symbol">);</span>
953
 
 
954
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"()"</span><span class="symbol">);</span><span class="normal">   </span><span class="comment">/* do nothing... */</span>
955
 
<span class="cbracket">}</span></pre></td>
956
 
      </tr>
957
 
    </tbody>
958
 
  </table>
959
 
</div>
960
 
 
 
760
<a name="idp19599040"></a><h4>Examples</h4>
 
761
<div class="informalexample"><pre class="programlisting">
 
762
GVariant *value1, *value2;
 
763
 
 
764
value1 = g_variant_new ("(s(ii))", "Hello", 55, 77);
 
765
value2 = g_variant_new ("()");
 
766
 
 
767
{
 
768
  gchar *string;
 
769
  gint x, y;
 
770
 
 
771
  g_variant_get (value1, "(s(ii))", &amp;string, &amp;x, &amp;y);
 
772
  g_print ("%s, %d, %d\n", string, x, y);
 
773
  g_free (string);
 
774
 
 
775
  g_variant_get (value2, "()");   /* do nothing... */
 
776
}</pre></div>
961
777
</div>
962
778
</div>
963
779
<hr>
972
788
    Dictionary entries are handled by handling first the key, then the value.  Each is handled in the usual way.
973
789
   </p>
974
790
<div class="refsect3">
975
 
<a name="id737790"></a><h4>Examples</h4>
976
 
<div class="informalexample">
977
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
978
 
    <tbody>
979
 
      <tr>
980
 
        <td class="listing_lines" align="right"><pre>1
981
 
2
982
 
3
983
 
4
984
 
5
985
 
6
986
 
7</pre></td>
987
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariantBuilder</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">b</span><span class="symbol">;</span>
988
 
<span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">dict</span><span class="symbol">;</span>
989
 
 
990
 
<span class="normal">b </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-builder-new">g_variant_builder_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="function"><a href="glib-GVariantType.html#G-VARIANT-TYPE:CAPS">G_VARIANT_TYPE</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"a{sv}"</span><span class="symbol">));</span>
991
 
<span class="function"><a href="glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">b</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"{sv}"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"name"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"foo"</span><span class="symbol">));</span>
992
 
<span class="function"><a href="glib-GVariant.html#g-variant-builder-add">g_variant_builder_add</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">b</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"{sv}"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"timeout"</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new-int32">g_variant_new_int32</a></span><span class="normal"> </span><span class="symbol">(</span><span class="number">10</span><span class="symbol">));</span>
993
 
<span class="normal">dict </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-builder-end">g_variant_builder_end</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">b</span><span class="symbol">);</span></pre></td>
994
 
      </tr>
995
 
    </tbody>
996
 
  </table>
997
 
</div>
998
 
 
 
791
<a name="idp7488784"></a><h4>Examples</h4>
 
792
<div class="informalexample"><pre class="programlisting">
 
793
GVariantBuilder *b;
 
794
GVariant *dict;
 
795
 
 
796
b = g_variant_builder_new (G_VARIANT_TYPE ("a{sv}"));
 
797
g_variant_builder_add (b, "{sv}", "name", g_variant_new_string ("foo"));
 
798
g_variant_builder_add (b, "{sv}", "timeout", g_variant_new_int32 (10));
 
799
dict = g_variant_builder_end (b);</pre></div>
999
800
</div>
1000
801
</div>
1001
802
<hr>
1035
836
    improvements in type safety and code self-documentation.
1036
837
   </p>
1037
838
<div class="refsect3">
1038
 
<a name="id495648"></a><h4>Examples</h4>
1039
 
<div class="informalexample">
1040
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
1041
 
    <tbody>
1042
 
      <tr>
1043
 
        <td class="listing_lines" align="right"><pre>1
1044
 
2
1045
 
3
1046
 
4
1047
 
5
1048
 
6
1049
 
7
1050
 
8
1051
 
9
1052
 
10
1053
 
11
1054
 
12
1055
 
13
1056
 
14
1057
 
15
1058
 
16
1059
 
17
1060
 
18
1061
 
19
1062
 
20
1063
 
21
1064
 
22
1065
 
23</pre></td>
1066
 
        <td class="listing_code"><pre class="programlisting"><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value1</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value2</span><span class="symbol">;</span>
1067
 
 
1068
 
<span class="normal">value1 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(i@ii)"</span><span class="symbol">,</span><span class="normal"> </span><span class="number">44</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new-int32">g_variant_new_int32</a></span><span class="normal"> </span><span class="symbol">(</span><span class="number">55</span><span class="symbol">),</span><span class="normal"> </span><span class="number">66</span><span class="symbol">);</span>
1069
 
 
1070
 
<span class="comment">/* note: consumes floating reference count on 'value1' */</span>
1071
 
<span class="normal">value2 </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"(@(iii)*)"</span><span class="symbol">,</span><span class="normal"> value1</span><span class="symbol">,</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new-string">g_variant_new_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"foo"</span><span class="symbol">));</span>
1072
 
 
1073
 
<span class="cbracket">{</span>
1074
 
<span class="normal">  </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">string</span><span class="symbol">;</span>
1075
 
<span class="normal">  </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">tmp</span><span class="symbol">;</span>
1076
 
<span class="normal">  </span><span class="usertype">gsize</span><span class="normal"> length</span><span class="symbol">;</span>
1077
 
<span class="normal">  </span><span class="usertype">gint</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> z</span><span class="symbol">;</span>
1078
 
 
1079
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"((iii)*)"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">x</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">y</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">z</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">tmp</span><span class="symbol">);</span>
1080
 
<span class="normal">  string </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-get-string">g_variant_get_string</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">tmp</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">length</span><span class="symbol">);</span>
1081
 
<span class="normal">  </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"it is %d %d %d %s (length=%d)</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> x</span><span class="symbol">,</span><span class="normal"> y</span><span class="symbol">,</span><span class="normal"> z</span><span class="symbol">,</span><span class="normal"> string</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">(</span><span class="type">int</span><span class="symbol">)</span><span class="normal"> length</span><span class="symbol">);</span>
1082
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-unref">g_variant_unref</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">tmp</span><span class="symbol">);</span>
1083
 
 
1084
 
<span class="normal">  </span><span class="comment">/* quick way to skip all the values in a tuple */</span>
1085
 
<span class="normal">  </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">value2</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"(rs)"</span><span class="symbol">,</span><span class="normal"> <a href="glib-Standard-Macros.html#NULL:CAPS">NULL</a></span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">string</span><span class="symbol">);</span><span class="normal"> </span><span class="comment">/* or "(@(iii)s)" */</span>
1086
 
<span class="normal">  </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"i only got the string: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> string</span><span class="symbol">);</span>
1087
 
<span class="normal">  </span><span class="function"><a href="glib-Memory-Allocation.html#g-free">g_free</a></span><span class="normal"> </span><span class="symbol">(</span><span class="normal">string</span><span class="symbol">);</span>
1088
 
<span class="cbracket">}</span></pre></td>
1089
 
      </tr>
1090
 
    </tbody>
1091
 
  </table>
1092
 
</div>
1093
 
 
 
839
<a name="idp8941024"></a><h4>Examples</h4>
 
840
<div class="informalexample"><pre class="programlisting">
 
841
GVariant *value1, *value2;
 
842
 
 
843
value1 = g_variant_new ("(i@ii)", 44, g_variant_new_int32 (55), 66);
 
844
 
 
845
/* note: consumes floating reference count on 'value1' */
 
846
value2 = g_variant_new ("(@(iii)*)", value1, g_variant_new_string ("foo"));
 
847
 
 
848
{
 
849
  const gchar *string;
 
850
  GVariant *tmp;
 
851
  gsize length;
 
852
  gint x, y, z;
 
853
 
 
854
  g_variant_get (value2, "((iii)*)", &amp;x, &amp;y, &amp;z, &amp;tmp);
 
855
  string = g_variant_get_string (tmp, &amp;length);
 
856
  g_print ("it is %d %d %d %s (length=%d)\n", x, y, z, string, (int) length);
 
857
  g_variant_unref (tmp);
 
858
 
 
859
  /* quick way to skip all the values in a tuple */
 
860
  g_variant_get (value2, "(rs)", NULL, &amp;string); /* or "(@(iii)s)" */
 
861
  g_print ("i only got the string: %s\n", string);
 
862
  g_free (string);
 
863
}</pre></div>
1094
864
</div>
1095
865
</div>
1096
866
<hr>
1115
885
    always be properly nul-terminated.
1116
886
   </p>
1117
887
<div class="refsect3">
1118
 
<a name="id567888"></a><h4>Examples</h4>
1119
 
<div class="informalexample">
1120
 
  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
1121
 
    <tbody>
1122
 
      <tr>
1123
 
        <td class="listing_lines" align="right"><pre>1
1124
 
2
1125
 
3
1126
 
4
1127
 
5
1128
 
6
1129
 
7
1130
 
8
1131
 
9</pre></td>
1132
 
        <td class="listing_code"><pre class="programlisting"><span class="cbracket">{</span>
1133
 
<span class="normal">  </span><span class="keyword">const</span><span class="normal"> </span><span class="usertype">gchar</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">str</span><span class="symbol">;</span>
1134
 
<span class="normal">  </span><span class="usertype">GVariant</span><span class="normal"> </span><span class="symbol">*</span><span class="normal">value</span><span class="symbol">;</span>
1135
 
 
1136
 
<span class="normal">  value </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-new">g_variant_new</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"&amp;s"</span><span class="symbol">,</span><span class="normal"> </span><span class="string">"hello world"</span><span class="symbol">);</span>
1137
 
<span class="normal">  str </span><span class="symbol">=</span><span class="normal"> </span><span class="function"><a href="glib-GVariant.html#g-variant-get">g_variant_get</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"&amp;s"</span><span class="symbol">,</span><span class="normal"> </span><span class="symbol">&amp;</span><span class="normal">str</span><span class="symbol">);</span>
1138
 
<span class="normal">  </span><span class="function"><a href="glib-Warnings-and-Assertions.html#g-print">g_print</a></span><span class="normal"> </span><span class="symbol">(</span><span class="string">"string is: %s</span><span class="specialchar">\n</span><span class="string">"</span><span class="symbol">,</span><span class="normal"> str</span><span class="symbol">);</span>
1139
 
<span class="normal">  </span><span class="comment">/* no need to free str */</span>
1140
 
<span class="cbracket">}</span></pre></td>
1141
 
      </tr>
1142
 
    </tbody>
1143
 
  </table>
1144
 
</div>
1145
 
 
 
888
<a name="idp33406592"></a><h4>Examples</h4>
 
889
<div class="informalexample"><pre class="programlisting">
 
890
{
 
891
  const gchar *str;
 
892
  GVariant *value;
 
893
 
 
894
  value = g_variant_new ("&amp;s", "hello world");
 
895
  str = g_variant_get ("&amp;s", &amp;str);
 
896
  g_print ("string is: %s\n", str);
 
897
  /* no need to free str */
 
898
}</pre></div>
1146
899
</div>
1147
900
</div>
1148
901
<hr>