clsync
Toggle main menu visibility
Loading...
Searching...
No Matches
glibex.c
Go to the documentation of this file.
1
/*
2
clsync - file tree sync utility based on inotify
3
4
Copyright (C) 2013 Dmitry Yu Okunev <dyokunev@ut.mephi.ru> 0x8E30679C
5
6
This program is free software: you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
15
16
You should have received a copy of the GNU General Public License
17
along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
21
#include "
common.h
"
22
#include "
glibex.h
"
23
24
__extension__
struct
keyvalue_copy_arg
{
25
union
{
26
GHashTable *
ht_dst
;
27
GTree *
bt_dst
;
28
};
29
GDupFunc
k_dup_funct
;
30
GDupFunc
v_dup_funct
;
31
};
32
33
void
g_hash_table_dup_item
( gpointer k, gpointer v, gpointer arg_gp )
34
{
35
GHashTable *ht_dst = ( (
struct
keyvalue_copy_arg
* ) arg_gp )->
ht_dst
;
36
GDupFunc
k_dup_funct
= ( (
struct
keyvalue_copy_arg
* ) arg_gp )->
k_dup_funct
;
37
GDupFunc
v_dup_funct
= ( (
struct
keyvalue_copy_arg
* ) arg_gp )->
v_dup_funct
;
38
g_hash_table_insert (
ht_dst
,
k_dup_funct
== NULL ? NULL :
k_dup_funct
( k ),
v_dup_funct
== NULL ? NULL :
v_dup_funct
( v ) );
39
return
;
40
}
41
42
GHashTable *
g_hash_table_dup
( GHashTable *src, GHashFunc hash_funct, GEqualFunc key_equal_funct, GDestroyNotify key_destroy_funct, GDestroyNotify value_destroy_funct,
GDupFunc
key_dup_funct,
GDupFunc
value_dup_funct )
43
{
44
GHashTable *dst = g_hash_table_new_full ( hash_funct, key_equal_funct, key_destroy_funct, value_destroy_funct );
45
struct
keyvalue_copy_arg
arg;
46
arg.
ht_dst
= dst;
47
arg.
k_dup_funct
= key_dup_funct;
48
arg.
v_dup_funct
= value_dup_funct;
49
g_hash_table_foreach ( src,
g_hash_table_dup_item
, &arg );
50
return
dst;
51
}
52
53
gboolean
g_tree_dup_item
( gpointer k, gpointer v, gpointer arg_gp )
54
{
55
GTree *
bt_dst
= ( (
struct
keyvalue_copy_arg
* ) arg_gp )->
bt_dst
;
56
GDupFunc
k_dup_funct
= ( (
struct
keyvalue_copy_arg
* ) arg_gp )->
k_dup_funct
;
57
GDupFunc
v_dup_funct
= ( (
struct
keyvalue_copy_arg
* ) arg_gp )->
v_dup_funct
;
58
g_tree_replace (
bt_dst
,
k_dup_funct
== NULL ? NULL :
k_dup_funct
( k ),
v_dup_funct
== NULL ? NULL :
v_dup_funct
( v ) );
59
return
FALSE;
60
}
61
62
GTree *
g_tree_dup
( GTree *src, GCompareDataFunc key_compare_func, gpointer key_compare_data, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func,
GDupFunc
key_dup_funct,
GDupFunc
value_dup_funct )
63
{
64
GTree *dst = g_tree_new_full ( key_compare_func, key_compare_data, key_destroy_func, value_destroy_func );
65
struct
keyvalue_copy_arg
arg;
66
arg.
bt_dst
= dst;
67
arg.
k_dup_funct
= key_dup_funct;
68
arg.
v_dup_funct
= value_dup_funct;
69
g_tree_foreach ( src,
g_tree_dup_item
, &arg );
70
return
dst;
71
}
72
common.h
g_hash_table_dup_item
void g_hash_table_dup_item(gpointer k, gpointer v, gpointer arg_gp)
Definition
glibex.c:33
g_hash_table_dup
GHashTable * g_hash_table_dup(GHashTable *src, GHashFunc hash_funct, GEqualFunc key_equal_funct, GDestroyNotify key_destroy_funct, GDestroyNotify value_destroy_funct, GDupFunc key_dup_funct, GDupFunc value_dup_funct)
Definition
glibex.c:42
g_tree_dup_item
gboolean g_tree_dup_item(gpointer k, gpointer v, gpointer arg_gp)
Definition
glibex.c:53
g_tree_dup
GTree * g_tree_dup(GTree *src, GCompareDataFunc key_compare_func, gpointer key_compare_data, GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func, GDupFunc key_dup_funct, GDupFunc value_dup_funct)
Definition
glibex.c:62
glibex.h
GDupFunc
gpointer(* GDupFunc)(gpointer data)
Definition
glibex.h:22
keyvalue_copy_arg
Definition
glibex.c:24
keyvalue_copy_arg::k_dup_funct
GDupFunc k_dup_funct
Definition
glibex.c:29
keyvalue_copy_arg::bt_dst
GTree * bt_dst
Definition
glibex.c:27
keyvalue_copy_arg::v_dup_funct
GDupFunc v_dup_funct
Definition
glibex.c:30
keyvalue_copy_arg::ht_dst
GHashTable * ht_dst
Definition
glibex.c:26
Generated on
for clsync by
1.17.0