Extended public backend API.
[libfirm] / include / libfirm / irio.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   Input/Output textual representation of firm.
23  * @author  Moritz Kroll
24  */
25 #ifndef FIRM_IR_IRIO_H
26 #define FIRM_IR_IRIO_H
27
28 #include <stdio.h>
29
30 #include "firm_types.h"
31 #include "begin.h"
32
33 /**
34  * @defgroup irio Input and Output
35  * @note The file format is not considered stable yet. So expect
36  *       incompatibilities between file formats of different libfirm versions.
37  * @{
38  */
39
40 /**
41  * Exports the whole irp to the given file in a textual form.
42  * Exports all types, all ir graphs, and the constant graph.
43  *
44  * @param filename  the name of the resulting file
45  * @return  0 if no errors occured, other values in case of errors
46  */
47 FIRM_API int ir_export(const char *filename);
48
49 /**
50  * same as ir_export but writes to a FILE*
51  * @note As with any FILE* errors are indicated by ferror(output)
52  */
53 FIRM_API void ir_export_file(FILE *output);
54
55 /**
56  * Imports the data stored in the given file.
57  * Imports any type graphs and ir graphs contained in the file.
58  *
59  * @param filename  the name of the file
60  * @returns 0 if no errors occured, other values in case of errors
61  */
62 FIRM_API int ir_import(const char *filename);
63
64 /**
65  * same as ir_import but imports from a FILE*
66  */
67 FIRM_API int ir_import_file(FILE *input, const char *inputname);
68
69 /** @} */
70
71 #include "end.h"
72
73 #endif