16#define _GET_NTH_ARG(_1, _2, _3, _4, _5, N, ...) N
18#define COUNT_ARGS(...) EXPAND(_GET_NTH_ARG(__VA_ARGS__, 5, 4, 3, 2, 1))
19#define READ_LINE(format, ...) \
21 fscanf(file, format, __VA_ARGS__) == COUNT_ARGS(__VA_ARGS__), \
22 "failed while reading a line from file %s", filename)
26 double ** x_vertices,
double ** y_vertices) {
33 READ_LINE(
"%d,%d\n", nbr_vertices, nbr_cells);
37 *x_vertices =
xmalloc (*nbr_vertices *
sizeof(**x_vertices));
38 *y_vertices =
xmalloc (*nbr_vertices *
sizeof(**y_vertices));
40 for (
int i = 0, dummy; i < *nbr_vertices; ++i) {
41 READ_LINE(
"%d,%lf,%lf\n", &dummy, *x_vertices+i, *y_vertices+i);
50 for (
int i = 0, dummy; i < *nbr_cells; ++i) {
56 for (
unsigned j = 0; j < 4; ++j)
78 for (
int i = 0; i < nbr_cells; ++i)
95 FILE * file =
xfopen(filename,
"r");
98 file,
"could not open file %s", filename);
struct yac_basic_grid_data yac_generate_basic_grid_data_unstruct(size_t nbr_vertices, size_t nbr_cells, int *num_vertices_per_cell, double *x_vertices, double *y_vertices, int *cell_to_vertex)
#define xfopen(path, mode)
void yac_read_cube_csv_grid_information(const char *filename, int *nbr_vertices, int *nbr_cells, int **cell_to_vertex, double **x_vertices, double **y_vertices)
#define READ_LINE(format,...)
struct yac_basic_grid_data yac_read_cube_csv_grid(char *filename)
static FILE * open_cube_csv_file(const char *filename)
static void close_cube_csv_file(FILE *file)
int * num_vertices_per_cell
#define YAC_ASSERT_F(exp, format,...)