+#include "firm_types.h"
+#include "begin.h"
+
+/**
+ * libFirm initialization parameters.
+ * @deprecated
+ */
+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.
+ * @deprecated call firm_init_stat(options) instead
+ */
+ 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.
+ * @deprecated call ir_set_uninitialized_local_variable_func() instead
+ */
+ 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;
+
+ /**
+ * dummy parameter
+ * (this used to hold an identifier module structure)
+ */
+ void *id_if;
+
+ /**
+ * dummy parameter
+ * (this used to hold a default calling convention, but this concept is no
+ * more. You should always set the calling convention manually after
+ * creating the method entity if you need something else)
+ */
+ unsigned cc_mask;
+
+ /**
+ * dummy (here was dbg_info *builtin_dbg before)
+ */
+ void *dummy;
+};
+
+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 should be NULL (you can pass a structure containing
+ * initial parameters but this is deprecated)
+ */
+FIRM_API void ir_init(const firm_parameter_t *params);
+
+/**
+ * Frees all memory occupied by the firm library.
+ */
+FIRM_API void ir_finish(void);
+
+/** returns the libFirm major version number */
+FIRM_API unsigned ir_get_version_major(void);
+/** returns libFirm minor version number */
+FIRM_API unsigned ir_get_version_minor(void);
+/** returns string describing libFirm revision */
+FIRM_API const char *ir_get_version_revision(void);
+/** returns string describing libFirm build */
+FIRM_API const char *ir_get_version_build(void);
+
+
+
+/**
+ * a list of firm kinds
+ * Most important datastructures in firm contain a firm_kind field at the
+ * beginning so given void* pointer you can usually still guess the kind
+ * of thing the pointer points to.
+ * This is used in debug helper functions and printers.
+ */