• Main Page
  • Classes
  • Files
  • File List
  • File Members

statement.h

Go to the documentation of this file.
00001 
00002    /*+------- <| --------------------------------------------------------**
00003     **         A                  Clan/Scop                              **
00004     **---     /.\   -----------------------------------------------------**
00005     **   <|  [""M#                statement.h                            **
00006     **-   A   | #   -----------------------------------------------------**
00007     **   /.\ [""M#         First version: 30/04/2008                     **
00008     **- [""M# | #  U"U#U  -----------------------------------------------**
00009          | #  | #  \ .:/
00010          | #  | #___| #
00011  ******  | "--'     .-"  ******************************************************
00012  *     |"-"-"-"-"-#-#-##   Clan : the Chunky Loop Analyzer (experimental)     *
00013  ****  |     # ## ######  *****************************************************
00014  *      \       .::::'/                                                       *
00015  *       \      ::::'/     Copyright (C) 2008 Cedric Bastoul                  *
00016  *     :8a|    # # ##                                                         *
00017  *     ::88a      ###      This is free software; you can redistribute it     *
00018  *    ::::888a  8a ##::.   and/or modify it under the terms of the GNU Lesser *
00019  *  ::::::::888a88a[]:::   General Public License as published by the Free    *
00020  *::8:::::::::SUNDOGa8a::. Software Foundation, either version 2.1 of the     *
00021  *::::::::8::::888:Y8888:: License, or (at your option) any later version.    *
00022  *::::':::88::::888::Y88a::::::::::::...                                      *
00023  *::'::..    .   .....   ..   ...  .                                          *
00024  * This software is distributed in the hope that it will be useful, but       *
00025  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY *
00026  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License   *
00027  * for more details.                                                          *
00028  *                                                                            *
00029  * You should have received a copy of the GNU Lesser General Public License   *
00030  * along with software; if not, write to the Free Software Foundation, Inc.,  *
00031  * 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                     *
00032  *                                                                            *
00033  * Clan, the Chunky Loop Analyzer                                             *
00034  * Written by Cedric Bastoul, Cedric.Bastoul@inria.fr                         *
00035  *                                                                            *
00036  ******************************************************************************/
00037 
00038 
00039 #ifndef SCOPLIB_STATEMENT_H
00040 # define SCOPLIB_STATEMENT_H
00041 
00042 # include <stdio.h>
00043 # include <scoplib/macros.h>
00044 # include <scoplib/matrix.h>
00045 
00046 # if defined(__cplusplus)
00047 extern "C"
00048   {
00049 # endif
00050 
00051 
00056 struct scoplib_statement
00057 {
00058   scoplib_matrix_list_p domain;   
00059   scoplib_matrix_p schedule;      
00060   scoplib_matrix_p read;          
00061   scoplib_matrix_p write;         
00062   int nb_iterators;               
00063   char ** iterators;              
00064   char * body;                    
00069   int nb_exit_predicates;
00070   char ** exit_predicates;      
00072   int nb_control_predicates;
00073   char ** control_predicates;   
00077   struct scoplib_statement * next;
00078 };
00079 typedef struct scoplib_statement   scoplib_statement_t;
00080 typedef struct scoplib_statement * scoplib_statement_p;
00081 
00082 
00083 /*+****************************************************************************
00084  *                          Structure display function                        *
00085  ******************************************************************************/
00086 void             scoplib_statement_print_structure(FILE *, scoplib_statement_p,
00087                                                    int);
00088 void             scoplib_statement_print(FILE *, scoplib_statement_p);
00089 void             scoplib_statement_print_dot_scop(FILE *, scoplib_statement_p,
00090                                                   int, char **, int, char **);
00091 
00092 
00093 /******************************************************************************
00094  *                               Reading function                             *
00095  ******************************************************************************/
00096 scoplib_statement_p scoplib_statement_read (FILE*, int, char***, int*);
00097 
00098 
00099 /*+****************************************************************************
00100  *                    Memory allocation/deallocation function                 *
00101  ******************************************************************************/
00102 scoplib_statement_p scoplib_statement_malloc();
00103 void                scoplib_statement_free(scoplib_statement_p);
00104 void                scoplib_statement_shallow_free(scoplib_statement_p);
00105 
00106 
00107 /*+****************************************************************************
00108  *                            Processing functions                            *
00109  ******************************************************************************/
00110 void             scoplib_statement_add(scoplib_statement_p *, scoplib_statement_p);
00111 void             scoplib_statement_compact(scoplib_statement_p, int);
00112 int              scoplib_statement_number(scoplib_statement_p);
00113 
00114 
00115 # if defined(__cplusplus)
00116   }
00117 # endif
00118 #endif /* define SCOPLIB_STATEMENT_H */

Generated on Tue Feb 19 2013 00:44:27 for ScopLib by  doxygen 1.7.1