00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef YASM_MODULE_H
00028 #define YASM_MODULE_H
00029
00030 #ifndef YASM_LIB_DECL
00031 #define YASM_LIB_DECL
00032 #endif
00033
00034 typedef enum yasm_module_type {
00035 YASM_MODULE_ARCH = 0,
00036 YASM_MODULE_DBGFMT,
00037 YASM_MODULE_OBJFMT,
00038 YASM_MODULE_LISTFMT,
00039 YASM_MODULE_PARSER,
00040 YASM_MODULE_PREPROC
00041 } yasm_module_type;
00042
00043 YASM_LIB_DECL
00044 void *yasm_load_module
00045 (yasm_module_type type, const char *keyword);
00046
00047 #define yasm_load_arch(keyword) \
00048 yasm_load_module(YASM_MODULE_ARCH, keyword)
00049 #define yasm_load_dbgfmt(keyword) \
00050 yasm_load_module(YASM_MODULE_DBGFMT, keyword)
00051 #define yasm_load_objfmt(keyword) \
00052 yasm_load_module(YASM_MODULE_OBJFMT, keyword)
00053 #define yasm_load_listfmt(keyword) \
00054 yasm_load_module(YASM_MODULE_LISTFMT, keyword)
00055 #define yasm_load_parser(keyword) \
00056 yasm_load_module(YASM_MODULE_PARSER, keyword)
00057 #define yasm_load_preproc(keyword) \
00058 yasm_load_module(YASM_MODULE_PREPROC, keyword)
00059
00060 YASM_LIB_DECL
00061 void yasm_list_modules
00062 (yasm_module_type type,
00063 void (*printfunc) (const char *name, const char *keyword));
00064
00065 #define yasm_list_arch(func) \
00066 yasm_list_modules(YASM_MODULE_ARCH, func)
00067 #define yasm_list_dbgfmt(func) \
00068 yasm_list_modules(YASM_MODULE_DBGFMT, func)
00069 #define yasm_list_objfmt(func) \
00070 yasm_list_modules(YASM_MODULE_OBJFMT, func)
00071 #define yasm_list_listfmt(func) \
00072 yasm_list_modules(YASM_MODULE_LISTFMT, func)
00073 #define yasm_list_parser(func) \
00074 yasm_list_modules(YASM_MODULE_PARSER, func)
00075 #define yasm_list_preproc(func) \
00076 yasm_list_modules(YASM_MODULE_PREPROC, func)
00077
00078 YASM_LIB_DECL
00079 void yasm_register_module(yasm_module_type type, const char *keyword,
00080 void *data);
00081
00082 #endif