1
/* backend.c generated by valac 0.12.0, the Vala compiler
2
* generated from backend.vala, do not modify */
5
* Copyright (C) 2011 Collabora Ltd.
7
* This library is free software: you can redistribute it and/or modify
8
* it under the terms of the GNU Lesser General Public License as published by
9
* the Free Software Foundation, either version 2.1 of the License, or
10
* (at your option) any later version.
12
* This library is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU Lesser General Public License for more details.
17
* You should have received a copy of the GNU Lesser General Public License
18
* along with this library. If not, see <http://www.gnu.org/licenses/>.
20
* Authors :Raul Gutierrez Segales <raul.gutierrez.segales@collabora.co.uk>
25
#include <glib-object.h>
29
#include <libtracker-sparql/tracker-sparql.h>
32
#include <folks/folks-tracker.h>
33
#include <gobject/gvaluecollector.h>
36
#define TRACKER_TEST_TYPE_BACKEND (tracker_test_backend_get_type ())
37
#define TRACKER_TEST_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_TEST_TYPE_BACKEND, TrackerTestBackend))
38
#define TRACKER_TEST_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_TEST_TYPE_BACKEND, TrackerTestBackendClass))
39
#define TRACKER_TEST_IS_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_TEST_TYPE_BACKEND))
40
#define TRACKER_TEST_IS_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_TEST_TYPE_BACKEND))
41
#define TRACKER_TEST_BACKEND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_TEST_TYPE_BACKEND, TrackerTestBackendClass))
43
typedef struct _TrackerTestBackend TrackerTestBackend;
44
typedef struct _TrackerTestBackendClass TrackerTestBackendClass;
45
typedef struct _TrackerTestBackendPrivate TrackerTestBackendPrivate;
46
#define __g_list_free__g_object_unref0_0(var) ((var == NULL) ? NULL : (var = (_g_list_free__g_object_unref0_ (var), NULL)))
47
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
48
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
49
#define _g_free0(var) (var = (g_free (var), NULL))
50
typedef struct _TrackerTestParamSpecBackend TrackerTestParamSpecBackend;
53
TRACKER_TEST_BACKEND_SETUP_ERROR_ADD_CONTACT_FAILED
54
} TrackerTestBackendSetupError;
55
#define TRACKER_TEST_BACKEND_SETUP_ERROR tracker_test_backend_setup_error_quark ()
56
struct _TrackerTestBackend {
57
GTypeInstance parent_instance;
58
volatile int ref_count;
59
TrackerTestBackendPrivate * priv;
62
struct _TrackerTestBackendClass {
63
GTypeClass parent_class;
64
void (*finalize) (TrackerTestBackend *self);
67
struct _TrackerTestBackendPrivate {
70
TrackerSparqlConnection* _connection;
73
struct _TrackerTestParamSpecBackend {
74
GParamSpec parent_instance;
78
static gpointer tracker_test_backend_parent_class = NULL;
80
GQuark tracker_test_backend_setup_error_quark (void);
81
gpointer tracker_test_backend_ref (gpointer instance);
82
void tracker_test_backend_unref (gpointer instance);
83
GParamSpec* tracker_test_param_spec_backend (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
84
void tracker_test_value_set_backend (GValue* value, gpointer v_object);
85
void tracker_test_value_take_backend (GValue* value, gpointer v_object);
86
gpointer tracker_test_value_get_backend (const GValue* value);
87
GType tracker_test_backend_get_type (void) G_GNUC_CONST;
88
#define TRACKER_TEST_BACKEND_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TEST_TYPE_BACKEND, TrackerTestBackendPrivate))
90
TRACKER_TEST_BACKEND_DUMMY_PROPERTY
92
static void _g_object_unref0_ (gpointer var);
93
static void _g_list_free__g_object_unref0_ (GList* self);
94
#define TRACKER_TEST_BACKEND_URN "urn:contact"
95
#define TRACKER_TEST_BACKEND_URLS "nco:urls"
96
TrackerTestBackend* tracker_test_backend_new (void);
97
TrackerTestBackend* tracker_test_backend_construct (GType object_type);
98
void tracker_test_backend_set_debug (TrackerTestBackend* self, gboolean value);
99
void tracker_test_backend_add_contact (TrackerTestBackend* self, GeeHashMap* c);
100
static GeeHashMap* _tracker_test_backend_copy_hash_map (TrackerTestBackend* self, GeeHashMap* orig);
101
void tracker_test_backend_tear_down (TrackerTestBackend* self);
102
void tracker_test_backend_reset (TrackerTestBackend* self);
103
void tracker_test_backend_set_up (TrackerTestBackend* self);
104
static void _tracker_test_backend_setup_connection (TrackerTestBackend* self, GError** error);
105
static void _tracker_test_backend_add_contacts (TrackerTestBackend* self, GError** error);
106
gboolean tracker_test_backend_update_contact (TrackerTestBackend* self, const gchar* contact_urn, const gchar* predicate, const gchar* literal_subject);
107
static gboolean _tracker_test_backend_do_update_query (TrackerTestBackend* self, const gchar* query);
108
gboolean tracker_test_backend_update_favourite (TrackerTestBackend* self, const gchar* contact_urn, gboolean is_favourite);
109
gboolean tracker_test_backend_remove_contact (TrackerTestBackend* self, const gchar* tracker_id);
110
gboolean tracker_test_backend_remove_triplet (TrackerTestBackend* self, const gchar* subject_urn, const gchar* pred, const gchar* object_urn);
111
gboolean tracker_test_backend_insert_triplet (TrackerTestBackend* self, const gchar* subject_iri, const gchar* pred, const gchar* object_iri, const gchar* pred_b, const gchar* obj_literal_b, const gchar* pred_c, const gchar* obj_literal_c);
112
gboolean tracker_test_backend_get_debug (TrackerTestBackend* self);
113
static gchar* _tracker_test_backend_get_insert_query (TrackerTestBackend* self, GeeHashMap* contact);
114
static GeeHashMap* _tracker_test_backend_parse_addrs (TrackerTestBackend* self, const gchar* addr_s);
115
static gchar* _tracker_test_backend_build_relation (TrackerTestBackend* self, const gchar* predicate, gchar** objects, int objects_length1);
116
static void tracker_test_backend_finalize (TrackerTestBackend* obj);
117
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func);
118
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func);
119
static gint _vala_array_length (gpointer array);
122
GQuark tracker_test_backend_setup_error_quark (void) {
123
return g_quark_from_static_string ("tracker_test_backend_setup_error-quark");
127
static void _g_object_unref0_ (gpointer var) {
128
(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
132
static void _g_list_free__g_object_unref0_ (GList* self) {
133
g_list_foreach (self, (GFunc) _g_object_unref0_, NULL);
138
TrackerTestBackend* tracker_test_backend_construct (GType object_type) {
139
TrackerTestBackend* self = NULL;
140
self = (TrackerTestBackend*) g_type_create_instance (object_type);
141
tracker_test_backend_set_debug (self, FALSE);
142
__g_list_free__g_object_unref0_0 (self->priv->_contacts);
143
self->priv->_contacts = NULL;
148
TrackerTestBackend* tracker_test_backend_new (void) {
149
return tracker_test_backend_construct (TRACKER_TEST_TYPE_BACKEND);
153
static gpointer _g_object_ref0 (gpointer self) {
154
return self ? g_object_ref (self) : NULL;
158
void tracker_test_backend_add_contact (TrackerTestBackend* self, GeeHashMap* c) {
159
GeeHashMap* _tmp0_ = NULL;
162
g_return_if_fail (self != NULL);
163
g_return_if_fail (c != NULL);
164
_tmp0_ = _tracker_test_backend_copy_hash_map (self, c);
166
_tmp1_ = _g_object_ref0 (contact);
167
self->priv->_contacts = g_list_prepend (self->priv->_contacts, _tmp1_);
168
_g_object_unref0 (contact);
172
void tracker_test_backend_tear_down (TrackerTestBackend* self) {
173
g_return_if_fail (self != NULL);
177
void tracker_test_backend_reset (TrackerTestBackend* self) {
178
g_return_if_fail (self != NULL);
179
__g_list_free__g_object_unref0_0 (self->priv->_contacts);
180
self->priv->_contacts = NULL;
184
void tracker_test_backend_set_up (TrackerTestBackend* self) {
185
GError * _inner_error_ = NULL;
186
g_return_if_fail (self != NULL);
187
_tracker_test_backend_setup_connection (self, &_inner_error_);
188
if (_inner_error_ != NULL) {
189
if (_inner_error_->domain == TRACKER_TEST_BACKEND_SETUP_ERROR) {
190
goto __catch0_tracker_test_backend_setup_error;
192
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
193
g_clear_error (&_inner_error_);
196
_tracker_test_backend_add_contacts (self, &_inner_error_);
197
if (_inner_error_ != NULL) {
198
if (_inner_error_->domain == TRACKER_TEST_BACKEND_SETUP_ERROR) {
199
goto __catch0_tracker_test_backend_setup_error;
201
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
202
g_clear_error (&_inner_error_);
206
__catch0_tracker_test_backend_setup_error:
210
_inner_error_ = NULL;
211
g_warning ("backend.vala:71: unable to create test data: %s\n", e->message);
215
if (_inner_error_ != NULL) {
216
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
217
g_clear_error (&_inner_error_);
223
gboolean tracker_test_backend_update_contact (TrackerTestBackend* self, const gchar* contact_urn, const gchar* predicate, const gchar* literal_subject) {
224
gboolean result = FALSE;
225
static const char delete_query_t[] = "DELETE { %s %s ?a } WHERE " "{ ?p a nco:PersonContact " " ; %s ?a . FILTER(?p = %s ) } ";
226
static const char update_query_t[] = "INSERT { %s %s '%s' } ";
227
gchar* _tmp0_ = NULL;
230
gchar* _tmp2_ = NULL;
233
g_return_val_if_fail (self != NULL, FALSE);
234
g_return_val_if_fail (contact_urn != NULL, FALSE);
235
g_return_val_if_fail (predicate != NULL, FALSE);
236
g_return_val_if_fail (literal_subject != NULL, FALSE);
237
_tmp0_ = g_strdup_printf (delete_query_t, contact_urn, predicate, predicate, contact_urn);
238
delete_query = _tmp0_;
239
_tmp1_ = _tracker_test_backend_do_update_query (self, delete_query);
240
if (_tmp1_ == FALSE) {
241
g_warning ("backend.vala:87: Couldn't delete the old triplet");
243
_g_free0 (delete_query);
246
_tmp2_ = g_strdup_printf (update_query_t, contact_urn, predicate, literal_subject);
247
update_query = _tmp2_;
248
_tmp3_ = _tracker_test_backend_do_update_query (self, update_query);
249
if (_tmp3_ == FALSE) {
250
g_warning ("backend.vala:95: Couldn't insert the triplet");
252
_g_free0 (update_query);
253
_g_free0 (delete_query);
257
_g_free0 (update_query);
258
_g_free0 (delete_query);
263
gboolean tracker_test_backend_update_favourite (TrackerTestBackend* self, const gchar* contact_urn, gboolean is_favourite) {
264
gboolean result = FALSE;
271
g_return_val_if_fail (self != NULL, FALSE);
272
g_return_val_if_fail (contact_urn != NULL, FALSE);
273
_tmp0_ = g_strdup ("");
277
_tmp1_ = g_strconcat (q, "INSERT { ", NULL);
282
_tmp2_ = g_strconcat (q, "DELETE { ", NULL);
286
_tmp3_ = g_strconcat (contact_urn, " nao:hasTag nao:predefined-tag-favorite } ", NULL);
288
_tmp5_ = g_strconcat (q, _tmp4_, NULL);
292
_tmp6_ = _tracker_test_backend_do_update_query (self, q);
293
if (_tmp6_ == FALSE) {
294
g_warning ("backend.vala:118: Couldn't change favourite status");
305
gboolean tracker_test_backend_remove_contact (TrackerTestBackend* self, const gchar* tracker_id) {
306
gboolean result = FALSE;
316
g_return_val_if_fail (self != NULL, FALSE);
317
g_return_val_if_fail (tracker_id != NULL, FALSE);
318
_tmp0_ = g_strdup ("DELETE { ?p a nco:PersonContact } ");
319
delete_query = _tmp0_;
320
_tmp1_ = g_strconcat (delete_query, "WHERE { ?p a nco:PersonContact . FILTER(tracker:id(?p) ", NULL);
321
_g_free0 (delete_query);
322
delete_query = _tmp1_;
323
_tmp2_ = g_strconcat ("= ", tracker_id, NULL);
325
_tmp4_ = g_strconcat (_tmp3_, ") } ", NULL);
327
_tmp6_ = g_strconcat (delete_query, _tmp5_, NULL);
328
_g_free0 (delete_query);
329
delete_query = _tmp6_;
332
_tmp7_ = _tracker_test_backend_do_update_query (self, delete_query);
333
if (_tmp7_ == FALSE) {
334
g_warning ("backend.vala:133: Couldn't delete the contact");
336
_g_free0 (delete_query);
340
_g_free0 (delete_query);
345
gboolean tracker_test_backend_remove_triplet (TrackerTestBackend* self, const gchar* subject_urn, const gchar* pred, const gchar* object_urn) {
346
gboolean result = FALSE;
347
TrackerSparqlBuilder* _tmp0_ = NULL;
348
TrackerSparqlBuilder* builder;
349
const gchar* _tmp1_ = NULL;
351
g_return_val_if_fail (self != NULL, FALSE);
352
g_return_val_if_fail (subject_urn != NULL, FALSE);
353
g_return_val_if_fail (pred != NULL, FALSE);
354
g_return_val_if_fail (object_urn != NULL, FALSE);
355
_tmp0_ = tracker_sparql_builder_new_update ();
357
tracker_sparql_builder_delete_open (builder, NULL);
358
tracker_sparql_builder_subject (builder, subject_urn);
359
tracker_sparql_builder_predicate (builder, pred);
360
tracker_sparql_builder_object (builder, object_urn);
361
tracker_sparql_builder_delete_close (builder);
362
_tmp1_ = tracker_sparql_builder_get_result (builder);
363
_tmp2_ = _tracker_test_backend_do_update_query (self, _tmp1_);
364
if (_tmp2_ == FALSE) {
365
const gchar* _tmp3_ = NULL;
366
_tmp3_ = tracker_sparql_builder_get_result (builder);
367
g_warning ("backend.vala:152: Couldn't delete triplet with query: %s\n", _tmp3_);
369
_g_object_unref0 (builder);
373
_g_object_unref0 (builder);
378
gboolean tracker_test_backend_insert_triplet (TrackerTestBackend* self, const gchar* subject_iri, const gchar* pred, const gchar* object_iri, const gchar* pred_b, const gchar* obj_literal_b, const gchar* pred_c, const gchar* obj_literal_c) {
379
gboolean result = FALSE;
380
TrackerSparqlBuilder* _tmp0_ = NULL;
381
TrackerSparqlBuilder* builder;
382
const gchar* _tmp1_ = NULL;
384
g_return_val_if_fail (self != NULL, FALSE);
385
g_return_val_if_fail (subject_iri != NULL, FALSE);
386
g_return_val_if_fail (pred != NULL, FALSE);
387
g_return_val_if_fail (object_iri != NULL, FALSE);
388
_tmp0_ = tracker_sparql_builder_new_update ();
390
tracker_sparql_builder_insert_open (builder, NULL);
391
tracker_sparql_builder_subject (builder, subject_iri);
392
tracker_sparql_builder_predicate (builder, pred);
393
tracker_sparql_builder_object (builder, object_iri);
394
if (pred_b != NULL) {
395
tracker_sparql_builder_predicate (builder, pred_b);
396
tracker_sparql_builder_object_string (builder, obj_literal_b);
398
if (pred_c != NULL) {
399
tracker_sparql_builder_predicate (builder, pred_c);
400
tracker_sparql_builder_object_string (builder, obj_literal_c);
402
tracker_sparql_builder_insert_close (builder);
403
_tmp1_ = tracker_sparql_builder_get_result (builder);
404
_tmp2_ = _tracker_test_backend_do_update_query (self, _tmp1_);
405
if (_tmp2_ == FALSE) {
406
const gchar* _tmp3_ = NULL;
407
_tmp3_ = tracker_sparql_builder_get_result (builder);
408
g_warning ("backend.vala:187: Couldn't insert triplet with query: %s\n", _tmp3_);
410
_g_object_unref0 (builder);
414
_g_object_unref0 (builder);
419
static gboolean _tracker_test_backend_do_update_query (TrackerTestBackend* self, const gchar* query) {
420
gboolean result = FALSE;
422
GError * _inner_error_ = NULL;
423
g_return_val_if_fail (self != NULL, FALSE);
424
g_return_val_if_fail (query != NULL, FALSE);
426
if (self->priv->_debug) {
427
fprintf (stdout, "_do_update_query : %s\n", query);
429
tracker_sparql_connection_update (self->priv->_connection, query, G_PRIORITY_DEFAULT, NULL, &_inner_error_);
430
if (_inner_error_ != NULL) {
431
if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
432
goto __catch1_tracker_sparql_error;
434
if (_inner_error_->domain == G_IO_ERROR) {
435
goto __catch1_g_io_error;
437
if (_inner_error_->domain == G_DBUS_ERROR) {
438
goto __catch1_g_dbus_error;
440
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
441
g_clear_error (&_inner_error_);
446
__catch1_tracker_sparql_error:
450
_inner_error_ = NULL;
451
g_warning ("backend.vala:211: Problem getting connection : %s\n", e1->message);
459
_inner_error_ = NULL;
460
g_warning ("backend.vala:215: Problem saving data : %s\n", e2->message);
464
__catch1_g_dbus_error:
468
_inner_error_ = NULL;
469
g_warning ("backend.vala:219: Problem with the D-Bus connection : %s\n", e3->message);
473
if (_inner_error_ != NULL) {
474
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
475
g_clear_error (&_inner_error_);
483
static GeeHashMap* _tracker_test_backend_copy_hash_map (TrackerTestBackend* self, GeeHashMap* orig) {
484
GeeHashMap* result = NULL;
485
GeeHashMap* _tmp0_ = NULL;
487
g_return_val_if_fail (self != NULL, NULL);
488
g_return_val_if_fail (orig != NULL, NULL);
489
_tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
492
GeeSet* _tmp1_ = NULL;
494
GeeIterator* _tmp3_ = NULL;
497
_tmp1_ = gee_map_get_keys ((GeeMap*) orig);
499
_tmp3_ = gee_iterable_iterator ((GeeIterable*) _tmp2_);
501
_g_object_unref0 (_tmp2_);
505
gpointer _tmp6_ = NULL;
507
gpointer _tmp7_ = NULL;
509
gchar* _tmp8_ = NULL;
511
gchar* _tmp10_ = NULL;
513
_tmp5_ = gee_iterator_next (_k_it);
517
_tmp6_ = gee_iterator_get (_k_it);
519
_tmp7_ = gee_abstract_map_get ((GeeAbstractMap*) orig, k);
521
_tmp8_ = g_strdup (k);
523
_tmp10_ = g_strdup (v);
525
gee_abstract_map_set ((GeeAbstractMap*) copy, _tmp9_, _tmp11_);
531
_g_object_unref0 (_k_it);
538
static void _tracker_test_backend_setup_connection (TrackerTestBackend* self, GError** error) {
539
TrackerSparqlConnection* _tmp0_ = NULL;
540
TrackerSparqlConnection* _tmp1_;
541
GError * _inner_error_ = NULL;
542
g_return_if_fail (self != NULL);
543
_tmp0_ = tracker_sparql_connection_get (NULL, &_inner_error_);
545
if (_inner_error_ != NULL) {
546
if (_inner_error_->domain == G_IO_ERROR) {
547
goto __catch2_g_io_error;
549
if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
550
goto __catch2_tracker_sparql_error;
552
if (_inner_error_->domain == G_DBUS_ERROR) {
553
goto __catch2_g_dbus_error;
555
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
556
g_clear_error (&_inner_error_);
559
_g_object_unref0 (self->priv->_connection);
560
self->priv->_connection = _tmp1_;
565
GError* _tmp2_ = NULL;
567
_inner_error_ = NULL;
568
_tmp2_ = g_error_new (TRACKER_TEST_BACKEND_SETUP_ERROR, TRACKER_TEST_BACKEND_SETUP_ERROR_ADD_CONTACT_FAILED, "Could not connect to D-Bus service : %s\n", e1->message);
569
_inner_error_ = _tmp2_;
574
__catch2_tracker_sparql_error:
577
GError* _tmp3_ = NULL;
579
_inner_error_ = NULL;
580
_tmp3_ = g_error_new (TRACKER_TEST_BACKEND_SETUP_ERROR, TRACKER_TEST_BACKEND_SETUP_ERROR_ADD_CONTACT_FAILED, "Error fetching SPARQL connection handler : %s\n", e2->message);
581
_inner_error_ = _tmp3_;
586
__catch2_g_dbus_error:
589
GError* _tmp4_ = NULL;
591
_inner_error_ = NULL;
592
_tmp4_ = g_error_new (TRACKER_TEST_BACKEND_SETUP_ERROR, TRACKER_TEST_BACKEND_SETUP_ERROR_ADD_CONTACT_FAILED, "Error fetching SPARQL connection handler : %s\n", e3->message);
593
_inner_error_ = _tmp4_;
598
if (_inner_error_ != NULL) {
599
if (_inner_error_->domain == TRACKER_TEST_BACKEND_SETUP_ERROR) {
600
g_propagate_error (error, _inner_error_);
603
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
604
g_clear_error (&_inner_error_);
611
static void _tracker_test_backend_add_contacts (TrackerTestBackend* self, GError** error) {
614
GError * _inner_error_ = NULL;
615
g_return_if_fail (self != NULL);
616
_tmp0_ = g_strdup ("");
618
self->priv->_contacts = g_list_reverse (self->priv->_contacts);
622
c_collection = self->priv->_contacts;
623
for (c_it = c_collection; c_it != NULL; c_it = c_it->next) {
626
_tmp1_ = _g_object_ref0 ((GeeHashMap*) c_it->data);
631
gchar* _tmp4_ = NULL;
634
_tmp2_ = g_strconcat (query, "\n", NULL);
636
_tmp4_ = _tracker_test_backend_get_insert_query (self, c);
638
_tmp6_ = g_strconcat (_tmp3_, _tmp5_, NULL);
643
_g_object_unref0 (c);
647
tracker_sparql_connection_update (self->priv->_connection, query, G_PRIORITY_DEFAULT, NULL, &_inner_error_);
648
if (_inner_error_ != NULL) {
649
if (_inner_error_->domain == TRACKER_SPARQL_ERROR) {
650
goto __catch3_tracker_sparql_error;
652
if (_inner_error_->domain == G_IO_ERROR) {
653
goto __catch3_g_io_error;
655
if (_inner_error_->domain == G_DBUS_ERROR) {
656
goto __catch3_g_dbus_error;
659
g_critical ("file %s: line %d: unexpected error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
660
g_clear_error (&_inner_error_);
664
__catch3_tracker_sparql_error:
667
GError* _tmp7_ = NULL;
669
_inner_error_ = NULL;
670
_tmp7_ = g_error_new (TRACKER_TEST_BACKEND_SETUP_ERROR, TRACKER_TEST_BACKEND_SETUP_ERROR_ADD_CONTACT_FAILED, "Problem getting connection : %s\n", e1->message);
671
_inner_error_ = _tmp7_;
679
GError* _tmp8_ = NULL;
681
_inner_error_ = NULL;
682
_tmp8_ = g_error_new (TRACKER_TEST_BACKEND_SETUP_ERROR, TRACKER_TEST_BACKEND_SETUP_ERROR_ADD_CONTACT_FAILED, "Error fetching SPARQL connection handler : %s\n", e2->message);
683
_inner_error_ = _tmp8_;
688
__catch3_g_dbus_error:
691
GError* _tmp9_ = NULL;
693
_inner_error_ = NULL;
694
_tmp9_ = g_error_new (TRACKER_TEST_BACKEND_SETUP_ERROR, TRACKER_TEST_BACKEND_SETUP_ERROR_ADD_CONTACT_FAILED, "Could not connect to D-Bus service : %s\n", e3->message);
695
_inner_error_ = _tmp9_;
700
if (_inner_error_ != NULL) {
701
if (_inner_error_->domain == TRACKER_TEST_BACKEND_SETUP_ERROR) {
702
g_propagate_error (error, _inner_error_);
707
g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
708
g_clear_error (&_inner_error_);
716
static gchar* _tracker_test_backend_get_insert_query (TrackerTestBackend* self, GeeHashMap* contact) {
717
gchar* result = NULL;
718
static const char q_photo_uri_t[] = " . <%s> a nfo:Image, " "nie:DataObject ; nie:url '%s' ; nie:title '%s' ";
719
static const char im_addr_t[] = " . <%s> a nco:IMAddress, " "nie:InformationElement; nco:imProtocol " "'%s' ; nco:imID '%s'; " "nco:imNickname '%s'; " "nco:imPresence nco:presence-status-available " " . <%smyimaccount> a nco:IMAccount; " "nco:imDisplayName '%s'; nco:hasIMContact " "<%s> ";
720
static const char affl_t[] = " . <%smyaffiliation> a nco:Affiliation " " . <%smyaffiliation> nco:hasIMAddress " " <%s> ";
721
static const char af_t[] = " . <affl:001> a nco:Affiliation; " "nco:role '%s'; nco:department '%s' ";
722
static const char postal_t[] = " . <affl:001> a nco:Affiliation ; " "nco:hasPostalAddress <postal:001> . " " <postal:001> a nco:PostalAddress ; " "nco:pobox '%s'; " "nco:district '%s'; " "nco:county '%s'; " "nco:locality '%s'; " "nco:postalcode '%s'; " "nco:streetAddress '%s'; " "nco:addressLocation '%s'; " "nco:extendedAddress '%s'; " "nco:country '%s'; " "nco:region '%s' ";
723
gchar* urn_contact = NULL;
724
gpointer _tmp0_ = NULL;
733
GeeHashMap* addresses;
746
gchar* postal_address;
747
gboolean _tmp68_ = FALSE;
748
gboolean _tmp82_ = FALSE;
749
gboolean _tmp86_ = FALSE;
750
gboolean _tmp90_ = FALSE;
752
g_return_val_if_fail (self != NULL, NULL);
753
g_return_val_if_fail (contact != NULL, NULL);
754
_tmp1_ = gee_abstract_map_unset ((GeeAbstractMap*) contact, TRACKER_TEST_BACKEND_URN, &_tmp0_);
755
_g_free0 (urn_contact);
756
urn_contact = _tmp0_;
757
if (_tmp1_ == FALSE) {
759
_tmp2_ = g_strdup ("_:x");
760
_g_free0 (urn_contact);
761
urn_contact = _tmp2_;
763
_tmp3_ = g_strdup ("");
765
_tmp4_ = g_strconcat ("INSERT { ", urn_contact, NULL);
767
_tmp6_ = g_strconcat (_tmp5_, " a nco:PersonContact ", NULL);
781
_tmp8_ = g_strdup ("");
782
affiliation = _tmp8_;
783
_tmp9_ = g_strdup ("");
784
postal_address = _tmp9_;
786
GeeSet* _tmp10_ = NULL;
788
GeeIterator* _tmp12_ = NULL;
789
GeeIterator* _tmp13_;
791
_tmp10_ = gee_map_get_keys ((GeeMap*) contact);
793
_tmp12_ = gee_iterable_iterator ((GeeIterable*) _tmp11_);
795
_g_object_unref0 (_tmp11_);
799
gpointer _tmp15_ = NULL;
801
gpointer _tmp16_ = NULL;
810
_tmp14_ = gee_iterator_next (_k_it);
814
_tmp15_ = gee_iterator_get (_k_it);
815
k = (gchar*) _tmp15_;
816
_tmp16_ = gee_abstract_map_get ((GeeAbstractMap*) contact, k);
817
v = (gchar*) _tmp16_;
818
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NCO_PHOTO) == 0) {
823
_tmp17_ = g_strdup (v);
824
_g_free0 (photo_uri);
826
_tmp18_ = g_strconcat ("<", v, NULL);
828
_tmp20_ = g_strconcat (_tmp19_, ">", NULL);
833
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NCO_IMADDRESS) == 0) {
834
GeeHashMap* _tmp21_ = NULL;
837
_tmp21_ = _tracker_test_backend_parse_addrs (self, v);
838
_g_object_unref0 (addresses);
840
_tmp22_ = g_strdup ("");
843
_tmp23_ = g_strdup ("");
847
GeeSet* _tmp24_ = NULL;
849
GeeIterator* _tmp26_ = NULL;
850
GeeIterator* _tmp27_;
851
GeeIterator* _addr_it;
852
_tmp24_ = gee_map_get_keys ((GeeMap*) addresses);
854
_tmp26_ = gee_iterable_iterator ((GeeIterable*) _tmp25_);
856
_g_object_unref0 (_tmp25_);
860
gpointer _tmp29_ = NULL;
870
_tmp28_ = gee_iterator_next (_addr_it);
874
_tmp29_ = gee_iterator_get (_addr_it);
875
addr = (gchar*) _tmp29_;
876
_tmp30_ = g_strdup (" nco:hasAffiliation [ a nco:Affiliation ; ");
879
_tmp31_ = g_strconcat ("nco:hasIMAddress <", addr, NULL);
881
_tmp33_ = g_strconcat (_tmp32_, "> ] ", NULL);
883
_tmp35_ = g_strconcat (vtemp, _tmp34_, NULL);
888
if (g_strcmp0 (v, "") != 0) {
890
_tmp36_ = g_strconcat (v, "; ", NULL);
894
_tmp37_ = g_strconcat (v, vtemp, NULL);
900
_g_object_unref0 (_addr_it);
903
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NCO_PHONE_PROP) == 0) {
905
gchar** _tmp39_ = NULL;
907
gchar* _tmp41_ = NULL;
908
_tmp39_ = _tmp38_ = g_strsplit (v, ",", 0);
909
phones = (_vala_array_free (phones, phones_length1, (GDestroyNotify) g_free), NULL);
911
phones_length1 = _vala_array_length (_tmp38_);
912
_phones_size_ = _vala_array_length (_tmp38_);
913
_tmp40_ = g_strdup ("");
916
_tmp41_ = _tracker_test_backend_build_relation (self, TRF_ONTOLOGY_DEFS_NCO_HAS_AFFILIATION, phones, phones_length1);
920
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NCO_EMAIL_PROP) == 0) {
922
gchar** _tmp43_ = NULL;
924
gchar* _tmp45_ = NULL;
925
_tmp43_ = _tmp42_ = g_strsplit (v, ",", 0);
926
emails = (_vala_array_free (emails, emails_length1, (GDestroyNotify) g_free), NULL);
928
emails_length1 = _vala_array_length (_tmp42_);
929
_emails_size_ = _vala_array_length (_tmp42_);
930
_tmp44_ = g_strdup ("");
933
_tmp45_ = _tracker_test_backend_build_relation (self, TRF_ONTOLOGY_DEFS_NCO_HAS_AFFILIATION, emails, emails_length1);
937
if (g_strcmp0 (k, TRACKER_TEST_BACKEND_URLS) == 0) {
939
gchar** _tmp47_ = NULL;
941
gchar* _tmp49_ = NULL;
942
_tmp47_ = _tmp46_ = g_strsplit (v, ",", 0);
943
urls = (_vala_array_free (urls, urls_length1, (GDestroyNotify) g_free), NULL);
945
urls_length1 = _vala_array_length (_tmp46_);
946
_urls_size_ = _vala_array_length (_tmp46_);
947
_tmp48_ = g_strdup ("");
950
_tmp49_ = _tracker_test_backend_build_relation (self, TRF_ONTOLOGY_DEFS_NCO_HAS_AFFILIATION, urls, urls_length1);
954
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NAO_TAG) == 0) {
956
_tmp50_ = g_strdup (TRF_ONTOLOGY_DEFS_NAO_FAVORITE);
960
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NCO_HAS_AFFILIATION) == 0) {
963
_tmp51_ = g_strdup (v);
964
_g_free0 (affiliation);
965
affiliation = _tmp51_;
966
_tmp52_ = g_strdup ("<affl:001>");
970
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NCO_GENDER) == 0) {
972
if (g_strcmp0 (k, TRF_ONTOLOGY_DEFS_NCO_POSTAL_ADDRESS) == 0) {
976
_tmp53_ = g_strdup (v);
977
_g_free0 (postal_address);
978
postal_address = _tmp53_;
979
_tmp54_ = g_strdup (TRF_ONTOLOGY_DEFS_NCO_HAS_AFFILIATION);
982
_tmp55_ = g_strdup ("<affl:001>");
989
_tmp56_ = g_strconcat ("'", v, NULL);
991
_tmp58_ = g_strconcat (_tmp57_, "'", NULL);
1004
_tmp59_ = g_strconcat (q, "; ", NULL);
1007
_tmp60_ = g_strconcat (k, " ", NULL);
1009
_tmp62_ = g_strconcat (_tmp61_, v, NULL);
1013
_tmp64_ = g_strconcat (q, s, NULL);
1020
_g_object_unref0 (_k_it);
1022
if (g_strcmp0 (photo_uri, "") != 0) {
1023
gchar* _tmp65_ = NULL;
1026
_tmp65_ = g_strdup_printf (q_photo_uri_t, photo_uri, photo_uri, photo_uri);
1028
_tmp67_ = g_strconcat (q, _tmp66_, NULL);
1033
if (addresses != NULL) {
1035
_tmp69_ = gee_map_get_size ((GeeMap*) addresses);
1036
_tmp68_ = _tmp69_ > 0;
1042
GeeSet* _tmp70_ = NULL;
1044
GeeIterator* _tmp72_ = NULL;
1045
GeeIterator* _tmp73_;
1046
GeeIterator* _addr_it;
1047
_tmp70_ = gee_map_get_keys ((GeeMap*) addresses);
1049
_tmp72_ = gee_iterable_iterator ((GeeIterable*) _tmp71_);
1051
_g_object_unref0 (_tmp71_);
1055
gpointer _tmp75_ = NULL;
1057
gpointer _tmp76_ = NULL;
1059
gchar* _tmp77_ = NULL;
1061
gchar* _tmp78_ = NULL;
1063
gchar* _tmp79_ = NULL;
1066
_tmp74_ = gee_iterator_next (_addr_it);
1070
_tmp75_ = gee_iterator_get (_addr_it);
1071
addr = (gchar*) _tmp75_;
1072
_tmp76_ = gee_abstract_map_get ((GeeAbstractMap*) addresses, addr);
1073
proto = (gchar*) _tmp76_;
1074
_tmp77_ = g_strdup_printf (im_addr_t, addr, proto, addr, addr, addr, addr, addr);
1076
_tmp78_ = g_strdup_printf (affl_t, addr, addr, addr);
1078
_tmp79_ = g_strdup_printf ("%s%s", q1, q2);
1080
_tmp81_ = g_strconcat (q, _tmp80_, NULL);
1089
_g_object_unref0 (_addr_it);
1092
if (phones != NULL) {
1093
_tmp82_ = phones_length1 > 0;
1099
gchar** p_collection;
1100
int p_collection_length1;
1102
p_collection = phones;
1103
p_collection_length1 = phones_length1;
1104
for (p_it = 0; p_it < phones_length1; p_it = p_it + 1) {
1107
_tmp83_ = g_strdup (p_collection[p_it]);
1110
gchar* _tmp84_ = NULL;
1112
gchar* _tmp85_ = NULL;
1114
_tmp84_ = g_strdup_printf ("<phone:%s>", p);
1115
phone_urn = _tmp84_;
1116
_tmp85_ = g_strdup_printf ("<%s>", p);
1118
tracker_test_backend_insert_triplet (self, phone_urn, "a", TRF_ONTOLOGY_DEFS_NCO_PHONE, TRF_ONTOLOGY_DEFS_NCO_PHONE_PROP, p, NULL, NULL);
1119
tracker_test_backend_insert_triplet (self, affl, "a", TRF_ONTOLOGY_DEFS_NCO_AFFILIATION, NULL, NULL, NULL, NULL);
1120
tracker_test_backend_insert_triplet (self, affl, TRF_ONTOLOGY_DEFS_NCO_HAS_PHONE, phone_urn, NULL, NULL, NULL, NULL);
1122
_g_free0 (phone_urn);
1128
if (emails != NULL) {
1129
_tmp86_ = emails_length1 > 0;
1135
gchar** p_collection;
1136
int p_collection_length1;
1138
p_collection = emails;
1139
p_collection_length1 = emails_length1;
1140
for (p_it = 0; p_it < emails_length1; p_it = p_it + 1) {
1143
_tmp87_ = g_strdup (p_collection[p_it]);
1146
gchar* _tmp88_ = NULL;
1148
gchar* _tmp89_ = NULL;
1150
_tmp88_ = g_strdup_printf ("<email:%s>", p);
1151
email_urn = _tmp88_;
1152
_tmp89_ = g_strdup_printf ("<%s>", p);
1154
tracker_test_backend_insert_triplet (self, email_urn, "a", TRF_ONTOLOGY_DEFS_NCO_EMAIL, TRF_ONTOLOGY_DEFS_NCO_EMAIL_PROP, p, NULL, NULL);
1155
tracker_test_backend_insert_triplet (self, affl, "a", TRF_ONTOLOGY_DEFS_NCO_AFFILIATION, NULL, NULL, NULL, NULL);
1156
tracker_test_backend_insert_triplet (self, affl, TRF_ONTOLOGY_DEFS_NCO_HAS_EMAIL, email_urn, NULL, NULL, NULL, NULL);
1158
_g_free0 (email_urn);
1165
_tmp90_ = urls_length1 > 0;
1173
gchar** p_collection;
1174
int p_collection_length1;
1176
p_collection = urls;
1177
p_collection_length1 = urls_length1;
1178
for (p_it = 0; p_it < urls_length1; p_it = p_it + 1) {
1181
_tmp91_ = g_strdup (p_collection[p_it]);
1185
gchar* website_type;
1186
gchar* _tmp93_ = NULL;
1188
_tmp92_ = g_strdup ("");
1189
website_type = _tmp92_;
1190
_tmp93_ = g_strdup_printf ("<%s>", p);
1196
_tmp94_ = g_strdup (TRF_ONTOLOGY_DEFS_NCO_WEBSITE);
1197
_g_free0 (website_type);
1198
website_type = _tmp94_;
1204
_tmp95_ = g_strdup (TRF_ONTOLOGY_DEFS_NCO_BLOG);
1205
_g_free0 (website_type);
1206
website_type = _tmp95_;
1212
_tmp96_ = g_strdup ("nco:url");
1213
_g_free0 (website_type);
1214
website_type = _tmp96_;
1220
tracker_test_backend_insert_triplet (self, affl, "a", TRF_ONTOLOGY_DEFS_NCO_AFFILIATION, website_type, p, NULL, NULL);
1223
_g_free0 (website_type);
1229
if (g_strcmp0 (affiliation, "") != 0) {
1231
gchar** _tmp98_ = NULL;
1233
gint role_info_length1;
1234
gint _role_info_size_;
1235
gchar* _tmp99_ = NULL;
1238
_tmp98_ = _tmp97_ = g_strsplit (affiliation, ",", 0);
1239
role_info = _tmp98_;
1240
role_info_length1 = _vala_array_length (_tmp97_);
1241
_role_info_size_ = _vala_array_length (_tmp97_);
1242
_tmp99_ = g_strdup_printf (af_t, role_info[0], role_info[1]);
1244
_tmp101_ = g_strconcat (q, _tmp100_, NULL);
1247
_g_free0 (_tmp100_);
1248
role_info = (_vala_array_free (role_info, role_info_length1, (GDestroyNotify) g_free), NULL);
1250
if (g_strcmp0 (postal_address, "") != 0) {
1252
gchar** _tmp103_ = NULL;
1253
gchar** postal_info;
1254
gint postal_info_length1;
1255
gint _postal_info_size_;
1256
gchar* _tmp104_ = NULL;
1259
_tmp103_ = _tmp102_ = g_strsplit (postal_address, ":", 0);
1260
postal_info = _tmp103_;
1261
postal_info_length1 = _vala_array_length (_tmp102_);
1262
_postal_info_size_ = _vala_array_length (_tmp102_);
1263
_tmp104_ = g_strdup_printf (postal_t, postal_info[0], postal_info[1], postal_info[2], postal_info[3], postal_info[4], postal_info[5], postal_info[6], postal_info[7], postal_info[8], postal_info[9]);
1264
_tmp105_ = _tmp104_;
1265
_tmp106_ = g_strconcat (q, _tmp105_, NULL);
1268
_g_free0 (_tmp105_);
1269
postal_info = (_vala_array_free (postal_info, postal_info_length1, (GDestroyNotify) g_free), NULL);
1271
_tmp107_ = g_strconcat (q, " . }", NULL);
1274
if (self->priv->_debug) {
1275
fprintf (stdout, "_get_insert_query : %s\n", q);
1278
_g_free0 (postal_address);
1279
_g_free0 (affiliation);
1280
urls = (_vala_array_free (urls, urls_length1, (GDestroyNotify) g_free), NULL);
1281
emails = (_vala_array_free (emails, emails_length1, (GDestroyNotify) g_free), NULL);
1282
phones = (_vala_array_free (phones, phones_length1, (GDestroyNotify) g_free), NULL);
1283
_g_object_unref0 (addresses);
1284
_g_free0 (photo_uri);
1285
_g_free0 (urn_contact);
1290
static GeeHashMap* _tracker_test_backend_parse_addrs (TrackerTestBackend* self, const gchar* addr_s) {
1291
GeeHashMap* result = NULL;
1292
GeeHashMap* _tmp0_ = NULL;
1295
gchar** _tmp2_ = NULL;
1297
gint im_addrs_length1;
1298
gint _im_addrs_size_;
1299
g_return_val_if_fail (self != NULL, NULL);
1300
g_return_val_if_fail (addr_s != NULL, NULL);
1301
_tmp0_ = gee_hash_map_new (G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, G_TYPE_STRING, (GBoxedCopyFunc) g_strdup, g_free, NULL, NULL, NULL);
1303
_tmp2_ = _tmp1_ = g_strsplit (addr_s, ",", 0);
1305
im_addrs_length1 = _vala_array_length (_tmp1_);
1306
_im_addrs_size_ = _vala_array_length (_tmp1_);
1308
gchar** a_collection;
1309
int a_collection_length1;
1311
a_collection = im_addrs;
1312
a_collection_length1 = im_addrs_length1;
1313
for (a_it = 0; a_it < im_addrs_length1; a_it = a_it + 1) {
1316
_tmp3_ = g_strdup (a_collection[a_it]);
1320
gchar** _tmp5_ = NULL;
1332
_tmp5_ = _tmp4_ = g_strsplit (a, "#", 0);
1334
info_length1 = _vala_array_length (_tmp4_);
1335
_info_size_ = _vala_array_length (_tmp4_);
1336
_tmp6_ = g_strdup (info[0]);
1338
_tmp7_ = g_strdup (info[1]);
1346
gee_abstract_map_set ((GeeAbstractMap*) ret, _tmp9_, _tmp11_);
1351
info = (_vala_array_free (info, info_length1, (GDestroyNotify) g_free), NULL);
1357
im_addrs = (_vala_array_free (im_addrs, im_addrs_length1, (GDestroyNotify) g_free), NULL);
1362
static gchar* _tracker_test_backend_build_relation (TrackerTestBackend* self, const gchar* predicate, gchar** objects, int objects_length1) {
1363
gchar* result = NULL;
1366
g_return_val_if_fail (self != NULL, NULL);
1367
g_return_val_if_fail (predicate != NULL, NULL);
1368
_tmp0_ = g_strdup ("");
1371
gchar** obj_collection;
1372
int obj_collection_length1;
1374
obj_collection = objects;
1375
obj_collection_length1 = objects_length1;
1376
for (obj_it = 0; obj_it < objects_length1; obj_it = obj_it + 1) {
1379
_tmp1_ = g_strdup (obj_collection[obj_it]);
1382
gchar* vtemp1 = NULL;
1391
_tmp2_ = g_strconcat (" ", predicate, NULL);
1393
_tmp4_ = g_strconcat (_tmp3_, " <", NULL);
1395
_tmp6_ = g_strconcat (_tmp5_, obj, NULL);
1397
_tmp8_ = g_strconcat (_tmp7_, "> ", NULL);
1403
if (g_strcmp0 (ret, "") != 0) {
1405
_tmp9_ = g_strconcat (ret, "; ", NULL);
1409
_tmp10_ = g_strconcat (ret, vtemp1, NULL);
1422
gboolean tracker_test_backend_get_debug (TrackerTestBackend* self) {
1424
g_return_val_if_fail (self != NULL, FALSE);
1425
result = self->priv->_debug;
1430
void tracker_test_backend_set_debug (TrackerTestBackend* self, gboolean value) {
1431
g_return_if_fail (self != NULL);
1432
self->priv->_debug = value;
1436
static void tracker_test_value_backend_init (GValue* value) {
1437
value->data[0].v_pointer = NULL;
1441
static void tracker_test_value_backend_free_value (GValue* value) {
1442
if (value->data[0].v_pointer) {
1443
tracker_test_backend_unref (value->data[0].v_pointer);
1448
static void tracker_test_value_backend_copy_value (const GValue* src_value, GValue* dest_value) {
1449
if (src_value->data[0].v_pointer) {
1450
dest_value->data[0].v_pointer = tracker_test_backend_ref (src_value->data[0].v_pointer);
1452
dest_value->data[0].v_pointer = NULL;
1457
static gpointer tracker_test_value_backend_peek_pointer (const GValue* value) {
1458
return value->data[0].v_pointer;
1462
static gchar* tracker_test_value_backend_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
1463
if (collect_values[0].v_pointer) {
1464
TrackerTestBackend* object;
1465
object = collect_values[0].v_pointer;
1466
if (object->parent_instance.g_class == NULL) {
1467
return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
1468
} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
1469
return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
1471
value->data[0].v_pointer = tracker_test_backend_ref (object);
1473
value->data[0].v_pointer = NULL;
1479
static gchar* tracker_test_value_backend_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
1480
TrackerTestBackend** object_p;
1481
object_p = collect_values[0].v_pointer;
1483
return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
1485
if (!value->data[0].v_pointer) {
1487
} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
1488
*object_p = value->data[0].v_pointer;
1490
*object_p = tracker_test_backend_ref (value->data[0].v_pointer);
1496
GParamSpec* tracker_test_param_spec_backend (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
1497
TrackerTestParamSpecBackend* spec;
1498
g_return_val_if_fail (g_type_is_a (object_type, TRACKER_TEST_TYPE_BACKEND), NULL);
1499
spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
1500
G_PARAM_SPEC (spec)->value_type = object_type;
1501
return G_PARAM_SPEC (spec);
1505
gpointer tracker_test_value_get_backend (const GValue* value) {
1506
g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TRACKER_TEST_TYPE_BACKEND), NULL);
1507
return value->data[0].v_pointer;
1511
void tracker_test_value_set_backend (GValue* value, gpointer v_object) {
1512
TrackerTestBackend* old;
1513
g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TRACKER_TEST_TYPE_BACKEND));
1514
old = value->data[0].v_pointer;
1516
g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TRACKER_TEST_TYPE_BACKEND));
1517
g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1518
value->data[0].v_pointer = v_object;
1519
tracker_test_backend_ref (value->data[0].v_pointer);
1521
value->data[0].v_pointer = NULL;
1524
tracker_test_backend_unref (old);
1529
void tracker_test_value_take_backend (GValue* value, gpointer v_object) {
1530
TrackerTestBackend* old;
1531
g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, TRACKER_TEST_TYPE_BACKEND));
1532
old = value->data[0].v_pointer;
1534
g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, TRACKER_TEST_TYPE_BACKEND));
1535
g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
1536
value->data[0].v_pointer = v_object;
1538
value->data[0].v_pointer = NULL;
1541
tracker_test_backend_unref (old);
1546
static void tracker_test_backend_class_init (TrackerTestBackendClass * klass) {
1547
tracker_test_backend_parent_class = g_type_class_peek_parent (klass);
1548
TRACKER_TEST_BACKEND_CLASS (klass)->finalize = tracker_test_backend_finalize;
1549
g_type_class_add_private (klass, sizeof (TrackerTestBackendPrivate));
1553
static void tracker_test_backend_instance_init (TrackerTestBackend * self) {
1554
self->priv = TRACKER_TEST_BACKEND_GET_PRIVATE (self);
1555
self->ref_count = 1;
1559
static void tracker_test_backend_finalize (TrackerTestBackend* obj) {
1560
TrackerTestBackend * self;
1561
self = TRACKER_TEST_BACKEND (obj);
1562
__g_list_free__g_object_unref0_0 (self->priv->_contacts);
1563
_g_object_unref0 (self->priv->_connection);
1567
GType tracker_test_backend_get_type (void) {
1568
static volatile gsize tracker_test_backend_type_id__volatile = 0;
1569
if (g_once_init_enter (&tracker_test_backend_type_id__volatile)) {
1570
static const GTypeValueTable g_define_type_value_table = { tracker_test_value_backend_init, tracker_test_value_backend_free_value, tracker_test_value_backend_copy_value, tracker_test_value_backend_peek_pointer, "p", tracker_test_value_backend_collect_value, "p", tracker_test_value_backend_lcopy_value };
1571
static const GTypeInfo g_define_type_info = { sizeof (TrackerTestBackendClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) tracker_test_backend_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackerTestBackend), 0, (GInstanceInitFunc) tracker_test_backend_instance_init, &g_define_type_value_table };
1572
static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
1573
GType tracker_test_backend_type_id;
1574
tracker_test_backend_type_id = g_type_register_fundamental (g_type_fundamental_next (), "TrackerTestBackend", &g_define_type_info, &g_define_type_fundamental_info, 0);
1575
g_once_init_leave (&tracker_test_backend_type_id__volatile, tracker_test_backend_type_id);
1577
return tracker_test_backend_type_id__volatile;
1581
gpointer tracker_test_backend_ref (gpointer instance) {
1582
TrackerTestBackend* self;
1584
g_atomic_int_inc (&self->ref_count);
1589
void tracker_test_backend_unref (gpointer instance) {
1590
TrackerTestBackend* self;
1592
if (g_atomic_int_dec_and_test (&self->ref_count)) {
1593
TRACKER_TEST_BACKEND_GET_CLASS (self)->finalize (self);
1594
g_type_free_instance ((GTypeInstance *) self);
1599
static void _vala_array_destroy (gpointer array, gint array_length, GDestroyNotify destroy_func) {
1600
if ((array != NULL) && (destroy_func != NULL)) {
1602
for (i = 0; i < array_length; i = i + 1) {
1603
if (((gpointer*) array)[i] != NULL) {
1604
destroy_func (((gpointer*) array)[i]);
1611
static void _vala_array_free (gpointer array, gint array_length, GDestroyNotify destroy_func) {
1612
_vala_array_destroy (array, array_length, destroy_func);
1617
static gint _vala_array_length (gpointer array) {
1621
while (((gpointer*) array)[length]) {