X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Ffirm_common.h;h=db88412719aa4ebce93ffdc824547145fda79b49;hb=3646e58f46f85a17537e89483d6b0c279df4a4d2;hp=48fd85218c96f3b5cfc022e3a51a43d56cb1dd74;hpb=1ec30d95387eb392ba5a1adc7958ebd91383d59c;p=libfirm diff --git a/include/libfirm/firm_common.h b/include/libfirm/firm_common.h index 48fd85218..db8841271 100644 --- a/include/libfirm/firm_common.h +++ b/include/libfirm/firm_common.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -26,6 +26,88 @@ #ifndef FIRM_COMMON_FIRM_COMMON_H #define FIRM_COMMON_FIRM_COMMON_H +#include "firm_types.h" + +/** + * libFirm initialization parameters. + */ +struct _firm_parameter_t { + /** + * The size of this structure. init_firm() will only initialize + * this amount of data. This allows to add more fields to this structure + * without breaking compatibility to older source. + */ + unsigned int size; + + /** + * Statistic options. If statistic function where enabled, these + * flags configure it, see enum firmstat_options_t. + */ + unsigned enable_statistics; + + /** + * This function is called, whenever a local variable is + * used before definition. The function should insert a default value, + * and/or raise a compiler error/warning. Note that returning + * an Unknown is allowed here. + */ + uninitialized_local_variable_func_t *initialize_local_func; + + /** + * The interface functions for the type identification module. + * If not set, the default implementation with compare_strict() and + * firm_hash_name() will be used. + */ + type_identify_if_t *ti_if; + + /** + * The interface for the ident module. + * If not set, the default libFirm ident module (using hash sets). + */ + ident_if_t *id_if; + + /** + * The default calling convention. + */ + unsigned cc_mask; + + /** + * The debug info that should be used for "builtin" objects. + */ + dbg_info *builtin_dbg; +}; + +typedef struct _firm_parameter_t firm_parameter_t; + +/** + * Initialize the firm library. + * + * Initializes the firm library. Allocates default data structures. + * Initializes configurable behavior of the library. + * + * @param params A structure containing the parameters of the libFirm. + * + * The parameter struct may be NULL. In that case, the original FIRM behavior + * is conserved. + */ +void ir_init(const firm_parameter_t *params); + +/** + * Frees all memory occupied by the firm library. + */ +void ir_finish(void); + +/** returns the libFirm major version number */ +unsigned ir_get_version_major(void); +/** returns libFirm minor version number */ +unsigned ir_get_version_minor(void); +/** returns string describing libFirm revision */ +const char *ir_get_version_revision(void); +/** returns string describing libFirm build */ +const char *ir_get_version_build(void); + + + /** a list of firm kinds @@@ not all datatypes are tagged yet. */ typedef enum { @@ -42,6 +124,10 @@ typedef enum { k_ir_extblk, /**< An extended basic block. */ k_ir_prog, /**< A program representation (irp). */ k_ir_region, /**< A region. */ + k_ir_graph_pass, /**< An ir_graph pass. */ + k_ir_prog_pass, /**< An ir_prog pass. */ + k_ir_graph_pass_mgr, /**< An ir_graph pass manager. */ + k_ir_prog_pass_mgr, /**< An ir_prog pass manager. */ k_ir_max /**< maximum value -- illegal for firm nodes. */ } firm_kind;