Clean code
[irreco.git] / irreco / src / core / irreco_backend_manager.h
blob1cad52bcdf929f16e432241db09795df7faaa049
1 /*
2 * irreco - Ir Remote Control
3 * Copyright (C) 2007 Arto Karppinen (arto.karppinen@iki.fi)
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 /**
21 * @addtogroup IrrecoBackendManager
22 * @{
25 /**
26 * @file
27 * Header file of @ref IrrecoBackendManager.
30 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
31 /* Typedef */
32 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
34 * Make sure that typedefs are available before we include anything elese.
36 * This makes sure that whatever other structures that depend on structures
37 * defined in this file will compile OK recardles of header inclusion order.
39 #ifndef __IRRECO_BACKEND_MANAGER_H_TYPEDEF__
40 #define __IRRECO_BACKEND_MANAGER_H_TYPEDEF__
41 typedef struct _IrrecoBackendManager IrrecoBackendManager;
42 #endif /* __IRRECO_BACKEND_MANAGER_H_TYPEDEF__ */
46 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
47 /* Include */
48 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
49 #ifndef __IRRECO_BACKEND_MANAGER_H__
50 #define __IRRECO_BACKEND_MANAGER_H__
51 #include "irreco.h"
52 #include <irreco_string_table.h>
53 #include "irreco_backend_instance.h"
54 #include "irreco_backend_lib.h"
58 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
59 /* Datatypes */
60 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
61 struct _IrrecoBackendManager {
62 IrrecoData *irreco_data;
64 /* Contains all layouts. */
65 /* - Key is libarary filename. */
66 IrrecoStringTable *lib_table;
68 /* Contains all layouts. */
69 /* - Key is instance name. */
70 IrrecoStringTable *instance_table;
72 /* Maps config files to instances. */
73 /* - Key is configuration filename of the instance. */
74 IrrecoStringTable *config_map;
79 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
80 /* Macro */
81 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
82 #define IRRECO_BACKEND_MANAGER_FOREACH_LIB(_manager, _lib_var_name) \
83 IRRECO_STRING_TABLE_FOREACH_DATA( \
84 (_manager)->lib_table, IrrecoBackendLib *, (_lib_var_name))
86 #define IRRECO_BACKEND_MANAGER_FOREACH_INSTANCE(_manager, _inst_var_name) \
87 IRRECO_STRING_TABLE_FOREACH_DATA( \
88 (_manager)->instance_table, IrrecoBackendInstance *, \
89 (_inst_var_name))
91 #define IRRECO_BACKEND_MANAGER_FOREACH_END IRRECO_STRING_TABLE_FOREACH_END
95 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
96 /* Prototypes */
97 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/
98 IrrecoBackendManager* irreco_backend_manager_create();
99 void irreco_backend_manager_destroy(IrrecoBackendManager * manager);
100 void irreco_backend_manager_get_devcmd_lists(IrrecoBackendManager * manager);
101 void irreco_backend_manager_read_from_confs(IrrecoBackendManager * manager);
102 void irreco_backend_manager_print(IrrecoBackendManager * manager);
104 IrrecoBackendLib *
105 irreco_backend_manager_load_lib(IrrecoBackendManager * manager,
106 const gchar * filepath);
107 IrrecoBackendLib *
108 irreco_backend_manager_load_with_name(IrrecoBackendManager * manager,
109 const gchar * filepath,
110 const gchar * filename);
111 gboolean
112 irreco_backend_manager_load_lib_dir(IrrecoBackendManager * manager,
113 gchar * directory);
114 gboolean irreco_backend_manager_find_lib(IrrecoBackendManager * manager,
115 const gchar * filename,
116 IrrecoBackendLib ** lib);
118 IrrecoBackendInstance *
119 irreco_backend_manager_create_instance(IrrecoBackendManager * manager,
120 IrrecoBackendLib * lib,
121 const gchar * name,
122 const gchar * config);
123 gboolean
124 irreco_backend_manager_destroy_instance(IrrecoBackendManager * manager,
125 IrrecoBackendInstance * instance);
126 gboolean irreco_backend_manager_find_instance(
127 IrrecoBackendManager * manager,
128 const gchar * name,
129 IrrecoBackendInstance ** instance);
130 gboolean
131 irreco_backend_manager_set_instance_name(IrrecoBackendManager * manager,
132 IrrecoBackendInstance * instance,
133 const gchar * name);
134 void
135 irreco_backend_manager_assign_instance_name(IrrecoBackendManager * manager,
136 IrrecoBackendInstance * instance);
137 gboolean
138 irreco_backend_manager_set_instance_config(IrrecoBackendManager * manager,
139 IrrecoBackendInstance * instance,
140 const gchar * filename);
141 void
142 irreco_backend_manager_assign_instance_config(IrrecoBackendManager * manager,
143 IrrecoBackendInstance * instance);
145 #endif /* __IRRECO_BACKEND_MANAGER_H__ */
147 /** @} */