#ifndef OBERON_H #define OBERON_H typedef struct oberon_type_t oberon_type_t; typedef struct oberon_module_t oberon_module_t; typedef struct oberon_context_t oberon_context_t; typedef const char * (*ModuleImportCallback)(const char * name); extern oberon_context_t * oberon_create_context(ModuleImportCallback import_module); extern void oberon_destroy_context(oberon_context_t * ctx); extern oberon_module_t * oberon_compile_module(oberon_context_t * ctx, const char * code); extern void oberon_generate_code(oberon_context_t * ctx); extern void oberon_generator_dump(oberon_context_t * ctx, char * path); extern void * oberon_generator_get_procedure(oberon_context_t * ctx, const char * name); extern void * oberon_generator_get_var(oberon_context_t * ctx, const char * name); #endif // OBERON_H