annotate src/lib-storage/mail-namespace.h @ 8751:98e46e8153e4 HEAD

mail-storage API: Added some function description comments.
author Timo Sirainen <tss@iki.fi>
date Fri, 20 Feb 2009 15:27:03 -0500
parents 3efcdc45d111
children 703214a10642
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6410
e4eb71ae8e96 Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents: 6236
diff changeset
1 #ifndef MAIL_NAMESPACE_H
e4eb71ae8e96 Changed .h ifdef/defines to use <NAME>_H format.
Timo Sirainen <tss@iki.fi>
parents: 6236
diff changeset
2 #define MAIL_NAMESPACE_H
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
3
8082
db66611fd195 Added struct mail_user and fixed the code to support multiple users per process.
Timo Sirainen <tss@iki.fi>
parents: 7912
diff changeset
4 #include "mail-user.h"
db66611fd195 Added struct mail_user and fixed the code to support multiple users per process.
Timo Sirainen <tss@iki.fi>
parents: 7912
diff changeset
5
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
6 enum namespace_type {
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
7 NAMESPACE_PRIVATE,
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
8 NAMESPACE_SHARED,
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
9 NAMESPACE_PUBLIC
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
10 };
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
11
5808
45735dd11f17 Moved several namespace booleans to a flags field. Removed unused
Timo Sirainen <tss@iki.fi>
parents: 5804
diff changeset
12 enum namespace_flags {
45735dd11f17 Moved several namespace booleans to a flags field. Removed unused
Timo Sirainen <tss@iki.fi>
parents: 5804
diff changeset
13 /* Namespace contains the INBOX mailbox (there can be only one) */
6603
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
14 NAMESPACE_FLAG_INBOX = 0x01,
5808
45735dd11f17 Moved several namespace booleans to a flags field. Removed unused
Timo Sirainen <tss@iki.fi>
parents: 5804
diff changeset
15 /* Namespace is visible only by explicitly using its full prefix */
6603
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
16 NAMESPACE_FLAG_HIDDEN = 0x02,
8461
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8448
diff changeset
17 /* Namespace prefix is visible with LIST */
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8448
diff changeset
18 NAMESPACE_FLAG_LIST_PREFIX = 0x04,
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8448
diff changeset
19 /* Namespace prefix isn't visible with LIST, but child mailboxes are */
659667d89f69 Added list=children option for namespaces.
Timo Sirainen <tss@iki.fi>
parents: 8448
diff changeset
20 NAMESPACE_FLAG_LIST_CHILDREN = 0x08,
6603
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
21 /* Namespace uses its own subscriptions. */
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
22 NAMESPACE_FLAG_SUBSCRIPTIONS = 0x10,
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
23
6459
c6849b4a3812 Mark deliver's dummy mbox namespace as internal and don't include it in
Timo Sirainen <tss@iki.fi>
parents: 6410
diff changeset
24 /* Namespace is created for internal use only. */
8291
4296aa3fbb75 Subscription handling fixes for subscriptions=no namespaces and shared mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8085
diff changeset
25 NAMESPACE_FLAG_INTERNAL = 0x1000,
4296aa3fbb75 Subscription handling fixes for subscriptions=no namespaces and shared mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8085
diff changeset
26 /* Namespace was created automatically (for shared mailboxes) */
8448
4cf249042df6 When autocreating a new shared namespace, drop existing namespaces where we haven't seen any mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8446
diff changeset
27 NAMESPACE_FLAG_AUTOCREATED = 0x2000,
4cf249042df6 When autocreating a new shared namespace, drop existing namespaces where we haven't seen any mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8446
diff changeset
28 /* Namespace has at least some usable mailboxes. Autocreated namespaces
4cf249042df6 When autocreating a new shared namespace, drop existing namespaces where we haven't seen any mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8446
diff changeset
29 that don't have usable mailboxes may be removed automatically. */
4cf249042df6 When autocreating a new shared namespace, drop existing namespaces where we haven't seen any mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8446
diff changeset
30 NAMESPACE_FLAG_USABLE = 0x4000
5808
45735dd11f17 Moved several namespace booleans to a flags field. Removed unused
Timo Sirainen <tss@iki.fi>
parents: 5804
diff changeset
31 };
45735dd11f17 Moved several namespace booleans to a flags field. Removed unused
Timo Sirainen <tss@iki.fi>
parents: 5804
diff changeset
32
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
33 struct mail_namespace {
5804
c7f35a9beb0b Store namespaces sorted by their prefix length.
Timo Sirainen <tss@iki.fi>
parents: 5802
diff changeset
34 /* Namespaces are sorted by their prefix length, "" comes first */
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
35 struct mail_namespace *next;
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
36
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
37 enum namespace_type type;
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
38 char sep, real_sep, sep_str[3];
5808
45735dd11f17 Moved several namespace booleans to a flags field. Removed unused
Timo Sirainen <tss@iki.fi>
parents: 5804
diff changeset
39 enum namespace_flags flags;
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
40
8467
03c418eadc8b mail_user_*() now handles home directory lookups when necessary.
Timo Sirainen <tss@iki.fi>
parents: 8465
diff changeset
41 char *prefix;
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
42 size_t prefix_len;
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
43
8500
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
44 /* If non-NULL, this points to a namespace with identical mail location
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
45 and it should be considered as the primary way to access the
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
46 mailboxes. This allows for example FTS plugin to avoid duplicating
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
47 indexes for same mailboxes when they're accessed via different
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
48 namespaces. */
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
49 struct mail_namespace *alias_for;
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
50 /* alias_for->alias_chain_next starts each chain. The chain goes
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
51 through all namespaces that have the same alias_for. */
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
52 struct mail_namespace *alias_chain_next;
3efcdc45d111 Added alias_for setting for namespaces. Fixes namespace issues with fts.
Timo Sirainen <tss@iki.fi>
parents: 8467
diff changeset
53
8467
03c418eadc8b mail_user_*() now handles home directory lookups when necessary.
Timo Sirainen <tss@iki.fi>
parents: 8465
diff changeset
54 struct mail_user *user, *owner;
5539
7d828d1b39ab Added mailbox_list to struct mail_namespace. Added a few functions to get
Timo Sirainen <tss@iki.fi>
parents: 5500
diff changeset
55 struct mailbox_list *list;
7d828d1b39ab Added mailbox_list to struct mail_namespace. Added a few functions to get
Timo Sirainen <tss@iki.fi>
parents: 5500
diff changeset
56 /* FIXME: we should support multiple storages in one namespace */
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
57 struct mail_storage *storage;
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
58 };
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
59
6236
aca5c234b71a Added hook_mail_namespaces_created.
Timo Sirainen <tss@iki.fi>
parents: 5810
diff changeset
60 /* Called after namespaces has been created */
aca5c234b71a Added hook_mail_namespaces_created.
Timo Sirainen <tss@iki.fi>
parents: 5810
diff changeset
61 extern void (*hook_mail_namespaces_created)(struct mail_namespace *namespaces);
aca5c234b71a Added hook_mail_namespaces_created.
Timo Sirainen <tss@iki.fi>
parents: 5810
diff changeset
62
8085
bf83aa9c3f4a Removed pool parameter from mail_namespaces_init*(). Use mail_user's pool intead.
Timo Sirainen <tss@iki.fi>
parents: 8082
diff changeset
63 int mail_namespaces_init(struct mail_user *user);
bf83aa9c3f4a Removed pool parameter from mail_namespaces_init*(). Use mail_user's pool intead.
Timo Sirainen <tss@iki.fi>
parents: 8082
diff changeset
64 struct mail_namespace *mail_namespaces_init_empty(struct mail_user *user);
8751
98e46e8153e4 mail-storage API: Added some function description comments.
Timo Sirainen <tss@iki.fi>
parents: 8500
diff changeset
65 /* Deinitialize all namespaces. mail_user_deinit() calls this automatically
98e46e8153e4 mail-storage API: Added some function description comments.
Timo Sirainen <tss@iki.fi>
parents: 8500
diff changeset
66 for user's namespaces. */
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
67 void mail_namespaces_deinit(struct mail_namespace **namespaces);
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
68
8446
1c13cf0f8bb5 Added mail_namespace_destroy().
Timo Sirainen <tss@iki.fi>
parents: 8291
diff changeset
69 /* Destroy a single namespace and remove it from user's namespaces list. */
1c13cf0f8bb5 Added mail_namespace_destroy().
Timo Sirainen <tss@iki.fi>
parents: 8291
diff changeset
70 void mail_namespace_destroy(struct mail_namespace *ns);
1c13cf0f8bb5 Added mail_namespace_destroy().
Timo Sirainen <tss@iki.fi>
parents: 8291
diff changeset
71
5576
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
72 /* Update hierarchy separators in given name to real_sep characters. */
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
73 const char *mail_namespace_fix_sep(struct mail_namespace *ns, const char *name);
6639
e1fde9940f7e Fixes to handling namespace prefixes and real!=virtual separator. Added a
Timo Sirainen <tss@iki.fi>
parents: 6603
diff changeset
74 /* Write virtual mailbox name to dest and return it. Separators are changed to
e1fde9940f7e Fixes to handling namespace prefixes and real!=virtual separator. Added a
Timo Sirainen <tss@iki.fi>
parents: 6603
diff changeset
75 virtual ones and namespace prefix is inserted except for INBOX. */
e1fde9940f7e Fixes to handling namespace prefixes and real!=virtual separator. Added a
Timo Sirainen <tss@iki.fi>
parents: 6603
diff changeset
76 const char *mail_namespace_get_vname(struct mail_namespace *ns, string_t *dest,
e1fde9940f7e Fixes to handling namespace prefixes and real!=virtual separator. Added a
Timo Sirainen <tss@iki.fi>
parents: 6603
diff changeset
77 const char *name);
e1fde9940f7e Fixes to handling namespace prefixes and real!=virtual separator. Added a
Timo Sirainen <tss@iki.fi>
parents: 6603
diff changeset
78
5802
8416f66ac5ab Make sure all listable namespaces use the same separator. If there's no ref
Timo Sirainen <tss@iki.fi>
parents: 5800
diff changeset
79 /* Returns the hierarchy separator for mailboxes that are listed at root. */
7912
81806d402514 Added more consts, ATTR_CONSTs and ATTR_PUREs.
Timo Sirainen <tss@iki.fi>
parents: 6978
diff changeset
80 char mail_namespace_get_root_sep(const struct mail_namespace *namespaces)
81806d402514 Added more consts, ATTR_CONSTs and ATTR_PUREs.
Timo Sirainen <tss@iki.fi>
parents: 6978
diff changeset
81 ATTR_PURE;
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
82
5576
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
83 /* Returns namespace based on the mailbox name's prefix. Updates mailbox to
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
84 be a valid name inside the namespace (prefix is skipped, hierarchy separator
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
85 is changed to real_sep). If no namespaces were found, returns NULL. */
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
86 struct mail_namespace *
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
87 mail_namespace_find(struct mail_namespace *namespaces, const char **mailbox);
5576
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
88 /* Like above, but ignore hidden namespaces. */
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
89 struct mail_namespace *
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
90 mail_namespace_find_visible(struct mail_namespace *namespaces,
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
91 const char **mailbox);
6603
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
92 /* Like above, but find only from namespaces with subscriptions flag set. */
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
93 struct mail_namespace *
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
94 mail_namespace_find_subscribable(struct mail_namespace *namespaces,
afc28dd2d4c5 Added subscriptions setting to namespaces to specify if it should handle
Timo Sirainen <tss@iki.fi>
parents: 6459
diff changeset
95 const char **mailbox);
8291
4296aa3fbb75 Subscription handling fixes for subscriptions=no namespaces and shared mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8085
diff changeset
96 /* Like above, but find only from namespaces with subscriptions flag not set. */
4296aa3fbb75 Subscription handling fixes for subscriptions=no namespaces and shared mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8085
diff changeset
97 struct mail_namespace *
4296aa3fbb75 Subscription handling fixes for subscriptions=no namespaces and shared mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8085
diff changeset
98 mail_namespace_find_unsubscribable(struct mail_namespace *namespaces,
4296aa3fbb75 Subscription handling fixes for subscriptions=no namespaces and shared mailboxes.
Timo Sirainen <tss@iki.fi>
parents: 8085
diff changeset
99 const char **mailbox);
5810
f56a71347378 Added mail_namespace_find_inbox() and mail_namespace_find_prefix_nosep()
Timo Sirainen <tss@iki.fi>
parents: 5808
diff changeset
100 /* Returns the INBOX namespace */
f56a71347378 Added mail_namespace_find_inbox() and mail_namespace_find_prefix_nosep()
Timo Sirainen <tss@iki.fi>
parents: 5808
diff changeset
101 struct mail_namespace *
f56a71347378 Added mail_namespace_find_inbox() and mail_namespace_find_prefix_nosep()
Timo Sirainen <tss@iki.fi>
parents: 5808
diff changeset
102 mail_namespace_find_inbox(struct mail_namespace *namespaces);
5576
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
103 /* Returns TRUE if the given namespace matches the mailbox's prefix.
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
104 Updates mailbox name to be a valid name inside the namespace. */
7912
81806d402514 Added more consts, ATTR_CONSTs and ATTR_PUREs.
Timo Sirainen <tss@iki.fi>
parents: 6978
diff changeset
105 bool mail_namespace_update_name(const struct mail_namespace *ns,
5576
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
106 const char **mailbox);
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
107
36ebd0fe2076 Added mail_namespace_update_name()
Timo Sirainen <tss@iki.fi>
parents: 5539
diff changeset
108 /* Find a namespace with given prefix. */
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
109 struct mail_namespace *
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
110 mail_namespace_find_prefix(struct mail_namespace *namespaces,
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
111 const char *prefix);
5810
f56a71347378 Added mail_namespace_find_inbox() and mail_namespace_find_prefix_nosep()
Timo Sirainen <tss@iki.fi>
parents: 5808
diff changeset
112 /* Like _find_prefix(), but ignore trailing separator */
f56a71347378 Added mail_namespace_find_inbox() and mail_namespace_find_prefix_nosep()
Timo Sirainen <tss@iki.fi>
parents: 5808
diff changeset
113 struct mail_namespace *
f56a71347378 Added mail_namespace_find_inbox() and mail_namespace_find_prefix_nosep()
Timo Sirainen <tss@iki.fi>
parents: 5808
diff changeset
114 mail_namespace_find_prefix_nosep(struct mail_namespace *namespaces,
f56a71347378 Added mail_namespace_find_inbox() and mail_namespace_find_prefix_nosep()
Timo Sirainen <tss@iki.fi>
parents: 5808
diff changeset
115 const char *prefix);
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
116
6978
4fb1b0f43d60 mail_storage_create() now finishes namespace initialization so namespaces
Timo Sirainen <tss@iki.fi>
parents: 6639
diff changeset
117 /* Called internally by mail_storage_create(). */
4fb1b0f43d60 mail_storage_create() now finishes namespace initialization so namespaces
Timo Sirainen <tss@iki.fi>
parents: 6639
diff changeset
118 void mail_namespace_init_storage(struct mail_namespace *ns);
4fb1b0f43d60 mail_storage_create() now finishes namespace initialization so namespaces
Timo Sirainen <tss@iki.fi>
parents: 6639
diff changeset
119
5500
4862cb37106c Moved namespace handling to lib-storage. Beginnings of namespace support for
Timo Sirainen <tss@iki.fi>
parents:
diff changeset
120 #endif