Bastoul branch to OpenScop
[openscop.git] / include / scoplib / scop.h.in
blob24fb6d2b1d94ea4818cb7d7ab0441fca65ed8e82
2 /*+------- <| --------------------------------------------------------**
3 ** A Clan/Scop **
4 **--- /.\ -----------------------------------------------------**
5 ** <| [""M# scop.h **
6 **- A | # -----------------------------------------------------**
7 ** /.\ [""M# First version: 30/04/2008 **
8 **- [""M# | # U"U#U -----------------------------------------------**
9 | # | # \ .:/
10 | # | #___| #
11 ****** | "--' .-" ******************************************************
12 * |"-"-"-"-"-#-#-## Clan : the Chunky Loop Analyzer (experimental) *
13 **** | # ## ###### *****************************************************
14 * \ .::::'/ *
15 * \ ::::'/ Copyright (C) 2008 Cedric Bastoul *
16 * :8a| # # ## *
17 * ::88a ### This is free software; you can redistribute it *
18 * ::::888a 8a ##::. and/or modify it under the terms of the GNU Lesser *
19 * ::::::::888a88a[]::: General Public License as published by the Free *
20 *::8:::::::::SUNDOGa8a::. Software Foundation, either version 2.1 of the *
21 *::::::::8::::888:Y8888:: License, or (at your option) any later version. *
22 *::::':::88::::888::Y88a::::::::::::... *
23 *::'::.. . ..... .. ... . *
24 * This software is distributed in the hope that it will be useful, but *
25 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
26 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License *
27 * for more details. *
28 * *
29 * You should have received a copy of the GNU Lesser General Public License *
30 * along with software; if not, write to the Free Software Foundation, Inc., *
31 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
32 * *
33 * Clan, the Chunky Loop Analyzer *
34 * Written by Cedric Bastoul, Cedric.Bastoul@inria.fr *
35 * *
36 ******************************************************************************/
39 /*+****************************************************************************
40 * THIS FILE HAS BEEN AUTOMATICALLY GENERATED FROM scop.h.in BY configure *
41 ******************************************************************************/
44 #ifndef SCOPLIB_SCOP_H
45 # define SCOPLIB_SCOP_H
47 # include <unistd.h>
49 # define SCOPLIB_RELEASE "@PACKAGE_VERSION@"
50 # define SCOPLIB_VERSION "@BITS@"
51 # ifndef @SCOPLIB_INT_T@
52 # define @SCOPLIB_INT_T@
53 # endif
55 # include <scoplib/macros.h>
56 # include <scoplib/matrix.h>
57 # include <scoplib/statement.h>
58 # include <scoplib/vector.h>
61 # if defined(__cplusplus)
62 extern "C"
64 # endif
67 /**
68 * The scop_t structure stores the useful informations of a static
69 * control part of a program to process it within a polyhedral framework.
71 struct scoplib_scop
73 scoplib_matrix_p context; /**< Constraints on the SCoP parameters */
74 int nb_parameters; /**< Number of parameters for the SCoP */
75 char ** parameters; /**< Array of (nb_parameters) parameter names */
76 int nb_arrays; /**< Number of arrays accessed in the SCoP */
77 char ** arrays; /**< Array of (nb_arrays) array names */
78 scoplib_statement_p statement;/**< Statement list of the SCoP */
79 char* optiontags; /**< The content (as a 0 terminated
80 string) of the optional tags. */
81 void* usr; /**< A user-defined field, not touched
82 by scop. */
84 typedef struct scoplib_scop scoplib_scop_t;
85 typedef struct scoplib_scop * scoplib_scop_p;
88 /*+****************************************************************************
89 * Structure display function *
90 ******************************************************************************/
91 void scoplib_scop_print_structure(FILE *, scoplib_scop_p, int);
92 void scoplib_scop_print(FILE *, scoplib_scop_p);
93 void scoplib_scop_print_dot_scop(FILE *, scoplib_scop_p);
94 void scoplib_scop_print_dot_scop_options(FILE * file, scoplib_scop_p scop,
95 int options);
98 /******************************************************************************
99 * Reading function *
100 ******************************************************************************/
101 scoplib_scop_p scoplib_scop_read(FILE *);
102 char* scoplib_scop_tag_content(scoplib_scop_p, char*, char*);
103 char* scoplib_scop_tag_content_from_string(char*, char*, char*);
106 /*+****************************************************************************
107 * Memory allocation/deallocation function *
108 ******************************************************************************/
109 scoplib_scop_p scoplib_scop_malloc();
110 void scoplib_scop_free(scoplib_scop_p);
111 scoplib_scop_p scoplib_scop_dup(scoplib_scop_p);
115 # if defined(__cplusplus)
117 # endif
119 #endif /* define SCOPLIB_SCOP_H */