PoCC
Version 1.0
|
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