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
27 #ifndef FIRM_BE_BEMODULE_H
28 #define FIRM_BE_BEMODULE_H
31 * Mark a function as module constructor.
32 * Currently you have to add modules manually in the list in bemodule.c.
33 * However future extensions might allow them to be automatically discovered
34 * when they are marked with BE_REGISTER_MODULE_CONSTRUCTOR
36 #define BE_REGISTER_MODULE_CONSTRUCTOR(func)
39 * Mark a function as module destructor.
41 #define BE_REGISTER_MODULE_DESTRUCTOR(func)
44 * Call all module constructors
46 void be_init_modules(void);
49 * Call all module destructors
51 void be_quit_modules(void);
53 //---------------------------------------------------------------------------
55 #include <libcore/lc_opts.h>
57 typedef struct be_module_list_entry_t be_module_list_entry_t;
59 void be_add_module_to_list(be_module_list_entry_t **list_head, const char *name,
62 void be_add_module_list_opt(lc_opt_entry_t *grp, const char *name,
63 const char *description,
64 be_module_list_entry_t * const * first,
67 #endif /* FIRM_BE_BEMODULE_H */