2 * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
4 * This file is part of libFirm.
6 * This file may be distributed and/or modified under the terms of the
7 * GNU General Public License version 2 as published by the Free Software
8 * Foundation and appearing in the file LICENSE.GPL included in the
9 * packaging of this file.
11 * Licensees holding valid libFirm Professional Edition licenses may use
12 * this file in accordance with the libFirm Commercial License.
13 * Agreement provided with the Software.
15 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * @brief Backend module interface.
23 * @author Matthias Braun
26 #ifndef FIRM_BE_BEMODULE_H
27 #define FIRM_BE_BEMODULE_H
30 * Mark a function as module constructor.
31 * Currently you have to add modules manually in the list in bemodule.c.
32 * However future extensions might allow them to be automatically discovered
33 * when they are marked with BE_REGISTER_MODULE_CONSTRUCTOR
35 * Add this before your constructor as it will declare the function
37 #define BE_REGISTER_MODULE_CONSTRUCTOR(func) void func(void);
40 * Mark a function as module destructor.
42 * Add this before your constructor as it will declare the function
44 #define BE_REGISTER_MODULE_DESTRUCTOR(func) void func(void);
47 * Call all module constructors
49 void be_init_modules(void);
52 * Call all module destructors
54 void be_quit_modules(void);
56 //---------------------------------------------------------------------------
60 typedef struct be_module_list_entry_t be_module_list_entry_t;
62 void be_add_module_to_list(be_module_list_entry_t **list_head, const char *name,
65 void be_add_module_list_opt(lc_opt_entry_t *grp, const char *name,
66 const char *description,
67 be_module_list_entry_t * const * first,
70 #endif /* FIRM_BE_BEMODULE_H */