~ubuntu-branches/debian/sid/glib2.0/sid

« back to all changes in this revision

Viewing changes to docs/reference/glib/html/glib-Keyed-Data-Lists.html

  • Committer: Package Import Robot
  • Author(s): Martin Pitt
  • Date: 2013-05-08 06:25:57 UTC
  • mfrom: (1.27.14) (3.1.181 experimental)
  • Revision ID: package-import@ubuntu.com-20130508062557-i7gbku66mls70gi2
Tags: 2.36.1-2
Merge experimental branch, upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
<link rel="up" href="glib-data-types.html" title="GLib Data Types">
9
9
<link rel="prev" href="glib-Quarks.html" title="Quarks">
10
10
<link rel="next" href="glib-Datasets.html" title="Datasets">
11
 
<meta name="generator" content="GTK-Doc V1.18 (XML mode)">
 
11
<meta name="generator" content="GTK-Doc V1.18.1 (XML mode)">
12
12
<link rel="stylesheet" href="style.css" type="text/css">
13
13
</head>
14
14
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
57
57
                                                         q)
58
58
<a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-id-remove-no-notify" title="g_datalist_id_remove_no_notify ()">g_datalist_id_remove_no_notify</a>      (<em class="parameter"><code><a class="link" href="glib-Keyed-Data-Lists.html#GData" title="GData"><span class="type">GData</span></a> **datalist</code></em>,
59
59
                                                         <em class="parameter"><code><a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> key_id</code></em>);
 
60
<a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            (<a class="link" href="glib-Keyed-Data-Lists.html#GDuplicateFunc" title="GDuplicateFunc ()">*GDuplicateFunc</a>)                   (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> data</code></em>,
 
61
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
 
62
<a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-id-dup-data" title="g_datalist_id_dup_data ()">g_datalist_id_dup_data</a>              (<em class="parameter"><code><a class="link" href="glib-Keyed-Data-Lists.html#GData" title="GData"><span class="type">GData</span></a> **datalist</code></em>,
 
63
                                                         <em class="parameter"><code><a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> key_id</code></em>,
 
64
                                                         <em class="parameter"><code><a class="link" href="glib-Keyed-Data-Lists.html#GDuplicateFunc" title="GDuplicateFunc ()"><span class="type">GDuplicateFunc</span></a> dup_func</code></em>,
 
65
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>);
 
66
<a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a>            <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-id-replace-data" title="g_datalist_id_replace_data ()">g_datalist_id_replace_data</a>          (<em class="parameter"><code><a class="link" href="glib-Keyed-Data-Lists.html#GData" title="GData"><span class="type">GData</span></a> **datalist</code></em>,
 
67
                                                         <em class="parameter"><code><a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> key_id</code></em>,
 
68
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> oldval</code></em>,
 
69
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> newval</code></em>,
 
70
                                                         <em class="parameter"><code><a class="link" href="glib-Datasets.html#GDestroyNotify" title="GDestroyNotify ()"><span class="type">GDestroyNotify</span></a> destroy</code></em>,
 
71
                                                         <em class="parameter"><code><a class="link" href="glib-Datasets.html#GDestroyNotify" title="GDestroyNotify ()"><span class="type">GDestroyNotify</span></a> *old_destroy</code></em>);
60
72
 
61
73
#define             <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-set-data" title="g_datalist_set_data()">g_datalist_set_data</a>                 (dl,
62
74
                                                         k,
96
108
converted to <a href="glib-Quarks.html#GQuark"><span class="type">GQuarks</span></a> anyway.
97
109
</p>
98
110
<p>
99
 
Data lists are used for associating arbitrary data with <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObjects</span></a>,
100
 
using <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-set-data"><code class="function">g_object_set_data()</code></a> and related functions.
 
111
Data lists are used for associating arbitrary data with <span class="type">GObjects</span>,
 
112
using <code class="function">g_object_set_data()</code> and related functions.
101
113
</p>
102
114
<p>
103
115
To create a datalist, use <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-init" title="g_datalist_init ()"><code class="function">g_datalist_init()</code></a>.
313
325
</div>
314
326
<hr>
315
327
<div class="refsect2">
 
328
<a name="GDuplicateFunc"></a><h3>GDuplicateFunc ()</h3>
 
329
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            (*GDuplicateFunc)                   (<em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> data</code></em>,
 
330
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 
331
<p>
 
332
The type of functions that are used to 'duplicate' an object.
 
333
What this means depends on the context, it could just be
 
334
incrementing the reference count, if <em class="parameter"><code>data</code></em> is a ref-counted
 
335
object.
 
336
</p>
 
337
<div class="variablelist"><table border="0" class="variablelist">
 
338
<colgroup>
 
339
<col align="left" valign="top">
 
340
<col>
 
341
</colgroup>
 
342
<tbody>
 
343
<tr>
 
344
<td><p><span class="term"><em class="parameter"><code>data</code></em> :</span></p></td>
 
345
<td>the data to duplicate</td>
 
346
</tr>
 
347
<tr>
 
348
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
 
349
<td>user data that was specified in <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-id-dup-data" title="g_datalist_id_dup_data ()"><code class="function">g_datalist_id_dup_data()</code></a>
 
350
</td>
 
351
</tr>
 
352
<tr>
 
353
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
354
<td>a duplicate of data</td>
 
355
</tr>
 
356
</tbody>
 
357
</table></div>
 
358
</div>
 
359
<hr>
 
360
<div class="refsect2">
 
361
<a name="g-datalist-id-dup-data"></a><h3>g_datalist_id_dup_data ()</h3>
 
362
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="returnvalue">gpointer</span></a>            g_datalist_id_dup_data              (<em class="parameter"><code><a class="link" href="glib-Keyed-Data-Lists.html#GData" title="GData"><span class="type">GData</span></a> **datalist</code></em>,
 
363
                                                         <em class="parameter"><code><a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> key_id</code></em>,
 
364
                                                         <em class="parameter"><code><a class="link" href="glib-Keyed-Data-Lists.html#GDuplicateFunc" title="GDuplicateFunc ()"><span class="type">GDuplicateFunc</span></a> dup_func</code></em>,
 
365
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
 
366
<p>
 
367
This is a variant of <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-id-get-data" title="g_datalist_id_get_data ()"><code class="function">g_datalist_id_get_data()</code></a> which
 
368
returns a 'duplicate' of the value. <em class="parameter"><code>dup_func</code></em> defines the
 
369
meaning of 'duplicate' in this context, it could e.g.
 
370
take a reference on a ref-counted object.
 
371
</p>
 
372
<p>
 
373
If the <em class="parameter"><code>key_id</code></em> is not set in the datalist then <em class="parameter"><code>dup_func</code></em>
 
374
will be called with a <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> argument.
 
375
</p>
 
376
<p>
 
377
Note that <em class="parameter"><code>dup_func</code></em> is called while the datalist is locked, so it
 
378
is not allowed to read or modify the datalist.
 
379
</p>
 
380
<p>
 
381
This function can be useful to avoid races when multiple
 
382
threads are using the same datalist and the same key.
 
383
</p>
 
384
<div class="variablelist"><table border="0" class="variablelist">
 
385
<colgroup>
 
386
<col align="left" valign="top">
 
387
<col>
 
388
</colgroup>
 
389
<tbody>
 
390
<tr>
 
391
<td><p><span class="term"><em class="parameter"><code>datalist</code></em> :</span></p></td>
 
392
<td>location of a datalist</td>
 
393
</tr>
 
394
<tr>
 
395
<td><p><span class="term"><em class="parameter"><code>key_id</code></em> :</span></p></td>
 
396
<td>the <a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> identifying a data element</td>
 
397
</tr>
 
398
<tr>
 
399
<td><p><span class="term"><em class="parameter"><code>dup_func</code></em> :</span></p></td>
 
400
<td>function to duplicate the old value. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
 
401
</td>
 
402
</tr>
 
403
<tr>
 
404
<td><p><span class="term"><em class="parameter"><code>user_data</code></em> :</span></p></td>
 
405
<td>passed as user_data to <em class="parameter"><code>dup_func</code></em>. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
 
406
</td>
 
407
</tr>
 
408
<tr>
 
409
<td><p><span class="term"><span class="emphasis"><em>Returns</em></span> :</span></p></td>
 
410
<td>the result of calling <em class="parameter"><code>dup_func</code></em> on the value
 
411
associated with <em class="parameter"><code>key_id</code></em> in <em class="parameter"><code>datalist</code></em>, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> if not set.
 
412
If <em class="parameter"><code>dup_func</code></em> is <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>, the value is returned unmodified.</td>
 
413
</tr>
 
414
</tbody>
 
415
</table></div>
 
416
<p class="since">Since 2.34</p>
 
417
</div>
 
418
<hr>
 
419
<div class="refsect2">
 
420
<a name="g-datalist-id-replace-data"></a><h3>g_datalist_id_replace_data ()</h3>
 
421
<pre class="programlisting"><a class="link" href="glib-Basic-Types.html#gboolean" title="gboolean"><span class="returnvalue">gboolean</span></a>            g_datalist_id_replace_data          (<em class="parameter"><code><a class="link" href="glib-Keyed-Data-Lists.html#GData" title="GData"><span class="type">GData</span></a> **datalist</code></em>,
 
422
                                                         <em class="parameter"><code><a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> key_id</code></em>,
 
423
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> oldval</code></em>,
 
424
                                                         <em class="parameter"><code><a class="link" href="glib-Basic-Types.html#gpointer" title="gpointer"><span class="type">gpointer</span></a> newval</code></em>,
 
425
                                                         <em class="parameter"><code><a class="link" href="glib-Datasets.html#GDestroyNotify" title="GDestroyNotify ()"><span class="type">GDestroyNotify</span></a> destroy</code></em>,
 
426
                                                         <em class="parameter"><code><a class="link" href="glib-Datasets.html#GDestroyNotify" title="GDestroyNotify ()"><span class="type">GDestroyNotify</span></a> *old_destroy</code></em>);</pre>
 
427
<p>
 
428
Compares the member that is associated with <em class="parameter"><code>key_id</code></em> in
 
429
<em class="parameter"><code>datalist</code></em> to <em class="parameter"><code>oldval</code></em>, and if they are the same, replace
 
430
<em class="parameter"><code>oldval</code></em> with <em class="parameter"><code>newval</code></em>.
 
431
</p>
 
432
<p>
 
433
This is like a typical atomic compare-and-exchange
 
434
operation, for a member of <em class="parameter"><code>datalist</code></em>.
 
435
</p>
 
436
<p>
 
437
If the previous value was replaced then ownership of the
 
438
old value (<em class="parameter"><code>oldval</code></em>) is passed to the caller, including
 
439
the registred destroy notify for it (passed out in <em class="parameter"><code>old_destroy</code></em>).
 
440
Its up to the caller to free this as he wishes, which may
 
441
or may not include using <em class="parameter"><code>old_destroy</code></em> as sometimes replacement
 
442
should not destroy the object in the normal way.
 
443
</p>
 
444
<p>
 
445
Return: <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if the existing value for <em class="parameter"><code>key_id</code></em> was replaced
 
446
 by <em class="parameter"><code>newval</code></em>, <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> otherwise.
 
447
</p>
 
448
<div class="variablelist"><table border="0" class="variablelist">
 
449
<colgroup>
 
450
<col align="left" valign="top">
 
451
<col>
 
452
</colgroup>
 
453
<tbody>
 
454
<tr>
 
455
<td><p><span class="term"><em class="parameter"><code>datalist</code></em> :</span></p></td>
 
456
<td>location of a datalist</td>
 
457
</tr>
 
458
<tr>
 
459
<td><p><span class="term"><em class="parameter"><code>key_id</code></em> :</span></p></td>
 
460
<td>the <a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> identifying a data element</td>
 
461
</tr>
 
462
<tr>
 
463
<td><p><span class="term"><em class="parameter"><code>oldval</code></em> :</span></p></td>
 
464
<td>the old value to compare against. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
 
465
</td>
 
466
</tr>
 
467
<tr>
 
468
<td><p><span class="term"><em class="parameter"><code>newval</code></em> :</span></p></td>
 
469
<td>the new value to replace it with. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
 
470
</td>
 
471
</tr>
 
472
<tr>
 
473
<td><p><span class="term"><em class="parameter"><code>destroy</code></em> :</span></p></td>
 
474
<td>destroy notify for the new value. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
 
475
</td>
 
476
</tr>
 
477
<tr>
 
478
<td><p><span class="term"><em class="parameter"><code>old_destroy</code></em> :</span></p></td>
 
479
<td>destroy notify for the existing value. <span class="annotation">[<acronym title="NULL is ok, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span>
 
480
</td>
 
481
</tr>
 
482
</tbody>
 
483
</table></div>
 
484
<p class="since">Since 2.34</p>
 
485
</div>
 
486
<hr>
 
487
<div class="refsect2">
316
488
<a name="g-datalist-set-data"></a><h3>g_datalist_set_data()</h3>
317
489
<pre class="programlisting">#define             g_datalist_set_data(dl, k, d)</pre>
318
490
<p>
523
695
to keep a small number of boolean flags in an object with
524
696
a data list without using any additional space. It is
525
697
not generally useful except in circumstances where space
526
 
is very tight. (It is used in the base <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> type, for
 
698
is very tight. (It is used in the base <span class="type">GObject</span> type, for
527
699
example.)
528
700
</p>
529
701
<div class="variablelist"><table border="0" class="variablelist">
619
791
</div>
620
792
<div class="footer">
621
793
<hr>
622
 
          Generated by GTK-Doc V1.18</div>
 
794
          Generated by GTK-Doc V1.18.1</div>
623
795
</body>
624
796
</html>
 
 
b'\\ No newline at end of file'