PoCC  Version 1.0
options.h
Go to the documentation of this file.
00001 /*
00002  * options.h: this file is part of the PoCC project.
00003  *
00004  * PoCC, the Polyhedral Compiler Collection package
00005  *
00006  * Copyright (C) 2009 Louis-Noel Pouchet
00007  *
00008  * This library is free software; you can redistribute it and/or
00009  * modify it under the terms of the GNU Lesser General Public License
00010  * as published by the Free Software Foundation; either version 2.1
00011  * of the License, or (at your option) any later version.
00012  *
00013  * This library is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00016  * Lesser General Public License for more details.
00017  *
00018  * The complete GNU General Public Licence Notice can be found as the
00019  * `COPYING.LESSER' file in the root directory.
00020  *
00021  * Author:
00022  * Louis-Noel Pouchet <Louis-Noel.Pouchet@inria.fr>
00023  *
00024  */
00025 #ifndef POCC_UTILS_OPTIONS_H
00026 # define POCC_UTILS_OPTIONS_H
00027 
00028 # include <stdio.h>
00029 # include <stdlib.h>
00030 
00031 # include <pocc-utils/types.h>
00032 
00033 
00034 # define POCC_UTILS_CODEGEN_FULL        0
00035 # define POCC_UTILS_CODEGEN_PLUTO       1
00036 
00037 
00038 # ifdef __cplusplus
00039 #  define BEGIN_C_DECLS         extern "C" {
00040 #  define END_C_DECLS           }
00041 # else
00042 #  define BEGIN_C_DECLS
00043 #  define END_C_DECLS
00044 # endif
00045 
00046 BEGIN_C_DECLS
00047 
00048 struct s_pocc_utils_options;
00049 typedef void (*pocc_codegen_fun_t)(struct s_pocc_utils_options*);
00050 
00051 struct s_pocc_utils_options
00052 {
00053   int                   codegen_mode;
00054   int                   iterative;
00055   int                   point_idx;
00056   void*                 transfo_matrices; // s_fm_vector_t**
00057   void*                 cloog_options; // CloogOptions*
00058   void*                 pocc_options; // s_pocc_options_t*
00059   void*                 program; // clan_scop_p
00060   pocc_codegen_fun_t    pocc_codegen;
00061   char*                 program_exec_result;
00062   char*                 input_file_name;
00063   char*                 output_file_name;
00064   FILE*                 data_file;
00065 };
00066 typedef struct s_pocc_utils_options s_pocc_utils_options_t;
00067 
00068 extern
00069 s_pocc_utils_options_t* pocc_utils_options_malloc ();
00070 
00071 extern
00072 void pocc_utils_options_free (s_pocc_utils_options_t* opts);
00073 
00074 END_C_DECLS
00075 
00076 
00077 #endif // POCC_UTILS_OPTIONS_H