irgmod: Pass the new inputs to turn_into_tuple() instead of initialising them with...
[libfirm] / include / libfirm / firm_common.h
1 /*
2  * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
3  *
4  * This file is part of libFirm.
5  *
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.
10  *
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.
14  *
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
17  * PURPOSE.
18  */
19
20 /**
21  * @file
22  * @brief    common firm declarations
23  * @author   Martin Trapp, Christian Schaefer, Goetz Lindenmaier
24  */
25 #ifndef FIRM_COMMON_FIRM_COMMON_H
26 #define FIRM_COMMON_FIRM_COMMON_H
27
28 #include "firm_types.h"
29 #include "begin.h"
30
31 /**
32  * @defgroup initalization  Library Initialization
33  * The functions in this section deal with initialization and deinitalization
34  * of the libFirm library.
35  * @{
36  */
37
38 /**
39  * Initializes the firm library.  Allocates default data structures.
40  */
41 FIRM_API void ir_init(void);
42
43 /**
44  * Frees all memory occupied by the firm library.
45  */
46 FIRM_API void ir_finish(void);
47
48 /** returns the libFirm major version number */
49 FIRM_API unsigned ir_get_version_major(void);
50 /** returns libFirm minor version number */
51 FIRM_API unsigned ir_get_version_minor(void);
52 /** returns string describing libFirm revision */
53 FIRM_API const char *ir_get_version_revision(void);
54 /** returns string describing libFirm build */
55 FIRM_API const char *ir_get_version_build(void);
56
57 /**
58  * A list of firm kinds.
59  * Most important datastructures in firm contain a firm_kind field at the
60  * beginning so given void* pointer you can usually still guess the kind
61  * of thing the pointer points to.
62  * This is used in debug helper functions and printers.
63  */
64 typedef enum firm_kind {
65         k_BAD = 0,                /**< An invalid firm node. */
66         k_entity,                 /**< An entity. */
67         k_type,                   /**< A type. */
68         k_ir_graph,               /**< An IR graph. */
69         k_ir_node,                /**< An IR node. */
70         k_ir_mode,                /**< An IR mode. */
71         k_ir_op,                  /**< An IR opcode. */
72         k_tarval,                 /**< A tarval. */
73         k_ir_loop,                /**< A loop. */
74         k_ir_prog,                /**< A program representation (irp). */
75         k_ir_graph_pass,          /**< An ir_graph pass. */
76         k_ir_prog_pass,           /**< An ir_prog pass. */
77         k_ir_graph_pass_mgr,      /**< An ir_graph pass manager. */
78         k_ir_prog_pass_mgr,       /**< An ir_prog pass manager. */
79         k_ir_max                  /**< maximum value -- illegal for firm nodes. */
80 } firm_kind;
81
82 /**
83  * Returns the kind of a thing.
84  *
85  * @param firm_thing  pointer representing a firm object
86  */
87 FIRM_API firm_kind get_kind(const void *firm_thing);
88
89 /** @} */
90
91 #include "end.h"
92
93 #endif