~ubuntu-branches/ubuntu/quantal/folks/quantal

« back to all changes in this revision

Viewing changes to folks/individual-aggregator.c

  • Committer: Package Import Robot
  • Author(s): Robert Ancell
  • Date: 2012-09-12 09:48:10 UTC
  • mfrom: (1.6.2)
  • Revision ID: package-import@ubuntu.com-20120912094810-6zlx8889hcovxj7p
Tags: 0.7.4.1-0ubuntu1
* New upstream bugfix release
* debian/control:
  - Bump build-depends on libglib2.0-dev, valac-0.18, libvala-0.18-dev
* debian/libfolks-eds25.symbols:
* debian/libfolks25.symbols:
  - Updated

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* individual-aggregator.c generated by valac 0.17.3, the Vala compiler
 
1
/* individual-aggregator.c generated by valac 0.17.6.5-65f99, the Vala compiler
2
2
 * generated from individual-aggregator.vala, do not modify */
3
3
 
4
4
/*
123
123
typedef struct _FolksPotentialMatch FolksPotentialMatch;
124
124
typedef struct _FolksPotentialMatchClass FolksPotentialMatchClass;
125
125
typedef struct _FolksIndividualAggregatorAddBackendData FolksIndividualAggregatorAddBackendData;
126
 
typedef struct _Block3Data Block3Data;
 
126
typedef struct _Block4Data Block4Data;
127
127
 
128
128
#define FOLKS_GROUP_DETAILS_TYPE_CHANGE_REASON (folks_group_details_change_reason_get_type ())
129
129
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
130
 
typedef struct _Block4Data Block4Data;
 
130
typedef struct _Block5Data Block5Data;
131
131
 
132
132
#define FOLKS_TYPE_PERSONA_STORE_TRUST (folks_persona_store_trust_get_type ())
133
 
typedef struct _Block5Data Block5Data;
 
133
typedef struct _Block6Data Block6Data;
134
134
 
135
135
#define FOLKS_TYPE_ANTI_LINKABLE (folks_anti_linkable_get_type ())
136
136
#define FOLKS_ANTI_LINKABLE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FOLKS_TYPE_ANTI_LINKABLE, FolksAntiLinkable))
139
139
 
140
140
typedef struct _FolksAntiLinkable FolksAntiLinkable;
141
141
typedef struct _FolksAntiLinkableIface FolksAntiLinkableIface;
142
 
typedef struct _Block6Data Block6Data;
 
142
typedef struct _Block7Data Block7Data;
143
143
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
144
144
typedef struct _FolksIndividualAggregatorAddPersonaFromDetailsData FolksIndividualAggregatorAddPersonaFromDetailsData;
145
 
typedef struct _Block7Data Block7Data;
 
145
typedef struct _Block8Data Block8Data;
146
146
typedef struct _FolksIndividualAggregatorRemoveIndividualData FolksIndividualAggregatorRemoveIndividualData;
147
147
typedef struct _FolksIndividualAggregatorRemovePersonaData FolksIndividualAggregatorRemovePersonaData;
148
148
typedef struct _FolksIndividualAggregatorLinkPersonasData FolksIndividualAggregatorLinkPersonasData;
371
371
        FolksPersonaStore* _tmp20_;
372
372
};
373
373
 
374
 
struct _Block3Data {
 
374
struct _Block4Data {
375
375
        int _ref_count_;
376
376
        FolksIndividualAggregator * self;
377
377
        gchar* store_id;
393
393
        FOLKS_GROUP_DETAILS_CHANGE_REASON_SEPARATED = 11
394
394
} FolksGroupDetailsChangeReason;
395
395
 
396
 
struct _Block4Data {
 
396
struct _Block5Data {
397
397
        int _ref_count_;
398
398
        FolksIndividualAggregator * self;
399
399
        FolksPersona* persona;
406
406
        FOLKS_PERSONA_STORE_TRUST_FULL
407
407
} FolksPersonaStoreTrust;
408
408
 
409
 
struct _Block5Data {
 
409
struct _Block6Data {
410
410
        int _ref_count_;
411
 
        Block4Data * _data4_;
 
411
        Block5Data * _data5_;
412
412
        const gchar* prop_name;
413
413
};
414
414
 
416
416
typedef enum  {
417
417
        FOLKS_PROPERTY_ERROR_NOT_WRITEABLE,
418
418
        FOLKS_PROPERTY_ERROR_INVALID_VALUE,
419
 
        FOLKS_PROPERTY_ERROR_UNKNOWN_ERROR
 
419
        FOLKS_PROPERTY_ERROR_UNKNOWN_ERROR,
 
420
        FOLKS_PROPERTY_ERROR_UNAVAILABLE
420
421
} FolksPropertyError;
421
422
#define FOLKS_PROPERTY_ERROR folks_property_error_quark ()
422
423
struct _FolksAntiLinkableIface {
427
428
        void (*set_anti_links) (FolksAntiLinkable* self, GeeSet* value);
428
429
};
429
430
 
430
 
struct _Block6Data {
 
431
struct _Block7Data {
431
432
        int _ref_count_;
432
433
        FolksIndividualAggregator * self;
433
434
        FolksIndividual* individual;
491
492
        GError * _inner_error_;
492
493
};
493
494
 
494
 
struct _Block7Data {
 
495
struct _Block8Data {
495
496
        int _ref_count_;
496
497
        FolksIndividualAggregator * self;
497
498
        GHashTable* retval;
947
948
const gchar* folks_persona_store_get_type_id (FolksPersonaStore* self);
948
949
const gchar* folks_persona_store_get_id (FolksPersonaStore* self);
949
950
void folks_persona_store_set_is_primary_store (FolksPersonaStore* self, gboolean value);
950
 
static Block3Data* block3_data_ref (Block3Data* _data3_);
951
 
static void block3_data_unref (void * _userdata_);
 
951
static Block4Data* block4_data_ref (Block4Data* _data4_);
 
952
static void block4_data_unref (void * _userdata_);
952
953
const gchar* folks_backend_get_name (FolksBackend* self);
953
954
static gchar* _folks_individual_aggregator_get_store_full_id (FolksIndividualAggregator* self, const gchar* type_id, const gchar* id);
954
955
static gboolean _folks_individual_aggregator_maybe_configure_as_primary (FolksIndividualAggregator* self, FolksPersonaStore* store);
965
966
GeeMap* folks_persona_store_get_personas (FolksPersonaStore* self);
966
967
void folks_persona_store_prepare (FolksPersonaStore* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
967
968
void folks_persona_store_prepare_finish (FolksPersonaStore* self, GAsyncResult* _res_, GError** error);
968
 
static void __lambda37_ (Block3Data* _data3_, GObject* obj, GAsyncResult* _result_);
969
 
static void ___lambda37__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self);
 
969
static void __lambda64_ (Block4Data* _data4_, GObject* obj, GAsyncResult* _result_);
 
970
static void ___lambda64__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self);
970
971
static void _folks_individual_aggregator_emit_individuals_changed (FolksIndividualAggregator* self, GeeSet* added, GeeSet* removed, GeeMultiMap* changes, const gchar* message, FolksPersona* actor, FolksGroupDetailsChangeReason reason);
971
972
gboolean folks_debug_get_debug_output_enabled (FolksDebug* self);
972
973
static void _folks_individual_aggregator_connect_to_individual (FolksIndividualAggregator* self, FolksIndividual* individual);
974
975
static void __folks_individual_aggregator_individual_removed_cb_folks_individual_removed (FolksIndividual* _sender, FolksIndividual* replacement_individual, gpointer self);
975
976
static void _folks_individual_aggregator_disconnect_from_individual (FolksIndividualAggregator* self, FolksIndividual* individual);
976
977
static void _folks_individual_aggregator_add_personas (FolksIndividualAggregator* self, GeeSet* added, FolksIndividual** user, GeeHashMultiMap** individuals_changes);
977
 
static Block4Data* block4_data_ref (Block4Data* _data4_);
978
 
static void block4_data_unref (void * _userdata_);
 
978
static Block5Data* block5_data_ref (Block5Data* _data5_);
 
979
static void block5_data_unref (void * _userdata_);
979
980
FolksPersonaStore* folks_persona_get_store (FolksPersona* self);
980
981
GType folks_persona_store_trust_get_type (void) G_GNUC_CONST;
981
982
FolksPersonaStoreTrust folks_persona_store_get_trust_level (FolksPersonaStore* self);
982
983
gboolean folks_individual_has_anti_link_with_persona (FolksIndividual* self, FolksPersona* p);
983
984
gchar** folks_persona_get_linkable_properties (FolksPersona* self, int* result_length1);
984
 
static Block5Data* block5_data_ref (Block5Data* _data5_);
985
 
static void block5_data_unref (void * _userdata_);
 
985
static Block6Data* block6_data_ref (Block6Data* _data6_);
 
986
static void block6_data_unref (void * _userdata_);
986
987
void folks_persona_linkable_property_to_links (FolksPersona* self, const gchar* prop_name, FolksPersonaLinkablePropertyCallback callback, void* callback_target);
987
 
static void _______lambda35_ (Block5Data* _data5_, const gchar* l);
988
 
static void ________lambda35__folks_persona_linkable_property_callback (const gchar* link, gpointer self);
 
988
static void _______lambda62_ (Block6Data* _data6_, const gchar* l);
 
989
static void ________lambda62__folks_persona_linkable_property_callback (const gchar* link, gpointer self);
989
990
FolksIndividual* folks_individual_new (GeeSet* personas);
990
991
FolksIndividual* folks_individual_construct (GType object_type, GeeSet* personas);
991
992
static void _folks_individual_aggregator_add_persona_to_link_map (FolksIndividualAggregator* self, FolksPersona* persona, FolksIndividual* individual);
998
999
GType folks_anti_linkable_get_type (void) G_GNUC_CONST;
999
1000
static void __folks_individual_aggregator_persona_anti_links_changed_cb_g_object_notify (GObject* _sender, GParamSpec* pspec, gpointer self);
1000
1001
static void _folks_individual_aggregator_disconnect_from_persona (FolksIndividualAggregator* self, FolksPersona* persona);
1001
 
static Block6Data* block6_data_ref (Block6Data* _data6_);
1002
 
static void block6_data_unref (void * _userdata_);
1003
 
static void _____lambda36_ (Block6Data* _data6_, const gchar* l);
1004
 
static void ______lambda36__folks_persona_linkable_property_callback (const gchar* link, gpointer self);
 
1002
static Block7Data* block7_data_ref (Block7Data* _data7_);
 
1003
static void block7_data_unref (void * _userdata_);
 
1004
static void _____lambda63_ (Block7Data* _data7_, const gchar* l);
 
1005
static void ______lambda63__folks_persona_linkable_property_callback (const gchar* link, gpointer self);
1005
1006
static void _vala_array_add1 (gchar*** array, int* length, int* size, gchar* value);
1006
1007
FolksIndividual* folks_individual_aggregator_get_user (FolksIndividualAggregator* self);
1007
1008
FolksIndividual* folks_persona_get_individual (FolksPersona* self);
1019
1020
GQuark folks_persona_store_error_quark (void);
1020
1021
FolksPersona* folks_persona_store_add_persona_from_details_finish (FolksPersonaStore* self, GAsyncResult* _res_, GError** error);
1021
1022
static void folks_individual_aggregator_add_persona_from_details_ready (GObject* source_object, GAsyncResult* _res_, gpointer _user_data_);
1022
 
static Block7Data* block7_data_ref (Block7Data* _data7_);
1023
 
static void block7_data_unref (void * _userdata_);
 
1023
static Block8Data* block8_data_ref (Block8Data* _data8_);
 
1024
static void block8_data_unref (void * _userdata_);
1024
1025
static void _g_free0_ (gpointer var);
1025
1026
static void _vala_GValue_free (GValue* self);
1026
1027
static void __vala_GValue_free0_ (gpointer var);
1027
 
static void __lambda38_ (Block7Data* _data7_, const gchar* k, GValue* v);
 
1028
static void __lambda65_ (Block8Data* _data8_, const gchar* k, GValue* v);
1028
1029
static GValue* _g_value_dup (GValue* self);
1029
 
static void ___lambda38__gh_func (gconstpointer key, gconstpointer value, gpointer self);
 
1030
static void ___lambda65__gh_func (gconstpointer key, gconstpointer value, gpointer self);
1030
1031
static void folks_individual_aggregator_remove_individual_data_free (gpointer _data);
1031
1032
void folks_individual_aggregator_remove_individual (FolksIndividualAggregator* self, FolksIndividual* individual, GAsyncReadyCallback _callback_, gpointer _user_data_);
1032
1033
void folks_individual_aggregator_remove_individual_finish (FolksIndividualAggregator* self, GAsyncResult* _res_, GError** error);
1973
1974
   * @param matchee the individual to find matches for
1974
1975
   * @param min_threshold the threshold for accepting a match
1975
1976
   * @return a map from matched individuals to the degree with which they match
1976
 
   * `matchee` (which is guaranteed to at least equal `min_threshold`);
 
1977
   * ``matchee`` (which is guaranteed to at least equal ``min_threshold``);
1977
1978
   * if no matches could be found, an empty map is returned
1978
1979
   *
1979
1980
   * @since 0.5.1
2076
2077
   * @return a map from each individual in the aggregator to a map of the
2077
2078
   * other individuals in the aggregator which can be matched with that
2078
2079
   * individual, mapped to the degree with which they match the original
2079
 
   * individual (which is guaranteed to at least equal `min_threshold`)
 
2080
   * individual (which is guaranteed to at least equal ``min_threshold``)
2080
2081
   *
2081
2082
   * @since 0.5.1
2082
2083
   */
2319
2320
        _data_->self = _tmp0_;
2320
2321
        _tmp1_ = backend;
2321
2322
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
2323
        _g_object_unref0 (_data_->backend);
2322
2324
        _data_->backend = _tmp2_;
2323
2325
        _folks_individual_aggregator_add_backend_co (_data_);
2324
2326
}
2558
2560
}
2559
2561
 
2560
2562
 
2561
 
static Block3Data* block3_data_ref (Block3Data* _data3_) {
2562
 
        g_atomic_int_inc (&_data3_->_ref_count_);
2563
 
        return _data3_;
 
2563
static Block4Data* block4_data_ref (Block4Data* _data4_) {
 
2564
        g_atomic_int_inc (&_data4_->_ref_count_);
 
2565
        return _data4_;
2564
2566
}
2565
2567
 
2566
2568
 
2567
 
static void block3_data_unref (void * _userdata_) {
2568
 
        Block3Data* _data3_;
2569
 
        _data3_ = (Block3Data*) _userdata_;
2570
 
        if (g_atomic_int_dec_and_test (&_data3_->_ref_count_)) {
 
2569
static void block4_data_unref (void * _userdata_) {
 
2570
        Block4Data* _data4_;
 
2571
        _data4_ = (Block4Data*) _userdata_;
 
2572
        if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
2571
2573
                FolksIndividualAggregator * self;
2572
 
                self = _data3_->self;
2573
 
                _g_free0 (_data3_->store_id);
2574
 
                _g_object_unref0 (_data3_->store);
 
2574
                self = _data4_->self;
 
2575
                _g_free0 (_data4_->store_id);
 
2576
                _g_object_unref0 (_data4_->store);
2575
2577
                _g_object_unref0 (self);
2576
 
                g_slice_free (Block3Data, _data3_);
 
2578
                g_slice_free (Block4Data, _data4_);
2577
2579
        }
2578
2580
}
2579
2581
 
2598
2600
}
2599
2601
 
2600
2602
 
2601
 
static void __lambda37_ (Block3Data* _data3_, GObject* obj, GAsyncResult* _result_) {
 
2603
static void __lambda64_ (Block4Data* _data4_, GObject* obj, GAsyncResult* _result_) {
2602
2604
        FolksIndividualAggregator * self;
2603
2605
        GError * _inner_error_ = NULL;
2604
 
        self = _data3_->self;
 
2606
        self = _data4_->self;
2605
2607
        g_return_if_fail (_result_ != NULL);
2606
2608
        {
2607
2609
                FolksPersonaStore* _tmp0_;
2608
2610
                GAsyncResult* _tmp1_;
2609
 
                _tmp0_ = _data3_->store;
 
2611
                _tmp0_ = _data4_->store;
2610
2612
                _tmp1_ = _result_;
2611
2613
                folks_persona_store_prepare_finish (_tmp0_, _tmp1_, &_inner_error_);
2612
2614
                if (_inner_error_ != NULL) {
2624
2626
                e = _inner_error_;
2625
2627
                _inner_error_ = NULL;
2626
2628
                _tmp2_ = _ ("Error preparing persona store '%s': %s");
2627
 
                _tmp3_ = _data3_->store_id;
 
2629
                _tmp3_ = _data4_->store_id;
2628
2630
                _tmp4_ = e;
2629
2631
                _tmp5_ = _tmp4_->message;
2630
2632
                g_warning (_tmp2_, _tmp3_, _tmp5_);
2639
2641
}
2640
2642
 
2641
2643
 
2642
 
static void ___lambda37__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) {
2643
 
        __lambda37_ (self, source_object, res);
2644
 
        block3_data_unref (self);
 
2644
static void ___lambda64__gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) {
 
2645
        __lambda64_ (self, source_object, res);
 
2646
        block4_data_unref (self);
2645
2647
}
2646
2648
 
2647
2649
 
2648
2650
static void _folks_individual_aggregator_backend_persona_store_added_cb (FolksIndividualAggregator* self, FolksBackend* backend, FolksPersonaStore* store) {
2649
 
        Block3Data* _data3_;
 
2651
        Block4Data* _data4_;
2650
2652
        FolksPersonaStore* _tmp0_;
2651
2653
        FolksPersonaStore* _tmp1_;
2652
2654
        FolksBackend* _tmp2_;
2684
2686
        g_return_if_fail (self != NULL);
2685
2687
        g_return_if_fail (backend != NULL);
2686
2688
        g_return_if_fail (store != NULL);
2687
 
        _data3_ = g_slice_new0 (Block3Data);
2688
 
        _data3_->_ref_count_ = 1;
2689
 
        _data3_->self = g_object_ref (self);
 
2689
        _data4_ = g_slice_new0 (Block4Data);
 
2690
        _data4_->_ref_count_ = 1;
 
2691
        _data4_->self = g_object_ref (self);
2690
2692
        _tmp0_ = store;
2691
2693
        _tmp1_ = _g_object_ref0 (_tmp0_);
2692
 
        _data3_->store = _tmp1_;
 
2694
        _g_object_unref0 (_data4_->store);
 
2695
        _data4_->store = _tmp1_;
2693
2696
        _tmp2_ = backend;
2694
2697
        _tmp3_ = folks_backend_get_name (_tmp2_);
2695
2698
        _tmp4_ = _tmp3_;
2696
 
        _tmp5_ = _data3_->store;
 
2699
        _tmp5_ = _data4_->store;
2697
2700
        _tmp6_ = folks_persona_store_get_id (_tmp5_);
2698
2701
        _tmp7_ = _tmp6_;
2699
 
        _tmp8_ = _data3_->store;
 
2702
        _tmp8_ = _data4_->store;
2700
2703
        g_debug ("individual-aggregator.vala:799: _backend_persona_store_added_cb(): bac" \
2701
2704
"kend: %s, store: %s (%p)", _tmp4_, _tmp7_, _tmp8_);
2702
 
        _tmp9_ = _data3_->store;
 
2705
        _tmp9_ = _data4_->store;
2703
2706
        _tmp10_ = folks_persona_store_get_type_id (_tmp9_);
2704
2707
        _tmp11_ = _tmp10_;
2705
 
        _tmp12_ = _data3_->store;
 
2708
        _tmp12_ = _data4_->store;
2706
2709
        _tmp13_ = folks_persona_store_get_id (_tmp12_);
2707
2710
        _tmp14_ = _tmp13_;
2708
2711
        _tmp15_ = _folks_individual_aggregator_get_store_full_id (self, _tmp11_, _tmp14_);
2709
 
        _data3_->store_id = _tmp15_;
2710
 
        _tmp16_ = _data3_->store;
 
2712
        _data4_->store_id = _tmp15_;
 
2713
        _tmp16_ = _data4_->store;
2711
2714
        _folks_individual_aggregator_maybe_configure_as_primary (self, _tmp16_);
2712
 
        _tmp17_ = _data3_->store;
 
2715
        _tmp17_ = _data4_->store;
2713
2716
        _folks_individual_aggregator_set_primary_store (self, _tmp17_);
2714
2717
        _tmp18_ = self->priv->_stores;
2715
 
        _tmp19_ = _data3_->store_id;
2716
 
        _tmp20_ = _data3_->store;
 
2718
        _tmp19_ = _data4_->store_id;
 
2719
        _tmp20_ = _data4_->store;
2717
2720
        gee_abstract_map_set ((GeeAbstractMap*) _tmp18_, _tmp19_, _tmp20_);
2718
 
        _tmp21_ = _data3_->store;
 
2721
        _tmp21_ = _data4_->store;
2719
2722
        g_signal_connect_object (_tmp21_, "personas-changed", (GCallback) __folks_individual_aggregator_personas_changed_cb_folks_persona_store_personas_changed, self, 0);
2720
 
        _tmp22_ = _data3_->store;
 
2723
        _tmp22_ = _data4_->store;
2721
2724
        g_signal_connect_object ((GObject*) _tmp22_, "notify::is-primary-store", (GCallback) __folks_individual_aggregator_is_primary_store_changed_cb_g_object_notify, self, 0);
2722
 
        _tmp23_ = _data3_->store;
 
2725
        _tmp23_ = _data4_->store;
2723
2726
        g_signal_connect_object ((GObject*) _tmp23_, "notify::is-quiescent", (GCallback) __folks_individual_aggregator_persona_store_is_quiescent_changed_cb_g_object_notify, self, 0);
2724
 
        _tmp24_ = _data3_->store;
 
2727
        _tmp24_ = _data4_->store;
2725
2728
        g_signal_connect_object ((GObject*) _tmp24_, "notify::is-user-set-default", (GCallback) __folks_individual_aggregator_persona_store_is_user_set_default_changed_cb_g_object_notify, self, 0);
2726
 
        _tmp25_ = _data3_->store;
 
2729
        _tmp25_ = _data4_->store;
2727
2730
        _tmp26_ = folks_persona_store_get_is_quiescent (_tmp25_);
2728
2731
        _tmp27_ = _tmp26_;
2729
2732
        if (_tmp27_ == FALSE) {
2738
2741
                        self->priv->_quiescent_timeout_id = _tmp30_;
2739
2742
                }
2740
2743
        }
2741
 
        _tmp31_ = _data3_->store;
 
2744
        _tmp31_ = _data4_->store;
2742
2745
        _tmp32_ = folks_persona_store_get_personas (_tmp31_);
2743
2746
        _tmp33_ = _tmp32_;
2744
2747
        _tmp34_ = gee_map_get_size (_tmp33_);
2762
2765
                        GeeIterator* _tmp43_ = NULL;
2763
2766
                        GeeIterator* _tmp44_;
2764
2767
                        GeeIterator* _p_it;
2765
 
                        _tmp37_ = _data3_->store;
 
2768
                        _tmp37_ = _data4_->store;
2766
2769
                        _tmp38_ = folks_persona_store_get_personas (_tmp37_);
2767
2770
                        _tmp39_ = _tmp38_;
2768
2771
                        _tmp40_ = gee_map_get_values (_tmp39_);
2795
2798
                        }
2796
2799
                        _g_object_unref0 (_p_it);
2797
2800
                }
2798
 
                _tmp51_ = _data3_->store;
 
2801
                _tmp51_ = _data4_->store;
2799
2802
                _tmp52_ = persona_set;
2800
2803
                _tmp53_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
2801
2804
                _tmp54_ = _tmp53_;
2803
2806
                _g_object_unref0 (_tmp54_);
2804
2807
                _g_object_unref0 (persona_set);
2805
2808
        }
2806
 
        _tmp55_ = _data3_->store;
2807
 
        folks_persona_store_prepare (_tmp55_, ___lambda37__gasync_ready_callback, block3_data_ref (_data3_));
2808
 
        block3_data_unref (_data3_);
2809
 
        _data3_ = NULL;
 
2809
        _tmp55_ = _data4_->store;
 
2810
        folks_persona_store_prepare (_tmp55_, ___lambda64__gasync_ready_callback, block4_data_ref (_data4_));
 
2811
        block4_data_unref (_data4_);
 
2812
        _data4_ = NULL;
2810
2813
}
2811
2814
 
2812
2815
 
3349
3352
}
3350
3353
 
3351
3354
 
3352
 
static Block4Data* block4_data_ref (Block4Data* _data4_) {
3353
 
        g_atomic_int_inc (&_data4_->_ref_count_);
3354
 
        return _data4_;
3355
 
}
3356
 
 
3357
 
 
3358
 
static void block4_data_unref (void * _userdata_) {
3359
 
        Block4Data* _data4_;
3360
 
        _data4_ = (Block4Data*) _userdata_;
3361
 
        if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
3362
 
                FolksIndividualAggregator * self;
3363
 
                self = _data4_->self;
3364
 
                _g_object_unref0 (_data4_->candidate_inds);
3365
 
                _g_object_unref0 (_data4_->persona);
3366
 
                _g_object_unref0 (self);
3367
 
                g_slice_free (Block4Data, _data4_);
3368
 
        }
3369
 
}
3370
 
 
3371
 
 
3372
3355
static Block5Data* block5_data_ref (Block5Data* _data5_) {
3373
3356
        g_atomic_int_inc (&_data5_->_ref_count_);
3374
3357
        return _data5_;
3380
3363
        _data5_ = (Block5Data*) _userdata_;
3381
3364
        if (g_atomic_int_dec_and_test (&_data5_->_ref_count_)) {
3382
3365
                FolksIndividualAggregator * self;
3383
 
                self = _data5_->_data4_->self;
3384
 
                block4_data_unref (_data5_->_data4_);
3385
 
                _data5_->_data4_ = NULL;
 
3366
                self = _data5_->self;
 
3367
                _g_object_unref0 (_data5_->candidate_inds);
 
3368
                _g_object_unref0 (_data5_->persona);
 
3369
                _g_object_unref0 (self);
3386
3370
                g_slice_free (Block5Data, _data5_);
3387
3371
        }
3388
3372
}
3389
3373
 
3390
3374
 
3391
 
static void _______lambda35_ (Block5Data* _data5_, const gchar* l) {
3392
 
        Block4Data* _data4_;
 
3375
static Block6Data* block6_data_ref (Block6Data* _data6_) {
 
3376
        g_atomic_int_inc (&_data6_->_ref_count_);
 
3377
        return _data6_;
 
3378
}
 
3379
 
 
3380
 
 
3381
static void block6_data_unref (void * _userdata_) {
 
3382
        Block6Data* _data6_;
 
3383
        _data6_ = (Block6Data*) _userdata_;
 
3384
        if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) {
 
3385
                FolksIndividualAggregator * self;
 
3386
                self = _data6_->_data5_->self;
 
3387
                block5_data_unref (_data6_->_data5_);
 
3388
                _data6_->_data5_ = NULL;
 
3389
                g_slice_free (Block6Data, _data6_);
 
3390
        }
 
3391
}
 
3392
 
 
3393
 
 
3394
static void _______lambda62_ (Block6Data* _data6_, const gchar* l) {
 
3395
        Block5Data* _data5_;
3393
3396
        FolksIndividualAggregator * self;
3394
3397
        const gchar* _tmp0_;
3395
3398
        const gchar* prop_linking_value;
3398
3401
        GeeCollection* _tmp3_ = NULL;
3399
3402
        GeeCollection* candidate_ind_set;
3400
3403
        GeeCollection* _tmp4_;
3401
 
        _data4_ = _data5_->_data4_;
3402
 
        self = _data4_->self;
 
3404
        _data5_ = _data6_->_data5_;
 
3405
        self = _data5_->self;
3403
3406
        g_return_if_fail (l != NULL);
3404
3407
        _tmp0_ = l;
3405
3408
        prop_linking_value = _tmp0_;
3455
3458
                                        FolksPersona* _tmp20_;
3456
3459
                                        gboolean _tmp21_ = FALSE;
3457
3460
                                        _tmp19_ = candidate_ind;
3458
 
                                        _tmp20_ = _data4_->persona;
 
3461
                                        _tmp20_ = _data5_->persona;
3459
3462
                                        _tmp21_ = folks_individual_has_anti_link_with_persona (G_TYPE_CHECK_INSTANCE_CAST (_tmp19_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual), _tmp20_);
3460
3463
                                        _tmp12_ = _tmp21_ == FALSE;
3461
3464
                                } else {
3466
3469
                                        GeeHashSet* _tmp23_;
3467
3470
                                        FolksIndividual* _tmp24_;
3468
3471
                                        gboolean _tmp25_ = FALSE;
3469
 
                                        _tmp23_ = _data4_->candidate_inds;
 
3472
                                        _tmp23_ = _data5_->candidate_inds;
3470
3473
                                        _tmp24_ = candidate_ind;
3471
3474
                                        _tmp25_ = gee_abstract_collection_add ((GeeAbstractCollection*) _tmp23_, G_TYPE_CHECK_INSTANCE_CAST (_tmp24_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual));
3472
3475
                                        _tmp11_ = _tmp25_;
3483
3486
                                        _tmp27_ = candidate_ind;
3484
3487
                                        _tmp28_ = folks_individual_get_id (G_TYPE_CHECK_INSTANCE_CAST (_tmp27_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual));
3485
3488
                                        _tmp29_ = _tmp28_;
3486
 
                                        _tmp30_ = _data5_->prop_name;
 
3489
                                        _tmp30_ = _data6_->prop_name;
3487
3490
                                        _tmp31_ = prop_linking_value;
3488
3491
                                        g_debug ("    Found candidate individual '%s'" " by linkable property '%s' = '%s'.", _tmp29_, _tmp30_, _tmp31_);
3489
3492
                                }
3496
3499
}
3497
3500
 
3498
3501
 
3499
 
static void ________lambda35__folks_persona_linkable_property_callback (const gchar* link, gpointer self) {
3500
 
        _______lambda35_ (self, link);
 
3502
static void ________lambda62__folks_persona_linkable_property_callback (const gchar* link, gpointer self) {
 
3503
        _______lambda62_ (self, link);
3501
3504
}
3502
3505
 
3503
3506
 
3513
3516
                _tmp1_ = gee_iterable_iterator ((GeeIterable*) _tmp0_);
3514
3517
                _persona_it = _tmp1_;
3515
3518
                while (TRUE) {
3516
 
                        Block4Data* _data4_;
 
3519
                        Block5Data* _data5_;
3517
3520
                        GeeIterator* _tmp2_;
3518
3521
                        gboolean _tmp3_ = FALSE;
3519
3522
                        GeeIterator* _tmp4_;
3565
3568
                        FolksIndividual* _tmp178_;
3566
3569
                        gboolean _tmp179_;
3567
3570
                        gboolean _tmp180_;
3568
 
                        _data4_ = g_slice_new0 (Block4Data);
3569
 
                        _data4_->_ref_count_ = 1;
3570
 
                        _data4_->self = g_object_ref (self);
 
3571
                        _data5_ = g_slice_new0 (Block5Data);
 
3572
                        _data5_->_ref_count_ = 1;
 
3573
                        _data5_->self = g_object_ref (self);
3571
3574
                        _tmp2_ = _persona_it;
3572
3575
                        _tmp3_ = gee_iterator_next (_tmp2_);
3573
3576
                        if (!_tmp3_) {
3574
 
                                block4_data_unref (_data4_);
3575
 
                                _data4_ = NULL;
 
3577
                                block5_data_unref (_data5_);
 
3578
                                _data5_ = NULL;
3576
3579
                                break;
3577
3580
                        }
3578
3581
                        _tmp4_ = _persona_it;
3579
3582
                        _tmp5_ = gee_iterator_get (_tmp4_);
3580
 
                        _data4_->persona = (FolksPersona*) _tmp5_;
3581
 
                        _tmp6_ = _data4_->persona;
 
3583
                        _data5_->persona = (FolksPersona*) _tmp5_;
 
3584
                        _tmp6_ = _data5_->persona;
3582
3585
                        _tmp7_ = folks_persona_get_store (_tmp6_);
3583
3586
                        _tmp8_ = _tmp7_;
3584
3587
                        _tmp9_ = folks_persona_store_get_trust_level (_tmp8_);
3585
3588
                        _tmp10_ = _tmp9_;
3586
3589
                        trust_level = _tmp10_;
3587
3590
                        _tmp11_ = gee_hash_set_new (FOLKS_TYPE_INDIVIDUAL, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
3588
 
                        _data4_->candidate_inds = _tmp11_;
 
3591
                        _data5_->candidate_inds = _tmp11_;
3589
3592
                        _tmp12_ = gee_hash_set_new (FOLKS_TYPE_PERSONA, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL, NULL);
3590
3593
                        final_personas = _tmp12_;
3591
 
                        _tmp13_ = _data4_->persona;
 
3594
                        _tmp13_ = _data5_->persona;
3592
3595
                        _tmp14_ = folks_persona_get_uid (_tmp13_);
3593
3596
                        _tmp15_ = _tmp14_;
3594
 
                        _tmp16_ = _data4_->persona;
 
3597
                        _tmp16_ = _data5_->persona;
3595
3598
                        _tmp17_ = folks_persona_get_iid (_tmp16_);
3596
3599
                        _tmp18_ = _tmp17_;
3597
3600
                        g_debug ("individual-aggregator.vala:1018: Aggregating persona '%s' on '%s'.", _tmp15_, _tmp18_);
3598
 
                        _tmp21_ = _data4_->persona;
 
3601
                        _tmp21_ = _data5_->persona;
3599
3602
                        _tmp22_ = folks_persona_get_is_user (_tmp21_);
3600
3603
                        _tmp23_ = _tmp22_;
3601
3604
                        if (_tmp23_ == TRUE) {
3611
3614
                                FolksPersona* _tmp27_;
3612
3615
                                gboolean _tmp28_ = FALSE;
3613
3616
                                _tmp26_ = *user;
3614
 
                                _tmp27_ = _data4_->persona;
 
3617
                                _tmp27_ = _data5_->persona;
3615
3618
                                _tmp28_ = folks_individual_has_anti_link_with_persona (G_TYPE_CHECK_INSTANCE_CAST (_tmp26_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual), _tmp27_);
3616
3619
                                _tmp19_ = _tmp28_ == FALSE;
3617
3620
                        } else {
3629
3632
                                _tmp32_ = _tmp31_;
3630
3633
                                g_debug ("individual-aggregator.vala:1025:     Found candidate individual '%s' a" \
3631
3634
"s user.", _tmp32_);
3632
 
                                _tmp33_ = _data4_->candidate_inds;
 
3635
                                _tmp33_ = _data5_->candidate_inds;
3633
3636
                                _tmp34_ = *user;
3634
3637
                                gee_abstract_collection_add ((GeeAbstractCollection*) _tmp33_, G_TYPE_CHECK_INSTANCE_CAST (_tmp34_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual));
3635
3638
                        }
3643
3646
                                GeeCollection* candidate_ind_set;
3644
3647
                                GeeCollection* _tmp41_;
3645
3648
                                _tmp36_ = self->priv->_link_map;
3646
 
                                _tmp37_ = _data4_->persona;
 
3649
                                _tmp37_ = _data5_->persona;
3647
3650
                                _tmp38_ = folks_persona_get_iid (_tmp37_);
3648
3651
                                _tmp39_ = _tmp38_;
3649
3652
                                _tmp40_ = gee_multi_map_get ((GeeMultiMap*) _tmp36_, _tmp39_);
3696
3699
                                                                FolksPersona* _tmp57_;
3697
3700
                                                                gboolean _tmp58_ = FALSE;
3698
3701
                                                                _tmp56_ = candidate_ind;
3699
 
                                                                _tmp57_ = _data4_->persona;
 
3702
                                                                _tmp57_ = _data5_->persona;
3700
3703
                                                                _tmp58_ = folks_individual_has_anti_link_with_persona (G_TYPE_CHECK_INSTANCE_CAST (_tmp56_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual), _tmp57_);
3701
3704
                                                                _tmp49_ = _tmp58_ == FALSE;
3702
3705
                                                        } else {
3707
3710
                                                                GeeHashSet* _tmp60_;
3708
3711
                                                                FolksIndividual* _tmp61_;
3709
3712
                                                                gboolean _tmp62_ = FALSE;
3710
 
                                                                _tmp60_ = _data4_->candidate_inds;
 
3713
                                                                _tmp60_ = _data5_->candidate_inds;
3711
3714
                                                                _tmp61_ = candidate_ind;
3712
3715
                                                                _tmp62_ = gee_abstract_collection_add ((GeeAbstractCollection*) _tmp60_, G_TYPE_CHECK_INSTANCE_CAST (_tmp61_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual));
3713
3716
                                                                _tmp48_ = _tmp62_;
3725
3728
                                                                _tmp64_ = candidate_ind;
3726
3729
                                                                _tmp65_ = folks_individual_get_id (G_TYPE_CHECK_INSTANCE_CAST (_tmp64_, FOLKS_TYPE_INDIVIDUAL, FolksIndividual));
3727
3730
                                                                _tmp66_ = _tmp65_;
3728
 
                                                                _tmp67_ = _data4_->persona;
 
3731
                                                                _tmp67_ = _data5_->persona;
3729
3732
                                                                _tmp68_ = folks_persona_get_iid (_tmp67_);
3730
3733
                                                                _tmp69_ = _tmp68_;
3731
3734
                                                                g_debug ("    Found candidate individual '%s' by " "IID '%s'.", _tmp66_, _tmp69_);
3737
3740
                                }
3738
3741
                                _g_object_unref0 (candidate_ind_set);
3739
3742
                        }
3740
 
                        _tmp70_ = _data4_->persona;
 
3743
                        _tmp70_ = _data5_->persona;
3741
3744
                        _tmp71_ = folks_persona_get_store (_tmp70_);
3742
3745
                        _tmp72_ = _tmp71_;
3743
3746
                        _tmp73_ = folks_persona_store_get_trust_level (_tmp72_);
3748
3751
                                gint _tmp76__length1;
3749
3752
                                gchar** _tmp77_;
3750
3753
                                gint _tmp77__length1;
3751
 
                                _tmp75_ = _data4_->persona;
 
3754
                                _tmp75_ = _data5_->persona;
3752
3755
                                _tmp76_ = folks_persona_get_linkable_properties (_tmp75_, &_tmp76__length1);
3753
3756
                                _tmp77_ = _tmp76_;
3754
3757
                                _tmp77__length1 = _tmp76__length1;
3763
3766
                                                const gchar* foo = NULL;
3764
3767
                                                foo = foo_collection[foo_it];
3765
3768
                                                {
3766
 
                                                        Block5Data* _data5_;
 
3769
                                                        Block6Data* _data6_;
3767
3770
                                                        const gchar* _tmp78_;
3768
3771
                                                        FolksPersona* _tmp79_;
3769
3772
                                                        GObjectClass* _tmp80_ = NULL;
3773
3776
                                                        GParamSpec* _tmp83_ = NULL;
3774
3777
                                                        FolksPersona* _tmp86_;
3775
3778
                                                        const gchar* _tmp87_;
3776
 
                                                        _data5_ = g_slice_new0 (Block5Data);
3777
 
                                                        _data5_->_ref_count_ = 1;
3778
 
                                                        _data5_->_data4_ = block4_data_ref (_data4_);
 
3779
                                                        _data6_ = g_slice_new0 (Block6Data);
 
3780
                                                        _data6_->_ref_count_ = 1;
 
3781
                                                        _data6_->_data5_ = block5_data_ref (_data5_);
3779
3782
                                                        _tmp78_ = foo;
3780
 
                                                        _data5_->prop_name = _tmp78_;
3781
 
                                                        _tmp79_ = _data4_->persona;
 
3783
                                                        _data6_->prop_name = _tmp78_;
 
3784
                                                        _tmp79_ = _data5_->persona;
3782
3785
                                                        _tmp80_ = G_OBJECT_GET_CLASS ((GObject*) _tmp79_);
3783
3786
                                                        pclass = _tmp80_;
3784
3787
                                                        _tmp81_ = pclass;
3785
 
                                                        _tmp82_ = _data5_->prop_name;
 
3788
                                                        _tmp82_ = _data6_->prop_name;
3786
3789
                                                        _tmp83_ = g_object_class_find_property (_tmp81_, _tmp82_);
3787
3790
                                                        if (_tmp83_ == NULL) {
3788
3791
                                                                const gchar* _tmp84_ = NULL;
3789
3792
                                                                const gchar* _tmp85_;
3790
3793
                                                                _tmp84_ = _ ("Unknown property '%s' in linkable property list.");
3791
 
                                                                _tmp85_ = _data5_->prop_name;
 
3794
                                                                _tmp85_ = _data6_->prop_name;
3792
3795
                                                                g_warning (_tmp84_, _tmp85_);
3793
 
                                                                block5_data_unref (_data5_);
3794
 
                                                                _data5_ = NULL;
 
3796
                                                                block6_data_unref (_data6_);
 
3797
                                                                _data6_ = NULL;
3795
3798
                                                                continue;
3796
3799
                                                        }
3797
 
                                                        _tmp86_ = _data4_->persona;
3798
 
                                                        _tmp87_ = _data5_->prop_name;
3799
 
                                                        folks_persona_linkable_property_to_links (_tmp86_, _tmp87_, ________lambda35__folks_persona_linkable_property_callback, _data5_);
3800
 
                                                        block5_data_unref (_data5_);
3801
 
                                                        _data5_ = NULL;
 
3800
                                                        _tmp86_ = _data5_->persona;
 
3801
                                                        _tmp87_ = _data6_->prop_name;
 
3802
                                                        folks_persona_linkable_property_to_links (_tmp86_, _tmp87_, ________lambda62__folks_persona_linkable_property_callback, _data6_);
 
3803
                                                        block6_data_unref (_data6_);
 
3804
                                                        _data6_ = NULL;
3802
3805
                                                }
3803
3806
                                        }
3804
3807
                                }
3805
3808
                        }
3806
3809
                        _tmp88_ = final_personas;
3807
 
                        _tmp89_ = _data4_->persona;
 
3810
                        _tmp89_ = _data5_->persona;
3808
3811
                        gee_abstract_collection_add ((GeeAbstractCollection*) _tmp88_, _tmp89_);
3809
 
                        _tmp91_ = _data4_->candidate_inds;
 
3812
                        _tmp91_ = _data5_->candidate_inds;
3810
3813
                        _tmp92_ = gee_abstract_collection_get_size ((GeeCollection*) _tmp91_);
3811
3814
                        _tmp93_ = _tmp92_;
3812
3815
                        if (_tmp93_ > 0) {
3822
3825
                                        GeeHashSet* _tmp96_;
3823
3826
                                        GeeIterator* _tmp97_ = NULL;
3824
3827
                                        GeeIterator* _individual_it;
3825
 
                                        _tmp96_ = _data4_->candidate_inds;
 
3828
                                        _tmp96_ = _data5_->candidate_inds;
3826
3829
                                        _tmp97_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) _tmp96_);
3827
3830
                                        _individual_it = _tmp97_;
3828
3831
                                        while (TRUE) {
3856
3859
                                GeeHashSet* _tmp106_;
3857
3860
                                gint _tmp107_;
3858
3861
                                gint _tmp108_;
3859
 
                                _tmp106_ = _data4_->candidate_inds;
 
3862
                                _tmp106_ = _data5_->candidate_inds;
3860
3863
                                _tmp107_ = gee_abstract_collection_get_size ((GeeCollection*) _tmp106_);
3861
3864
                                _tmp108_ = _tmp107_;
3862
3865
                                if (_tmp108_ > 0) {
3919
3922
                                GeeHashSet* _tmp127_;
3920
3923
                                GeeIterator* _tmp128_ = NULL;
3921
3924
                                GeeIterator* _i_it;
3922
 
                                _tmp127_ = _data4_->candidate_inds;
 
3925
                                _tmp127_ = _data5_->candidate_inds;
3923
3926
                                _tmp128_ = gee_abstract_collection_iterator ((GeeAbstractCollection*) _tmp127_);
3924
3927
                                _i_it = _tmp128_;
3925
3928
                                while (TRUE) {
4089
4092
                        }
4090
4093
                        _g_object_unref0 (final_individual);
4091
4094
                        _g_object_unref0 (final_personas);
4092
 
                        block4_data_unref (_data4_);
4093
 
                        _data4_ = NULL;
 
4095
                        block5_data_unref (_data5_);
 
4096
                        _data5_ = NULL;
4094
4097
                }
4095
4098
                _g_object_unref0 (_persona_it);
4096
4099
        }
4338
4341
}
4339
4342
 
4340
4343
 
4341
 
static Block6Data* block6_data_ref (Block6Data* _data6_) {
4342
 
        g_atomic_int_inc (&_data6_->_ref_count_);
4343
 
        return _data6_;
 
4344
static Block7Data* block7_data_ref (Block7Data* _data7_) {
 
4345
        g_atomic_int_inc (&_data7_->_ref_count_);
 
4346
        return _data7_;
4344
4347
}
4345
4348
 
4346
4349
 
4347
 
static void block6_data_unref (void * _userdata_) {
4348
 
        Block6Data* _data6_;
4349
 
        _data6_ = (Block6Data*) _userdata_;
4350
 
        if (g_atomic_int_dec_and_test (&_data6_->_ref_count_)) {
 
4350
static void block7_data_unref (void * _userdata_) {
 
4351
        Block7Data* _data7_;
 
4352
        _data7_ = (Block7Data*) _userdata_;
 
4353
        if (g_atomic_int_dec_and_test (&_data7_->_ref_count_)) {
4351
4354
                FolksIndividualAggregator * self;
4352
 
                self = _data6_->self;
4353
 
                _g_object_unref0 (_data6_->individual);
 
4355
                self = _data7_->self;
 
4356
                _g_object_unref0 (_data7_->individual);
4354
4357
                _g_object_unref0 (self);
4355
 
                g_slice_free (Block6Data, _data6_);
 
4358
                g_slice_free (Block7Data, _data7_);
4356
4359
        }
4357
4360
}
4358
4361
 
4359
4362
 
4360
 
static void _____lambda36_ (Block6Data* _data6_, const gchar* l) {
 
4363
static void _____lambda63_ (Block7Data* _data7_, const gchar* l) {
4361
4364
        FolksIndividualAggregator * self;
4362
4365
        const gchar* _tmp0_;
4363
4366
        const gchar* prop_linking_value;
4364
4367
        GeeHashMultiMap* _tmp1_;
4365
4368
        FolksIndividual* _tmp2_;
4366
 
        self = _data6_->self;
 
4369
        self = _data7_->self;
4367
4370
        g_return_if_fail (l != NULL);
4368
4371
        _tmp0_ = l;
4369
4372
        prop_linking_value = _tmp0_;
4370
4373
        g_debug ("individual-aggregator.vala:1304:             %s", prop_linking_value);
4371
4374
        _tmp1_ = self->priv->_link_map;
4372
 
        _tmp2_ = _data6_->individual;
 
4375
        _tmp2_ = _data7_->individual;
4373
4376
        gee_multi_map_set ((GeeMultiMap*) _tmp1_, prop_linking_value, _tmp2_);
4374
4377
}
4375
4378
 
4376
4379
 
4377
 
static void ______lambda36__folks_persona_linkable_property_callback (const gchar* link, gpointer self) {
4378
 
        _____lambda36_ (self, link);
 
4380
static void ______lambda63__folks_persona_linkable_property_callback (const gchar* link, gpointer self) {
 
4381
        _____lambda63_ (self, link);
4379
4382
}
4380
4383
 
4381
4384
 
4382
4385
static void _folks_individual_aggregator_add_persona_to_link_map (FolksIndividualAggregator* self, FolksPersona* persona, FolksIndividual* individual) {
4383
 
        Block6Data* _data6_;
 
4386
        Block7Data* _data7_;
4384
4387
        FolksIndividual* _tmp0_;
4385
4388
        FolksIndividual* _tmp1_;
4386
4389
        const gchar* _tmp2_ = NULL;
4410
4413
        g_return_if_fail (self != NULL);
4411
4414
        g_return_if_fail (persona != NULL);
4412
4415
        g_return_if_fail (individual != NULL);
4413
 
        _data6_ = g_slice_new0 (Block6Data);
4414
 
        _data6_->_ref_count_ = 1;
4415
 
        _data6_->self = g_object_ref (self);
 
4416
        _data7_ = g_slice_new0 (Block7Data);
 
4417
        _data7_->_ref_count_ = 1;
 
4418
        _data7_->self = g_object_ref (self);
4416
4419
        _tmp0_ = individual;
4417
4420
        _tmp1_ = _g_object_ref0 (_tmp0_);
4418
 
        _data6_->individual = _tmp1_;
 
4421
        _g_object_unref0 (_data7_->individual);
 
4422
        _data7_->individual = _tmp1_;
4419
4423
        _tmp3_ = persona;
4420
4424
        _tmp4_ = folks_persona_get_is_user (_tmp3_);
4421
4425
        _tmp5_ = _tmp4_;
4433
4437
        _tmp12_ = _tmp11_;
4434
4438
        g_debug ("individual-aggregator.vala:1268: Connecting to Persona: %s (is user: %" \
4435
4439
"s, IID: %s)", _tmp8_, _tmp9_, _tmp12_);
4436
 
        _tmp13_ = _data6_->individual;
 
4440
        _tmp13_ = _data7_->individual;
4437
4441
        _tmp14_ = folks_individual_get_id (_tmp13_);
4438
4442
        _tmp15_ = _tmp14_;
4439
4443
        g_debug ("individual-aggregator.vala:1270:     Mapping to Individual: %s", _tmp15_);
4441
4445
        _tmp17_ = persona;
4442
4446
        _tmp18_ = folks_persona_get_iid (_tmp17_);
4443
4447
        _tmp19_ = _tmp18_;
4444
 
        _tmp20_ = _data6_->individual;
 
4448
        _tmp20_ = _data7_->individual;
4445
4449
        gee_multi_map_set ((GeeMultiMap*) _tmp16_, _tmp19_, _tmp20_);
4446
4450
        _tmp21_ = persona;
4447
4451
        _tmp22_ = folks_persona_get_store (_tmp21_);
4497
4501
                                        }
4498
4502
                                        _tmp37_ = persona;
4499
4503
                                        _tmp38_ = prop_name;
4500
 
                                        folks_persona_linkable_property_to_links (_tmp37_, _tmp38_, ______lambda36__folks_persona_linkable_property_callback, _data6_);
 
4504
                                        folks_persona_linkable_property_to_links (_tmp37_, _tmp38_, ______lambda63__folks_persona_linkable_property_callback, _data7_);
4501
4505
                                }
4502
4506
                        }
4503
4507
                }
4504
4508
        }
4505
 
        block6_data_unref (_data6_);
4506
 
        _data6_ = NULL;
 
4509
        block7_data_unref (_data7_);
 
4510
        _data7_ = NULL;
4507
4511
}
4508
4512
 
4509
4513
 
5860
5864
        _data_->self = _tmp0_;
5861
5865
        _tmp1_ = parent;
5862
5866
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
5867
        _g_object_unref0 (_data_->parent);
5863
5868
        _data_->parent = _tmp2_;
5864
5869
        _tmp3_ = persona_store;
5865
5870
        _tmp4_ = _g_object_ref0 (_tmp3_);
 
5871
        _g_object_unref0 (_data_->persona_store);
5866
5872
        _data_->persona_store = _tmp4_;
5867
5873
        _tmp5_ = details;
5868
5874
        _tmp6_ = _g_hash_table_ref0 (_tmp5_);
 
5875
        _g_hash_table_unref0 (_data_->details);
5869
5876
        _data_->details = _tmp6_;
5870
5877
        folks_individual_aggregator_add_persona_from_details_co (_data_);
5871
5878
}
5885
5892
 
5886
5893
 
5887
5894
/**
5888
 
   * Add a new persona in the given {@link PersonaStore} based on the `details`
5889
 
   * provided.
 
5895
   * Add a new persona in the given {@link PersonaStore} based on the
 
5896
   * ``details`` provided.
5890
5897
   *
5891
5898
   * If the target store is offline, this function will throw
5892
5899
   * {@link IndividualAggregatorError.STORE_OFFLINE}. It's the responsibility of
5900
5907
   *  * message - a user-readable message to pass to the persona being added
5901
5908
   *
5902
5909
   * If a {@link Persona} with the given details already exists in the store, no
5903
 
   * error will be thrown and this function will return `null`.
 
5910
   * error will be thrown and this function will return ``null``.
5904
5911
   *
5905
5912
   * @param parent an optional {@link Individual} to add the new {@link Persona}
5906
5913
   * to. This persona will be appended to its ordered list of personas.
5907
5914
   * @param persona_store the {@link PersonaStore} to add the persona to
5908
5915
   * @param details a key-value map of details to use in creating the new
5909
5916
   * {@link Persona}
5910
 
   * @return the new {@link Persona} or `null` if the corresponding
5911
 
   * {@link Persona} already existed. If non-`null`, the new {@link Persona}
 
5917
   * @return the new {@link Persona} or ``null`` if the corresponding
 
5918
   * {@link Persona} already existed. If non-``null``, the new {@link Persona}
5912
5919
   * will also be added to a new or existing {@link Individual} as necessary.
5913
5920
   * @throws IndividualAggregatorError.STORE_OFFLINE if the persona store was
5914
5921
   * offline
6056
6063
}
6057
6064
 
6058
6065
 
6059
 
static Block7Data* block7_data_ref (Block7Data* _data7_) {
6060
 
        g_atomic_int_inc (&_data7_->_ref_count_);
6061
 
        return _data7_;
 
6066
static Block8Data* block8_data_ref (Block8Data* _data8_) {
 
6067
        g_atomic_int_inc (&_data8_->_ref_count_);
 
6068
        return _data8_;
6062
6069
}
6063
6070
 
6064
6071
 
6065
 
static void block7_data_unref (void * _userdata_) {
6066
 
        Block7Data* _data7_;
6067
 
        _data7_ = (Block7Data*) _userdata_;
6068
 
        if (g_atomic_int_dec_and_test (&_data7_->_ref_count_)) {
 
6072
static void block8_data_unref (void * _userdata_) {
 
6073
        Block8Data* _data8_;
 
6074
        _data8_ = (Block8Data*) _userdata_;
 
6075
        if (g_atomic_int_dec_and_test (&_data8_->_ref_count_)) {
6069
6076
                FolksIndividualAggregator * self;
6070
 
                self = _data7_->self;
6071
 
                _g_hash_table_unref0 (_data7_->retval);
 
6077
                self = _data8_->self;
 
6078
                _g_hash_table_unref0 (_data8_->retval);
6072
6079
                _g_object_unref0 (self);
6073
 
                g_slice_free (Block7Data, _data7_);
 
6080
                g_slice_free (Block8Data, _data8_);
6074
6081
        }
6075
6082
}
6076
6083
 
6101
6108
}
6102
6109
 
6103
6110
 
6104
 
static void __lambda38_ (Block7Data* _data7_, const gchar* k, GValue* v) {
 
6111
static void __lambda65_ (Block8Data* _data8_, const gchar* k, GValue* v) {
6105
6112
        FolksIndividualAggregator * self;
6106
6113
        const gchar* _tmp0_;
6107
6114
        gchar* _tmp1_;
6108
6115
        GValue* _tmp2_;
6109
6116
        GValue* _tmp3_;
6110
 
        self = _data7_->self;
 
6117
        self = _data8_->self;
6111
6118
        g_return_if_fail (k != NULL);
6112
6119
        _tmp0_ = k;
6113
6120
        _tmp1_ = g_strdup ((const gchar*) _tmp0_);
6114
6121
        _tmp2_ = v;
6115
6122
        _tmp3_ = __g_value_dup0 (_tmp2_);
6116
 
        g_hash_table_insert (_data7_->retval, _tmp1_, _tmp3_);
 
6123
        g_hash_table_insert (_data8_->retval, _tmp1_, _tmp3_);
6117
6124
}
6118
6125
 
6119
6126
 
6120
 
static void ___lambda38__gh_func (gconstpointer key, gconstpointer value, gpointer self) {
6121
 
        __lambda38_ (self, key, value);
 
6127
static void ___lambda65__gh_func (gconstpointer key, gconstpointer value, gpointer self) {
 
6128
        __lambda65_ (self, key, value);
6122
6129
}
6123
6130
 
6124
6131
 
6125
6132
static GHashTable* _folks_individual_aggregator_asv_copy (FolksIndividualAggregator* self, GHashTable* asv) {
6126
6133
        GHashTable* result = NULL;
6127
 
        Block7Data* _data7_;
 
6134
        Block8Data* _data8_;
6128
6135
        GHashFunc _tmp0_;
6129
6136
        GEqualFunc _tmp1_;
6130
6137
        GHashTable* _tmp2_;
6132
6139
        GHashTable* _tmp4_;
6133
6140
        g_return_val_if_fail (self != NULL, NULL);
6134
6141
        g_return_val_if_fail (asv != NULL, NULL);
6135
 
        _data7_ = g_slice_new0 (Block7Data);
6136
 
        _data7_->_ref_count_ = 1;
6137
 
        _data7_->self = g_object_ref (self);
 
6142
        _data8_ = g_slice_new0 (Block8Data);
 
6143
        _data8_->_ref_count_ = 1;
 
6144
        _data8_->self = g_object_ref (self);
6138
6145
        _tmp0_ = g_str_hash;
6139
6146
        _tmp1_ = g_str_equal;
6140
6147
        _tmp2_ = g_hash_table_new_full (_tmp0_, _tmp1_, _g_free0_, __vala_GValue_free0_);
6141
 
        _data7_->retval = _tmp2_;
 
6148
        _data8_->retval = _tmp2_;
6142
6149
        _tmp3_ = asv;
6143
 
        g_hash_table_foreach (_tmp3_, ___lambda38__gh_func, _data7_);
6144
 
        _tmp4_ = _g_hash_table_ref0 (_data7_->retval);
 
6150
        g_hash_table_foreach (_tmp3_, ___lambda65__gh_func, _data8_);
 
6151
        _tmp4_ = _g_hash_table_ref0 (_data8_->retval);
6145
6152
        result = _tmp4_;
6146
 
        block7_data_unref (_data7_);
6147
 
        _data7_ = NULL;
 
6153
        block8_data_unref (_data8_);
 
6154
        _data8_ = NULL;
6148
6155
        return result;
6149
6156
}
6150
6157
 
6170
6177
        _data_->self = _tmp0_;
6171
6178
        _tmp1_ = individual;
6172
6179
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
6180
        _g_object_unref0 (_data_->individual);
6173
6181
        _data_->individual = _tmp2_;
6174
6182
        folks_individual_aggregator_remove_individual_co (_data_);
6175
6183
}
6315
6323
        _data_->self = _tmp0_;
6316
6324
        _tmp1_ = persona;
6317
6325
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
6326
        _g_object_unref0 (_data_->persona);
6318
6327
        _data_->persona = _tmp2_;
6319
6328
        folks_individual_aggregator_remove_persona_co (_data_);
6320
6329
}
6410
6419
        _data_->self = _tmp0_;
6411
6420
        _tmp1_ = personas;
6412
6421
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
6422
        _g_object_unref0 (_data_->personas);
6413
6423
        _data_->personas = _tmp2_;
6414
6424
        folks_individual_aggregator_link_personas_co (_data_);
6415
6425
}
7055
7065
        _data_->self = _tmp0_;
7056
7066
        _tmp1_ = individual;
7057
7067
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
7068
        _g_object_unref0 (_data_->individual);
7058
7069
        _data_->individual = _tmp2_;
7059
7070
        folks_individual_aggregator_unlink_individual_co (_data_);
7060
7071
}
7293
7304
        _data_->self = _tmp0_;
7294
7305
        _tmp1_ = individual;
7295
7306
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
7307
        _g_object_unref0 (_data_->individual);
7296
7308
        _data_->individual = _tmp2_;
7297
7309
        _tmp3_ = property_name;
7298
7310
        _tmp4_ = g_strdup (_tmp3_);
 
7311
        _g_free0 (_data_->property_name);
7299
7312
        _data_->property_name = _tmp4_;
7300
7313
        folks_individual_aggregator_ensure_individual_property_writeable_co (_data_);
7301
7314
}
7319
7332
   * {@link Individual}.
7320
7333
   *
7321
7334
   * This makes sure that there is at least one {@link Persona} in the
7322
 
   * individual which has `property_name` in its
 
7335
   * individual which has ``property_name`` in its
7323
7336
   * {@link Persona.writeable_properties}. If no such persona exists in the
7324
7337
   * individual, a new one will be created and linked to the individual. (Note
7325
7338
   * that due to the design of the aggregator, this will result in the previous
7332
7345
   * {@link IndividualAggregatorError.PROPERTY_NOT_WRITEABLE} error will be
7333
7346
   * thrown.
7334
7347
   *
7335
 
   * @param individual the individual for which `property_name` should be
 
7348
   * @param individual the individual for which ``property_name`` should be
7336
7349
   * writeable
7337
7350
   * @param property_name the name of the property which needs to be writeable
7338
7351
   * (this should be in lower case using hyphens, e.g. “web-service-addresses”)
7341
7354
   * @throws IndividualAggregatorError.NO_PRIMARY_STORE if no primary store was
7342
7355
   * configured for this individual aggregator
7343
7356
   * @throws IndividualAggregatorError.PROPERTY_NOT_WRITEABLE if the given
7344
 
   * `property_name` referred to a non-writeable property
 
7357
   * ``property_name`` referred to a non-writeable property
7345
7358
   * @throws IndividualAggregatorError if adding a new persona (using
7346
7359
   * {@link IndividualAggregator.add_persona_from_details}) failed, or if
7347
7360
   * linking personas (using {@link IndividualAggregator.link_personas}) failed
7445
7458
        _data_->self = _tmp0_;
7446
7459
        _tmp1_ = personas;
7447
7460
        _tmp2_ = _g_object_ref0 (_tmp1_);
 
7461
        _g_object_unref0 (_data_->personas);
7448
7462
        _data_->personas = _tmp2_;
7449
7463
        _tmp3_ = property_name;
7450
7464
        _tmp4_ = g_strdup (_tmp3_);
 
7465
        _g_free0 (_data_->property_name);
7451
7466
        _data_->property_name = _tmp4_;
7452
7467
        _folks_individual_aggregator_ensure_personas_property_writeable_co (_data_);
7453
7468
}
7855
7870
        _data_->self = _tmp0_;
7856
7871
        _tmp1_ = id;
7857
7872
        _tmp2_ = g_strdup (_tmp1_);
 
7873
        _g_free0 (_data_->id);
7858
7874
        _data_->id = _tmp2_;
7859
7875
        folks_individual_aggregator_look_up_individual_co (_data_);
7860
7876
}
7876
7892
/**
7877
7893
   * Look up an individual in the aggregator.
7878
7894
   *
7879
 
   * This returns the {@link Individual} with the given `id` if it exists in
7880
 
   * the aggregator, and `null` otherwise.
 
7895
   * This returns the {@link Individual} with the given ``id`` if it exists in
 
7896
   * the aggregator, and ``null`` otherwise.
7881
7897
   *
7882
7898
   * In future, when lazy-loading of individuals' properties is added to folks,
7883
7899
   * this method guarantees to load all properties of the individual, even if
7888
7904
   * that case.
7889
7905
   *
7890
7906
   * @param id ID of the individual to look up
7891
 
   * @return individual with `id`, or `null` if no such individual was found
 
7907
   * @return individual with ``id``, or ``null`` if no such individual was found
7892
7908
   * @throws GLib.Error from {@link IndividualAggregator.prepare}
7893
7909
   *
7894
7910
   * @since 0.7.0
8284
8300
           * quiescent state.
8285
8301
           *
8286
8302
           * It's guaranteed that this property's value will only ever change after
8287
 
           * {@link IndividualAggregator.is_prepared} has changed to `true`.
 
8303
           * {@link IndividualAggregator.is_prepared} has changed to ``true``.
8288
8304
           *
8289
8305
           * @since 0.6.2
8290
8306
           */
8296
8312
           * by:
8297
8313
           *
8298
8314
           * - the FOLKS_PRIMARY_STORE env var (mostly for debugging)
8299
 
           * - the GSettings key set in `_PRIMARY_STORE_CONFIG_KEY` (system set store)
8300
 
           * - going with the `key-file` or `eds` store as the fall-back option
 
8315
           * - the GSettings key set in ``_PRIMARY_STORE_CONFIG_KEY`` (system set store)
 
8316
           * - going with the ``key-file`` or ``eds`` store as the fall-back option
8301
8317
           *
8302
8318
           * @since 0.5.0
8303
8319
           */
8359
8375
           * mappings from the old individuals to the single new individual which
8360
8376
           * replaces them (i.e. each of the old individuals will map to the same new
8361
8377
           * individual). This new individual is the one which will be specified as the
8362
 
           * `replacement_individual` in the {@link Individual.removed} signal for the
 
8378
           * ``replacement_individual`` in the {@link Individual.removed} signal for the
8363
8379
           * old individuals.
8364
8380
           *
8365
8381
           * Individuals which have been unlinked will be listed in the multi-map as
8367
8383
           * which replace it.
8368
8384
           *
8369
8385
           * Individuals which have been added will be listed in the multi-map as a
8370
 
           * mapping from `null` to the set of added individuals. If `null` doesn't
 
8386
           * mapping from ``null`` to the set of added individuals. If ``null`` doesn't
8371
8387
           * map to anything, no individuals have been added to the aggregator.
8372
8388
           *
8373
8389
           * Individuals which have been removed will be listed in the multi-map as
8374
 
           * mappings from the removed individual to `null`.
 
8390
           * mappings from the removed individual to ``null``.
8375
8391
           *
8376
8392
           * This will not be emitted until after {@link IndividualAggregator.prepare}
8377
8393
           * has been called.