Add support for storing network specific path value
[connman] / include / plugin.h
1 /*
2  *
3  *  Connection Manager
4  *
5  *  Copyright (C) 2007-2008  Intel Corporation. All rights reserved.
6  *
7  *  This program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License version 2 as
9  *  published by the Free Software Foundation.
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, write to the Free Software
18  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
19  *
20  */
21
22 #ifndef __CONNMAN_PLUGIN_H
23 #define __CONNMAN_PLUGIN_H
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28
29 #ifndef CONNMAN_API_SUBJECT_TO_CHANGE
30 #error "Please define CONNMAN_API_SUBJECT_TO_CHANGE to acknowledge your \
31 understanding that ConnMan hasn't reached a stable API."
32 #endif
33
34 /**
35  * SECTION:plugin
36  * @title: Plugin premitives
37  * @short_description: Functions for declaring plugins
38  */
39
40 struct connman_plugin_desc {
41         const char *name;
42         const char *description;
43         const char *version;
44         int (*init) (void);
45         void (*exit) (void);
46 };
47
48 /**
49  * CONNMAN_PLUGIN_DEFINE:
50  * @name: plugin name
51  * @description: plugin description
52  * @version: plugin version string
53  * @init: init function called on plugin loading
54  * @exit: exit function called on plugin removal
55  *
56  * Macro for defining a plugin descriptor
57  *
58  * |[
59  * #include <connman/plugin.h>
60  *
61  * static int example_init(void)
62  * {
63  *      return 0;
64  * }
65  *
66  * static void example_exit(void)
67  * {
68  * }
69  *
70  * CONNMAN_PLUGIN_DEFINE(example, "Example plugin", VERSION,
71  *                                      example_init, example_exit)
72  * ]|
73  */
74 #define CONNMAN_PLUGIN_DEFINE(name, description, version, init, exit) \
75                 struct connman_plugin_desc connman_plugin_desc = { \
76                         #name, description, version, init, exit \
77                 };
78
79 #ifdef __cplusplus
80 }
81 #endif
82
83 #endif /* __CONNMAN_PLUGIN_H */