1 /*
2  *
3  *  GeanyGenDoc, a Geany plugin to ease generation of source code documentation
4  *  Copyright (C) 2010-2011  Colomban Wendling <ban@herbesfolles.org>
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 #ifndef H_GGD_UTILS
22 #define H_GGD_UTILS
23 
24 #include <glib.h>
25 #include <geanyplugin.h> /* Geany's utils for some wrappers */
26 
27 #include "ggd-macros.h"
28 
29 G_BEGIN_DECLS
30 GGD_BEGIN_PLUGIN_API
31 
32 
33 /**
34  * GgdPerms:
35  * @GGD_PERM_R: Read permission
36  * @GGD_PERM_W: Write permission
37  * @GGD_PERM_RW: Both read and write permissions
38  * @GGD_PERM_NOCREAT: Don't create new files
39  *
40  * Flags representing permissions.
41  */
42 enum _GgdPerms {
43   GGD_PERM_R        = 1 << 0,
44   GGD_PERM_W        = 1 << 1,
45   GGD_PERM_RW       = GGD_PERM_R | GGD_PERM_W,
46   /* a bit ugly, it isn't a permission */
47   GGD_PERM_NOCREAT  = 1 << 2
48 };
49 
50 typedef enum _GgdPerms GgdPerms;
51 
52 gchar          *ggd_get_config_file             (const gchar *name,
53                                                  const gchar *section,
54                                                  GgdPerms     perms_req,
55                                                  GError     **error);
56 
57 /**
58  * GGD_PTR_ARRAY_FOR:
59  * @ptr_array: A #GPtrArray
60  * @idx: A guint variable to use as the index of the current element in the
61  *       array
62  * @item: A pointer to set to the array's current element
63  *
64  * <code>for</code> header to iterate over a #GPtrArray.
65  */
66 #define GGD_PTR_ARRAY_FOR(ptr_array, idx, item) \
67   foreach_ptr_array ((item), (idx), (ptr_array))
68 
69 
70 GGD_END_PLUGIN_API
71 G_END_DECLS
72 
73 #endif /* guard */
74