1 /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4 c-style: "K&R" -*- */
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)
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 -------------------------------------------------------------------------------
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 --------------------------------------------------------------------------- */
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 */
61 print_parameters (FILE *fp
,
62 const GpivGenPar
*gen_par
66 gpiv_genpar_test_parameters (const GpivGenPar
*gen_par
73 gpiv_genpar_parameters_set (GpivGenPar
*gen_par
,
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
;
91 gpiv_genpar_default_parameters (GpivGenPar
*gen_par_default
,
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
;
119 gpiv_genpar_read_parameters (FILE *fp_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
,
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
,
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
,
156 /* gpiv_scan_sph (GPIV_GENPAR_KEY, line, par_name, */
158 /* &gen_par->dir_prefix, print_par, 0); */
159 /* if (gen_par->dir_prefix[0] == '\0') { */
160 /* gen_par->dir_prefix__set = FALSE; */
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
,
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
,
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
,
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
;
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
,
216 GENPAR_KEY__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
;
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
,
231 GENPAR_KEY__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
;
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
,
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
;
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
,
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
;
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
,
276 GENPAR_KEY__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
;
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
,
291 GENPAR_KEY__FILE_PREFIX
,
292 gen_par
->file_prefix
);
302 gpiv_genpar_print_parameters (FILE *fp
,
303 const GpivGenPar
*gen_par
306 print_parameters (fp
, gen_par
);
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
;
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",
357 GENPAR_KEY__FIRST_DIR
,
360 if (gen_par
->last_dir__set
)
361 printf ("%s.%s %d\n",
363 GENPAR_KEY__LAST_DIR
,
366 if (gen_par
->first_file__set
)
367 printf ("%s.%s %d\n",
369 GENPAR_KEY__FIRST_FILE
,
370 gen_par
->first_file
);
372 if (gen_par
->last_file__set
)
373 printf ("%s.%s %d\n",
375 GENPAR_KEY__LAST_FILE
,
379 if (gen_par
->first_dir__set
)
380 fprintf (fp
, "%s.%s %d\n",
382 GENPAR_KEY__FIRST_DIR
,
385 if (gen_par
->last_dir__set
)
386 fprintf (fp
, "%s.%s %d\n",
388 GENPAR_KEY__LAST_DIR
,
391 if (gen_par
->first_file__set
)
392 fprintf (fp
, "%s.%s %d\n",
394 GENPAR_KEY__FIRST_FILE
,
395 gen_par
->first_file
);
397 if (gen_par
->last_file__set
)
398 fprintf (fp
, "%s.%s %d\n",
400 GENPAR_KEY__LAST_FILE
,