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;
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;
132
132
#define FOLKS_TYPE_PERSONA_STORE_TRUST (folks_persona_store_trust_get_type ())
133
typedef struct _Block5Data Block5Data;
133
typedef struct _Block6Data Block6Data;
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))
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;
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);
2561
static Block3Data* block3_data_ref (Block3Data* _data3_) {
2562
g_atomic_int_inc (&_data3_->_ref_count_);
2563
static Block4Data* block4_data_ref (Block4Data* _data4_) {
2564
g_atomic_int_inc (&_data4_->_ref_count_);
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_);
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);
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) {
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);
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) {
2803
2806
_g_object_unref0 (_tmp54_);
2804
2807
_g_object_unref0 (persona_set);
2806
_tmp55_ = _data3_->store;
2807
folks_persona_store_prepare (_tmp55_, ___lambda37__gasync_ready_callback, block3_data_ref (_data3_));
2808
block3_data_unref (_data3_);
2809
_tmp55_ = _data4_->store;
2810
folks_persona_store_prepare (_tmp55_, ___lambda64__gasync_ready_callback, block4_data_ref (_data4_));
2811
block4_data_unref (_data4_);
3352
static Block4Data* block4_data_ref (Block4Data* _data4_) {
3353
g_atomic_int_inc (&_data4_->_ref_count_);
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_);
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_);
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_);
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_);
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;
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_);
3574
block4_data_unref (_data4_);
3577
block5_data_unref (_data5_);
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) {
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_);
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_);
3796
block6_data_unref (_data6_);
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_);
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_);
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) {
4341
static Block6Data* block6_data_ref (Block6Data* _data6_) {
4342
g_atomic_int_inc (&_data6_->_ref_count_);
4344
static Block7Data* block7_data_ref (Block7Data* _data7_) {
4345
g_atomic_int_inc (&_data7_->_ref_count_);
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_);
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);
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_);
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);
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_;
5900
5907
* * message - a user-readable message to pass to the persona being added
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``.
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
6059
static Block7Data* block7_data_ref (Block7Data* _data7_) {
6060
g_atomic_int_inc (&_data7_->_ref_count_);
6066
static Block8Data* block8_data_ref (Block8Data* _data8_) {
6067
g_atomic_int_inc (&_data8_->_ref_count_);
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_);
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_;
6108
6115
GValue* _tmp2_;
6109
6116
GValue* _tmp3_;
6110
self = _data7_->self;
6117
self = _data8_->self;
6111
6118
g_return_if_fail (k != NULL);
6113
6120
_tmp1_ = g_strdup ((const gchar*) _tmp0_);
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_);
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);
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_;
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_);
6153
block8_data_unref (_data8_);
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
7877
7893
* Look up an individual in the aggregator.
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.
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
8367
8383
* which replace it.
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.
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``.
8376
8392
* This will not be emitted until after {@link IndividualAggregator.prepare}
8377
8393
* has been called.