libpurple/group.h

Mon, 12 Dec 2022 23:38:47 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Mon, 12 Dec 2022 23:38:47 -0600
changeset 41966
c7bcaf2f41ef
parent 41208
48baac6c8989
child 42344
c51d37734155
permissions
-rw-r--r--

Create PurpleAvatar to represent avatars

Testing Done:
Ran the unit tests and manually verified the docs.

Reviewed at https://reviews.imfreedom.org/r/2092/

37944
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 /* purple
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
2 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
3 * Purple is the legal property of its developers, whose names are too numerous
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
4 * to list here. Please refer to the COPYRIGHT file distributed with this
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
5 * source distribution.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
6 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
7 * This program is free software; you can redistribute it and/or modify
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
8 * it under the terms of the GNU General Public License as published by
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
10 * (at your option) any later version.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
11 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
12 * This program is distributed in the hope that it will be useful,
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
15 * GNU General Public License for more details.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
16 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
17 * You should have received a copy of the GNU General Public License
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
18 * along with this program; if not, write to the Free Software
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
20 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
21
40474
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40350
diff changeset
22 #if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40350
diff changeset
23 # error "only <purple.h> may be included directly"
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40350
diff changeset
24 #endif
1341be8e3402 Make it so only libpurple can directly include libpurple header files.
Gary Kramlich <grim@reaperworld.com>
parents: 40350
diff changeset
25
37944
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 #ifndef PURPLE_GROUP_H
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
27 #define PURPLE_GROUP_H
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
28
37945
49ac171ebe26 move CountingNode to it's own file
Gary Kramlich <grim@reaperworld.com>
parents: 37944
diff changeset
29 #include "countingnode.h"
37944
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31 #define PURPLE_TYPE_GROUP (purple_group_get_type())
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
32 #define PURPLE_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), PURPLE_TYPE_GROUP, PurpleGroup))
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
33 #define PURPLE_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), PURPLE_TYPE_GROUP, PurpleGroupClass))
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
34 #define PURPLE_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), PURPLE_TYPE_GROUP))
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
35 #define PURPLE_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), PURPLE_TYPE_GROUP))
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
36 #define PURPLE_GROUP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), PURPLE_TYPE_GROUP, PurpleGroupClass))
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
37
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
38 typedef struct _PurpleGroup PurpleGroup;
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
39 typedef struct _PurpleGroupClass PurpleGroupClass;
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
40
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
41 #include "account.h"
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
42 #include "blistnode.h"
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
43 #include "buddyicon.h"
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
44 #include "status.h"
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
45
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
46 /**************************************************************************/
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
47 /* Data Structures */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
48 /**************************************************************************/
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
49
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
50 /*
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
51 * PurpleGroup:
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
52 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
53 * A group on the buddy list.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
54 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
55 * A group is a counting node, which means it keeps track of the counts of the
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
56 * chats and contacts under this group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
57 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
58 struct _PurpleGroup {
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
59 PurpleCountingNode counting;
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
60 };
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
61
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
62 struct _PurpleGroupClass {
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
63 PurpleCountingNodeClass counting_class;
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
64
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
65 /*< private >*/
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
66 void (*_purple_reserved1)(void);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
67 void (*_purple_reserved2)(void);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
68 void (*_purple_reserved3)(void);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
69 void (*_purple_reserved4)(void);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70 };
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
71
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
72 G_BEGIN_DECLS
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
73
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
74 /**************************************************************************/
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
75 /* Group API */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
76 /**************************************************************************/
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
77
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
78 /**
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
79 * purple_group_get_type:
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
80 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
81 * Returns: The #GType for the #PurpleGroup object.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
82 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
83 GType purple_group_get_type(void);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
84
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
85 /**
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
86 * purple_group_new:
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
87 * @name: The name of the new group
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
88 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
89 * Creates a new group
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
90 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
91 * You can't have more than one group with the same name. Sorry. If you pass
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
92 * this the name of a group that already exists, it will return that group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
93 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
94 * Returns: A new group struct
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
95 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
96 PurpleGroup *purple_group_new(const char *name);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
97
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
98 /**
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
99 * purple_group_get_accounts:
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
100 * @g: The group
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
101 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
102 * Returns a list of accounts that have buddies in this group
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
103 *
38716
b9bed228745a Add many libpurple element-type annotations.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38552
diff changeset
104 * Returns: (element-type PurpleAccount) (transfer container): A list of
b9bed228745a Add many libpurple element-type annotations.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 38552
diff changeset
105 * accounts, or %NULL if the group has no accounts.
37944
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
106 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
107 GSList *purple_group_get_accounts(PurpleGroup *g);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
108
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
109 /**
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
110 * purple_group_on_account:
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
111 * @g: The group to search through.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
112 * @account: The account.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
114 * Determines whether an account owns any buddies in a given group
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
115 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
116 * Returns: TRUE if there are any buddies in the group, or FALSE otherwise.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
117 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
118 gboolean purple_group_on_account(PurpleGroup *g, PurpleAccount *account);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
119
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
120 /**
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
121 * purple_group_set_name:
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
122 * @group: The group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
123 * @name: The name of the group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
124 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
125 * Sets the name of a group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
126 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
127 void purple_group_set_name(PurpleGroup *group, const char *name);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
128
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
129 /**
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
130 * purple_group_get_name:
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
131 * @group: The group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
132 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
133 * Returns the name of a group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
134 *
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
135 * Returns: The name of the group.
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
136 */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
137 const char *purple_group_get_name(PurpleGroup *group);
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
138
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
139 G_END_DECLS
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
140
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
141 #endif /* PURPLE_GROUP_H */
e42e19eba593 Pull PurpleGroup out into it's own files
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
142

mercurial