Merge ../libgpiv-omp into fft-omp
[libgpiv.git] / lib / genpar.c
blobca035f19b8aa964907c3a11cafc474e4fe20c1e9
1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 c-style: "K&R" -*- */
3 /*
4 libgpiv - library for Particle Image Velocimetry
6 Copyright (C) 2008 Gerber van der Graaf
8 This file is part of libgpiv.
9 Libgpiv is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2, or (at your option)
12 any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software Foundation,
21 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25 -------------------------------------------------------------------------------
26 FILENAME: genpar.c
27 LIBRARY: libgpiv:
28 EXTERNAL FUNCTIONS:
29 gpiv_genpar_default_parameters
30 gpiv_genpar_read_parameters
31 gpiv_genpar_check_parameters_read
32 gpiv_genpar_print_parameters
33 gpiv_genpar_fprint_parameters
36 LAST MODIFICATION DATE: $Id: genpar.c,v 1.2 2008-05-05 14:38:41 gerber Exp $
37 --------------------------------------------------------------------------- */
39 #include <gpiv.h>
42 enum {
43 GENPAR_DEFAULT__FIRST_DIR = 0, /**< Default parameter for first_dir of __GpivGenPar */
44 GENPAR_DEFAULT__LAST_DIR = 0, /**< Default parameter for last_dir of __GpivGenPar */
45 GENPAR_DEFAULT__DIR_PREFIX = 0, /**< Default parameter for dir_prefix of __GpivGenPar */
46 GENPAR_DEFAULT__FIRST_FILE = 0, /**< Default parameter for first_file of __GpivGenPar */
47 GENPAR_DEFAULT__LAST_FILE = 0, /**< Default parameter for last_file of __GpivGenPar */
48 GENPAR_DEFAULT__FILE_PREFIX = 0, /**< Default parameter for file_prefix of __GpivGenPar */
51 const gchar *GENPAR_KEY__FIRST_DIR = "First_dir"; /**< Key for first_dir of __GpivGenPar */
52 const gchar *GENPAR_KEY__LAST_DIR = "Last_dir"; /**< Key for last_dir of __GpivGenPar */
53 const gchar *GENPAR_KEY__DIR_PREFIX = "Dir_prefix"; /**< Key for dir_prefix of __GpivGenPar */
54 const gchar *GENPAR_KEY__FIRST_FILE = "First_file"; /**< Key for first_file of __GpivGenPar */
55 const gchar *GENPAR_KEY__LAST_FILE = "Last_file"; /**< Key for last_file of __GpivGenPar */
56 const gchar *GENPAR_KEY__FILE_PREFIX = "File_prefix"; /**< Key for file_prefix of __GpivGenPar */
60 static void
61 print_parameters (FILE *fp,
62 const GpivGenPar *gen_par
65 gchar *
66 gpiv_genpar_test_parameters (const GpivGenPar *gen_par
72 void
73 gpiv_genpar_parameters_set (GpivGenPar *gen_par,
74 const gboolean flag
76 /*-----------------------------------------------------------------------------
79 gen_par->first_dir__set = flag;
80 gen_par->last_dir__set = flag;
81 gen_par->dir_prefix__set = flag;
82 gen_par->first_file__set = flag;
83 gen_par->last_file__set = flag;
84 gen_par->file_prefix__set = flag;
90 void
91 gpiv_genpar_default_parameters (GpivGenPar *gen_par_default,
92 const gboolean force
94 /*-----------------------------------------------------------------------------
97 if (!gen_par_default->dir_prefix__set || force)
98 gen_par_default->dir_prefix = GENPAR_DEFAULT__DIR_PREFIX;
100 if (!gen_par_default->first_dir__set || force)
101 gen_par_default->first_dir = GENPAR_DEFAULT__FIRST_DIR;
103 if (!gen_par_default->last_dir__set || force)
104 gen_par_default->last_dir = GENPAR_DEFAULT__LAST_DIR;
106 if (!gen_par_default->first_file__set || force)
107 gen_par_default->first_file = GENPAR_DEFAULT__FIRST_FILE;
109 if (!gen_par_default->last_file__set || force)
110 gen_par_default->last_file = GENPAR_DEFAULT__LAST_FILE;
112 if (!gen_par_default->file_prefix__set || force)
113 gen_par_default->file_prefix = GENPAR_DEFAULT__FILE_PREFIX;
118 void
119 gpiv_genpar_read_parameters (FILE *fp_par,
120 GpivGenPar *gen_par,
121 const gboolean print_par
123 /*----------------------------------------------------------------------------
126 char line[GPIV_MAX_CHARS], par_name[GPIV_MAX_CHARS];
129 while (fgets(line, GPIV_MAX_CHARS, fp_par) != NULL) {
130 if (line[0] != '#' && line[0] != '\n' && line[0] != ' '
131 && line[0] != '\t') {
132 sscanf(line, "%s", par_name);
134 if (gen_par->first_dir__set == FALSE) {
135 gen_par->first_dir__set =
136 gpiv_scan_iph (GPIV_GENPAR_KEY,
137 GENPAR_KEY__FIRST_DIR, TRUE,
138 line, par_name, &gen_par->first_dir,
139 print_par, NULL);
142 if (gen_par->last_dir__set == FALSE) {
143 gen_par->last_dir__set =
144 gpiv_scan_iph (GPIV_GENPAR_KEY,
145 GENPAR_KEY__LAST_DIR, TRUE,
146 line, par_name, &gen_par->last_dir,
147 print_par, NULL);
150 if (gen_par->dir_prefix__set == FALSE) {
151 gen_par->dir_prefix__set =
152 gpiv_scan_iph (GPIV_GENPAR_KEY,
153 GENPAR_KEY__DIR_PREFIX, TRUE,
154 line, par_name, &gen_par->dir_prefix,
155 print_par, NULL);
156 /* gpiv_scan_sph (GPIV_GENPAR_KEY, line, par_name, */
157 /* "DirPrefix:", */
158 /* &gen_par->dir_prefix, print_par, 0); */
159 /* if (gen_par->dir_prefix[0] == '\0') { */
160 /* gen_par->dir_prefix__set = FALSE; */
161 /* } */
165 if (gen_par->first_file__set == FALSE) {
166 gen_par->first_file__set =
167 gpiv_scan_iph (GPIV_GENPAR_KEY,
168 GENPAR_KEY__FIRST_FILE, TRUE,
169 line, par_name, &gen_par->first_file,
170 print_par, NULL);
173 if (gen_par->last_file__set == FALSE) {
174 gen_par->last_file__set =
175 gpiv_scan_iph (GPIV_GENPAR_KEY,
176 GENPAR_KEY__LAST_FILE, TRUE,
177 line, par_name, &gen_par->last_file,
178 print_par, NULL);
181 if (gen_par->file_prefix__set == FALSE) {
182 gen_par->file_prefix__set =
183 gpiv_scan_iph (GPIV_GENPAR_KEY,
184 GENPAR_KEY__FILE_PREFIX, TRUE,
185 line, par_name, &gen_par->file_prefix,
186 print_par, NULL);
195 gchar *
196 gpiv_genpar_check_parameters_read (GpivGenPar *gen_par,
197 const GpivGenPar *gen_par_default
199 /*-----------------------------------------------------------------------------
202 gchar *err_msg = NULL;
205 if (gen_par->first_dir__set == FALSE) {
206 gen_par->first_dir__set = TRUE;
207 if (gen_par_default == NULL) {
208 err_msg = "Using default from libgpiv: ";
209 gen_par->first_dir = GENPAR_DEFAULT__FIRST_DIR;
210 } else {
211 err_msg = "Using default: ";
212 gen_par->first_dir = gen_par_default->first_dir;
214 gpiv_warning("%s\n%s.%s %d", err_msg,
215 GPIV_GENPAR_KEY,
216 GENPAR_KEY__FIRST_DIR,
217 gen_par->first_dir);
220 if (gen_par->last_dir__set == FALSE) {
221 gen_par->last_dir__set = TRUE;
222 if (gen_par_default == NULL) {
223 err_msg = "Using default from libgpiv: ";
224 gen_par->last_dir = GENPAR_DEFAULT__LAST_DIR;
225 } else {
226 err_msg = "Using default: ";
227 gen_par->last_dir = gen_par_default->last_dir;
229 gpiv_warning("s\n%s.%s %d", err_msg,
230 GPIV_GENPAR_KEY,
231 GENPAR_KEY__LAST_DIR,
232 gen_par->last_dir);
235 if (gen_par->dir_prefix__set == FALSE) {
236 gen_par->dir_prefix__set = TRUE;
237 if (gen_par_default == NULL) {
238 err_msg = "Using default from libgpiv: ";
239 gen_par->dir_prefix = GENPAR_DEFAULT__DIR_PREFIX;
240 } else {
241 err_msg = "Using default: ";
242 gen_par->dir_prefix = gen_par_default->dir_prefix;
244 gpiv_warning("%s\n%s.%s %d", err_msg,
245 GPIV_GENPAR_KEY,
246 GENPAR_KEY__DIR_PREFIX,
247 gen_par->dir_prefix);
250 if (gen_par->first_file__set == FALSE) {
251 gen_par->first_file__set = TRUE;
252 if (gen_par_default == NULL) {
253 err_msg = "Using default from libgpiv: ";
254 gen_par->first_file = GENPAR_DEFAULT__FIRST_FILE;
255 } else {
256 err_msg = "Using default : ";
257 gen_par->first_file = gen_par_default->first_file;
259 gpiv_warning("s\n%s.%s %d", err_msg,
260 GPIV_GENPAR_KEY,
261 GENPAR_KEY__FIRST_FILE,
262 gen_par->first_file);
265 if (gen_par->last_file__set == FALSE) {
266 gen_par->last_file__set = TRUE;
267 if (gen_par_default == NULL) {
268 err_msg = "Using default from libgpiv: ";
269 gen_par->last_file = GENPAR_DEFAULT__LAST_FILE;
270 } else {
271 err_msg = "Using default: ";
272 gen_par->last_file = gen_par_default->last_file;
274 gpiv_warning("%s\n%s.%s %d", err_msg,
275 GPIV_GENPAR_KEY,
276 GENPAR_KEY__LAST_FILE,
277 gen_par->last_file);
280 if (gen_par->file_prefix__set == FALSE) {
281 gen_par->file_prefix__set = TRUE;
282 if (gen_par_default == NULL) {
283 err_msg = "Using default from libgpiv: ";
284 gen_par->file_prefix = GENPAR_DEFAULT__FILE_PREFIX;
285 } else {
286 err_msg = "Using default: ";
287 gen_par->file_prefix = gen_par_default->file_prefix;
289 gpiv_warning("%s\n%s.%s %d", err_msg,
290 GPIV_GENPAR_KEY,
291 GENPAR_KEY__FILE_PREFIX,
292 gen_par->file_prefix);
296 return err_msg;
301 void
302 gpiv_genpar_print_parameters (FILE *fp,
303 const GpivGenPar *gen_par
306 print_parameters (fp, gen_par);
311 GpivGenPar *
312 gpiv_genpar_cp_parameters (const GpivGenPar *gen_par
315 GpivGenPar *par = g_new0 (GpivGenPar, 1);
318 par->first_dir = gen_par->first_dir;
319 par->first_dir__set = TRUE;
321 par->last_dir = gen_par->last_dir;
322 par->last_dir__set = TRUE;
324 par->dir_prefix = gen_par->dir_prefix;
325 par->dir_prefix__set = TRUE;
327 par->first_file = gen_par->first_file;
328 par->first_file__set = TRUE;
330 par->last_file = gen_par->last_file;
331 par->last_file__set = TRUE;
333 par->file_prefix = gen_par->file_prefix;
334 par->file_prefix__set = TRUE;
337 return par;
342 * Local functions
345 static void
346 print_parameters (FILE *fp,
347 const GpivGenPar *gen_par
349 /* ---------------------------------------------------------------------------
350 * prints general parameters to fp_par_out
353 if (fp == stdout || fp == NULL) {
354 if (gen_par->first_dir__set)
355 printf ("%s.%s %d\n",
356 GPIV_GENPAR_KEY,
357 GENPAR_KEY__FIRST_DIR,
358 gen_par->first_dir);
360 if (gen_par->last_dir__set)
361 printf ("%s.%s %d\n",
362 GPIV_GENPAR_KEY,
363 GENPAR_KEY__LAST_DIR,
364 gen_par->last_dir);
366 if (gen_par->first_file__set)
367 printf ("%s.%s %d\n",
368 GPIV_GENPAR_KEY,
369 GENPAR_KEY__FIRST_FILE,
370 gen_par->first_file);
372 if (gen_par->last_file__set)
373 printf ("%s.%s %d\n",
374 GPIV_GENPAR_KEY,
375 GENPAR_KEY__LAST_FILE,
376 gen_par->last_file);
378 } else {
379 if (gen_par->first_dir__set)
380 fprintf (fp, "%s.%s %d\n",
381 GPIV_GENPAR_KEY,
382 GENPAR_KEY__FIRST_DIR,
383 gen_par->first_dir);
385 if (gen_par->last_dir__set)
386 fprintf (fp, "%s.%s %d\n",
387 GPIV_GENPAR_KEY,
388 GENPAR_KEY__LAST_DIR,
389 gen_par->last_dir);
391 if (gen_par->first_file__set)
392 fprintf (fp, "%s.%s %d\n",
393 GPIV_GENPAR_KEY,
394 GENPAR_KEY__FIRST_FILE,
395 gen_par->first_file);
397 if (gen_par->last_file__set)
398 fprintf (fp, "%s.%s %d\n",
399 GPIV_GENPAR_KEY,
400 GENPAR_KEY__LAST_FILE,
401 gen_par->last_file);