ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.c
Revision: 1531
Committed: Wed Dec 29 16:48:19 2010 UTC (14 years, 4 months ago) by kstocke1
Content type: text/plain
File size: 56312 byte(s)
Log Message:
fixed gengetopt generated files to fix pAngle bug

File Contents

# User Rev Content
1 tim 310 /*
2 kstocke1 1531 File autogenerated by gengetopt version 2.22.4
3 tim 310 generated with the following command:
4 gezelter 1454 gengetopt -F StaticPropsCmd -u
5 tim 310
6     The developers of gengetopt consider the fixed text that goes in all
7     gengetopt output files to be in the public domain:
8     we make no copyright claims on it.
9     */
10    
11 gezelter 929 /* If we use autoconf. */
12     #ifdef HAVE_CONFIG_H
13     #include "config.h"
14     #endif
15 tim 310
16     #include <stdio.h>
17     #include <stdlib.h>
18     #include <string.h>
19    
20 kstocke1 1531 #ifndef FIX_UNUSED
21     #define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */
22     #endif
23 tim 310
24 kstocke1 1531 #include <getopt.h>
25    
26 tim 311 #include "StaticPropsCmd.h"
27 tim 310
28 chuckv 1128 const char *gengetopt_args_info_purpose = "";
29    
30 gezelter 1454 const char *gengetopt_args_info_usage = "Usage: StaticProps [OPTIONS]... [FILES]...";
31 chuckv 1128
32     const char *gengetopt_args_info_description = "";
33    
34     const char *gengetopt_args_info_help[] = {
35     " -h, --help Print help and exit",
36     " -V, --version Print version and exit",
37     " -i, --input=filename input dump file",
38     " -o, --output=filename output file name",
39     " -n, --step=INT process every n frame (default=`1')",
40     " -b, --nbins=INT number of bins (general purpose) \n (default=`100')",
41     " -x, --nbins_x=INT number of bins in x axis (default=`100')",
42     " -y, --nbins_y=INT number of bins in y axis (default=`100')",
43 kstocke1 1531 " --nbins_z=INT number of bins in z axis (default=`100')",
44 chuckv 1128 " -a, --nanglebins=INT number of bins for cos(angle) (default=`50')",
45 chuckv 1445 " -c, --rcut=DOUBLE cutoff radius (rcut)",
46 gezelter 1454 " --dz=DOUBLE slab width (dz)",
47 chuckv 1128 " --length=DOUBLE maximum length (Defaults to 1/2 smallest length \n of first frame)",
48 chuckv 1445 " --zlength=DOUBLE maximum length (Defaults to 1/2 smallest length \n of first frame)",
49 chuckv 1128 " -z, --zoffset=DOUBLE Where to set the zero for the slab_density \n calculation (default=`0')",
50     " --sele1=selection script select the first stuntdouble set",
51     " --sele2=selection script select the second stuntdouble set",
52     " --sele3=selection script select the third stuntdouble set",
53     " --refsele=selection script\n select reference (use and only use with --gxyz)",
54 gezelter 1390 " --comsele=selection script\n select stunt doubles for center-of-mass \n reference point",
55 chuckv 1128 " --molname=STRING molecule name",
56     " --begin=INT begin internal index",
57     " --end=INT end internal index",
58     " --radius=DOUBLE nanoparticle radius",
59     "\n Group: staticProps\n an option of this group is required",
60     " --bo bond order parameter (--rcut must be specified)",
61     " --bor bond order parameter as a function of radius \n (--rcut must be specified)",
62 chuckv 1180 " --bad N(theta) bond angle density within (--rcut must \n be specified)",
63 gezelter 1513 " --count count of molecules matching selection criteria \n (and associated statistics)",
64 chuckv 1128 " -g, --gofr g(r)",
65 xsun 1213 " --gofz g(z)",
66 chuckv 1128 " --r_theta g(r, cos(theta))",
67     " --r_omega g(r, cos(omega))",
68 kstocke1 1531 " --r_z g(r, z)",
69 chuckv 1128 " --theta_omega g(cos(theta), cos(omega))",
70     " --gxyz g(x, y, z)",
71 gezelter 1454 " --twodgofr 2D g(r) (Slab width --dz must be specified)",
72 chuckv 1128 " -p, --p2 p2 order parameter (--sele1 and --sele2 must be \n specified)",
73     " --rp2 rp2 order parameter (--sele1 and --sele2 must \n be specified)",
74     " -s, --scd scd order parameter (either --sele1, --sele2, \n --sele3 are specified or --molname, --begin, \n --end are specified)",
75     " -d, --density density plot",
76     " --slab_density slab density",
77 gezelter 1413 " --p_angle p(cos(theta))",
78 chuckv 1128 " --hxy hxy",
79     " --rho_r rho of R",
80 kstocke1 1522 " --angle_r angle of R",
81 chuckv 1180 " --hullvol hull volume of nanoparticle",
82 kstocke1 1531 " -Q, --tet_param tetrahedrality order parameter",
83 chuckv 1128 0
84     };
85    
86 gezelter 1390 typedef enum {ARG_NO
87     , ARG_STRING
88     , ARG_INT
89     , ARG_DOUBLE
90     } cmdline_parser_arg_type;
91    
92 gezelter 929 static
93     void clear_given (struct gengetopt_args_info *args_info);
94     static
95     void clear_args (struct gengetopt_args_info *args_info);
96    
97     static int
98 kstocke1 1531 cmdline_parser_internal (int argc, char **argv, struct gengetopt_args_info *args_info,
99 gezelter 1390 struct cmdline_parser_params *params, const char *additional_error);
100 gezelter 929
101     static int
102     cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error);
103    
104     static char *
105     gengetopt_strdup (const char *s);
106    
107     static
108     void clear_given (struct gengetopt_args_info *args_info)
109     {
110     args_info->help_given = 0 ;
111     args_info->version_given = 0 ;
112     args_info->input_given = 0 ;
113     args_info->output_given = 0 ;
114     args_info->step_given = 0 ;
115 gezelter 1041 args_info->nbins_given = 0 ;
116 xsun 955 args_info->nbins_x_given = 0 ;
117     args_info->nbins_y_given = 0 ;
118 kstocke1 1531 args_info->nbins_z_given = 0 ;
119 gezelter 929 args_info->nanglebins_given = 0 ;
120 chuckv 1445 args_info->rcut_given = 0 ;
121 gezelter 1454 args_info->dz_given = 0 ;
122 gezelter 929 args_info->length_given = 0 ;
123 chuckv 1445 args_info->zlength_given = 0 ;
124 gezelter 929 args_info->zoffset_given = 0 ;
125     args_info->sele1_given = 0 ;
126     args_info->sele2_given = 0 ;
127     args_info->sele3_given = 0 ;
128     args_info->refsele_given = 0 ;
129 gezelter 1390 args_info->comsele_given = 0 ;
130 gezelter 929 args_info->molname_given = 0 ;
131     args_info->begin_given = 0 ;
132     args_info->end_given = 0 ;
133 chuckv 1091 args_info->radius_given = 0 ;
134 gezelter 1039 args_info->bo_given = 0 ;
135 chuckv 1128 args_info->bor_given = 0 ;
136 chuckv 1180 args_info->bad_given = 0 ;
137 gezelter 1513 args_info->count_given = 0 ;
138 gezelter 929 args_info->gofr_given = 0 ;
139 xsun 1213 args_info->gofz_given = 0 ;
140 gezelter 929 args_info->r_theta_given = 0 ;
141     args_info->r_omega_given = 0 ;
142 kstocke1 1531 args_info->r_z_given = 0 ;
143 gezelter 929 args_info->theta_omega_given = 0 ;
144     args_info->gxyz_given = 0 ;
145 gezelter 1454 args_info->twodgofr_given = 0 ;
146 gezelter 929 args_info->p2_given = 0 ;
147 xsun 980 args_info->rp2_given = 0 ;
148 gezelter 929 args_info->scd_given = 0 ;
149     args_info->density_given = 0 ;
150     args_info->slab_density_given = 0 ;
151 gezelter 1413 args_info->p_angle_given = 0 ;
152 xsun 955 args_info->hxy_given = 0 ;
153 chuckv 1091 args_info->rho_r_given = 0 ;
154 kstocke1 1522 args_info->angle_r_given = 0 ;
155 chuckv 1180 args_info->hullvol_given = 0 ;
156 kstocke1 1531 args_info->tet_param_given = 0 ;
157 gezelter 929 args_info->staticProps_group_counter = 0 ;
158     }
159    
160     static
161     void clear_args (struct gengetopt_args_info *args_info)
162     {
163 kstocke1 1531 FIX_UNUSED (args_info);
164 gezelter 929 args_info->input_arg = NULL;
165     args_info->input_orig = NULL;
166     args_info->output_arg = NULL;
167     args_info->output_orig = NULL;
168     args_info->step_arg = 1;
169     args_info->step_orig = NULL;
170 gezelter 1041 args_info->nbins_arg = 100;
171     args_info->nbins_orig = NULL;
172 xsun 955 args_info->nbins_x_arg = 100;
173     args_info->nbins_x_orig = NULL;
174     args_info->nbins_y_arg = 100;
175     args_info->nbins_y_orig = NULL;
176 kstocke1 1531 args_info->nbins_z_arg = 100;
177     args_info->nbins_z_orig = NULL;
178 gezelter 929 args_info->nanglebins_arg = 50;
179     args_info->nanglebins_orig = NULL;
180 chuckv 1445 args_info->rcut_orig = NULL;
181 gezelter 1454 args_info->dz_orig = NULL;
182 gezelter 929 args_info->length_orig = NULL;
183 chuckv 1445 args_info->zlength_orig = NULL;
184 gezelter 929 args_info->zoffset_arg = 0;
185     args_info->zoffset_orig = NULL;
186     args_info->sele1_arg = NULL;
187     args_info->sele1_orig = NULL;
188     args_info->sele2_arg = NULL;
189     args_info->sele2_orig = NULL;
190     args_info->sele3_arg = NULL;
191     args_info->sele3_orig = NULL;
192     args_info->refsele_arg = NULL;
193     args_info->refsele_orig = NULL;
194 gezelter 1390 args_info->comsele_arg = NULL;
195     args_info->comsele_orig = NULL;
196 gezelter 929 args_info->molname_arg = NULL;
197     args_info->molname_orig = NULL;
198     args_info->begin_orig = NULL;
199     args_info->end_orig = NULL;
200 chuckv 1091 args_info->radius_orig = NULL;
201 gezelter 929
202     }
203    
204 chuckv 1128 static
205     void init_args_info(struct gengetopt_args_info *args_info)
206     {
207 gezelter 1390
208    
209 chuckv 1128 args_info->help_help = gengetopt_args_info_help[0] ;
210     args_info->version_help = gengetopt_args_info_help[1] ;
211     args_info->input_help = gengetopt_args_info_help[2] ;
212     args_info->output_help = gengetopt_args_info_help[3] ;
213     args_info->step_help = gengetopt_args_info_help[4] ;
214     args_info->nbins_help = gengetopt_args_info_help[5] ;
215     args_info->nbins_x_help = gengetopt_args_info_help[6] ;
216     args_info->nbins_y_help = gengetopt_args_info_help[7] ;
217 gezelter 1440 args_info->nbins_z_help = gengetopt_args_info_help[8] ;
218     args_info->nanglebins_help = gengetopt_args_info_help[9] ;
219 chuckv 1445 args_info->rcut_help = gengetopt_args_info_help[10] ;
220 gezelter 1454 args_info->dz_help = gengetopt_args_info_help[11] ;
221     args_info->length_help = gengetopt_args_info_help[12] ;
222     args_info->zlength_help = gengetopt_args_info_help[13] ;
223     args_info->zoffset_help = gengetopt_args_info_help[14] ;
224     args_info->sele1_help = gengetopt_args_info_help[15] ;
225     args_info->sele2_help = gengetopt_args_info_help[16] ;
226     args_info->sele3_help = gengetopt_args_info_help[17] ;
227     args_info->refsele_help = gengetopt_args_info_help[18] ;
228     args_info->comsele_help = gengetopt_args_info_help[19] ;
229     args_info->molname_help = gengetopt_args_info_help[20] ;
230     args_info->begin_help = gengetopt_args_info_help[21] ;
231     args_info->end_help = gengetopt_args_info_help[22] ;
232     args_info->radius_help = gengetopt_args_info_help[23] ;
233     args_info->bo_help = gengetopt_args_info_help[25] ;
234     args_info->bor_help = gengetopt_args_info_help[26] ;
235     args_info->bad_help = gengetopt_args_info_help[27] ;
236 gezelter 1513 args_info->count_help = gengetopt_args_info_help[28] ;
237     args_info->gofr_help = gengetopt_args_info_help[29] ;
238     args_info->gofz_help = gengetopt_args_info_help[30] ;
239     args_info->r_theta_help = gengetopt_args_info_help[31] ;
240     args_info->r_omega_help = gengetopt_args_info_help[32] ;
241     args_info->r_z_help = gengetopt_args_info_help[33] ;
242     args_info->theta_omega_help = gengetopt_args_info_help[34] ;
243     args_info->gxyz_help = gengetopt_args_info_help[35] ;
244     args_info->twodgofr_help = gengetopt_args_info_help[36] ;
245     args_info->p2_help = gengetopt_args_info_help[37] ;
246     args_info->rp2_help = gengetopt_args_info_help[38] ;
247     args_info->scd_help = gengetopt_args_info_help[39] ;
248     args_info->density_help = gengetopt_args_info_help[40] ;
249     args_info->slab_density_help = gengetopt_args_info_help[41] ;
250     args_info->p_angle_help = gengetopt_args_info_help[42] ;
251     args_info->hxy_help = gengetopt_args_info_help[43] ;
252     args_info->rho_r_help = gengetopt_args_info_help[44] ;
253 kstocke1 1531 args_info->angle_r_help = gengetopt_args_info_help[45] ;
254     args_info->hullvol_help = gengetopt_args_info_help[46] ;
255     args_info->tet_param_help = gengetopt_args_info_help[47] ;
256 chuckv 1128
257     }
258    
259 tim 310 void
260     cmdline_parser_print_version (void)
261     {
262 kstocke1 1531 printf ("%s %s\n",
263     (strlen(CMDLINE_PARSER_PACKAGE_NAME) ? CMDLINE_PARSER_PACKAGE_NAME : CMDLINE_PARSER_PACKAGE),
264     CMDLINE_PARSER_VERSION);
265 tim 310 }
266    
267 gezelter 1390 static void print_help_common(void) {
268 tim 310 cmdline_parser_print_version ();
269 chuckv 1128
270     if (strlen(gengetopt_args_info_purpose) > 0)
271     printf("\n%s\n", gengetopt_args_info_purpose);
272    
273 gezelter 1390 if (strlen(gengetopt_args_info_usage) > 0)
274     printf("\n%s\n", gengetopt_args_info_usage);
275 chuckv 1128
276 gezelter 1390 printf("\n");
277    
278 chuckv 1128 if (strlen(gengetopt_args_info_description) > 0)
279 kstocke1 1531 printf("%s\n\n", gengetopt_args_info_description);
280 gezelter 1390 }
281 chuckv 1128
282 gezelter 1390 void
283     cmdline_parser_print_help (void)
284     {
285     int i = 0;
286     print_help_common();
287 chuckv 1128 while (gengetopt_args_info_help[i])
288     printf("%s\n", gengetopt_args_info_help[i++]);
289 tim 310 }
290    
291 gezelter 929 void
292     cmdline_parser_init (struct gengetopt_args_info *args_info)
293     {
294     clear_given (args_info);
295     clear_args (args_info);
296 chuckv 1128 init_args_info (args_info);
297 gezelter 1454
298 kstocke1 1531 args_info->inputs = 0;
299 gezelter 1454 args_info->inputs_num = 0;
300 gezelter 1390 }
301 chuckv 1128
302 gezelter 1390 void
303     cmdline_parser_params_init(struct cmdline_parser_params *params)
304     {
305     if (params)
306     {
307     params->override = 0;
308     params->initialize = 1;
309     params->check_required = 1;
310     params->check_ambiguity = 0;
311     params->print_errors = 1;
312     }
313 gezelter 929 }
314 tim 310
315 gezelter 1390 struct cmdline_parser_params *
316     cmdline_parser_params_create(void)
317     {
318     struct cmdline_parser_params *params =
319     (struct cmdline_parser_params *)malloc(sizeof(struct cmdline_parser_params));
320     cmdline_parser_params_init(params);
321     return params;
322     }
323    
324 gezelter 929 static void
325 gezelter 1390 free_string_field (char **s)
326 gezelter 929 {
327 gezelter 1390 if (*s)
328 gezelter 929 {
329 gezelter 1390 free (*s);
330     *s = 0;
331 gezelter 929 }
332 gezelter 1390 }
333    
334    
335     static void
336     cmdline_parser_release (struct gengetopt_args_info *args_info)
337     {
338 gezelter 1454 unsigned int i;
339 gezelter 1390 free_string_field (&(args_info->input_arg));
340     free_string_field (&(args_info->input_orig));
341     free_string_field (&(args_info->output_arg));
342     free_string_field (&(args_info->output_orig));
343     free_string_field (&(args_info->step_orig));
344     free_string_field (&(args_info->nbins_orig));
345     free_string_field (&(args_info->nbins_x_orig));
346     free_string_field (&(args_info->nbins_y_orig));
347 kstocke1 1531 free_string_field (&(args_info->nbins_z_orig));
348 gezelter 1390 free_string_field (&(args_info->nanglebins_orig));
349 chuckv 1445 free_string_field (&(args_info->rcut_orig));
350 gezelter 1454 free_string_field (&(args_info->dz_orig));
351 gezelter 1390 free_string_field (&(args_info->length_orig));
352 chuckv 1445 free_string_field (&(args_info->zlength_orig));
353 gezelter 1390 free_string_field (&(args_info->zoffset_orig));
354     free_string_field (&(args_info->sele1_arg));
355     free_string_field (&(args_info->sele1_orig));
356     free_string_field (&(args_info->sele2_arg));
357     free_string_field (&(args_info->sele2_orig));
358     free_string_field (&(args_info->sele3_arg));
359     free_string_field (&(args_info->sele3_orig));
360     free_string_field (&(args_info->refsele_arg));
361     free_string_field (&(args_info->refsele_orig));
362     free_string_field (&(args_info->comsele_arg));
363     free_string_field (&(args_info->comsele_orig));
364     free_string_field (&(args_info->molname_arg));
365     free_string_field (&(args_info->molname_orig));
366     free_string_field (&(args_info->begin_orig));
367     free_string_field (&(args_info->end_orig));
368     free_string_field (&(args_info->radius_orig));
369 gezelter 929
370 chuckv 1128
371 gezelter 1454 for (i = 0; i < args_info->inputs_num; ++i)
372     free (args_info->inputs [i]);
373 gezelter 1390
374 gezelter 1454 if (args_info->inputs_num)
375     free (args_info->inputs);
376    
377 gezelter 929 clear_given (args_info);
378     }
379 tim 310
380 gezelter 1390
381     static void
382 kstocke1 1531 write_into_file(FILE *outfile, const char *opt, const char *arg, const char *values[])
383 gezelter 1390 {
384 kstocke1 1531 FIX_UNUSED (values);
385 gezelter 1390 if (arg) {
386     fprintf(outfile, "%s=\"%s\"\n", opt, arg);
387     } else {
388     fprintf(outfile, "%s\n", opt);
389     }
390     }
391    
392    
393 gezelter 929 int
394 gezelter 1390 cmdline_parser_dump(FILE *outfile, struct gengetopt_args_info *args_info)
395     {
396     int i = 0;
397    
398     if (!outfile)
399     {
400     fprintf (stderr, "%s: cannot dump options to stream\n", CMDLINE_PARSER_PACKAGE);
401     return EXIT_FAILURE;
402     }
403    
404     if (args_info->help_given)
405     write_into_file(outfile, "help", 0, 0 );
406     if (args_info->version_given)
407     write_into_file(outfile, "version", 0, 0 );
408     if (args_info->input_given)
409     write_into_file(outfile, "input", args_info->input_orig, 0);
410     if (args_info->output_given)
411     write_into_file(outfile, "output", args_info->output_orig, 0);
412     if (args_info->step_given)
413     write_into_file(outfile, "step", args_info->step_orig, 0);
414     if (args_info->nbins_given)
415     write_into_file(outfile, "nbins", args_info->nbins_orig, 0);
416     if (args_info->nbins_x_given)
417     write_into_file(outfile, "nbins_x", args_info->nbins_x_orig, 0);
418     if (args_info->nbins_y_given)
419     write_into_file(outfile, "nbins_y", args_info->nbins_y_orig, 0);
420 kstocke1 1531 if (args_info->nbins_z_given)
421     write_into_file(outfile, "nbins_z", args_info->nbins_z_orig, 0);
422 gezelter 1390 if (args_info->nanglebins_given)
423     write_into_file(outfile, "nanglebins", args_info->nanglebins_orig, 0);
424 chuckv 1445 if (args_info->rcut_given)
425     write_into_file(outfile, "rcut", args_info->rcut_orig, 0);
426 gezelter 1454 if (args_info->dz_given)
427     write_into_file(outfile, "dz", args_info->dz_orig, 0);
428 gezelter 1390 if (args_info->length_given)
429     write_into_file(outfile, "length", args_info->length_orig, 0);
430 chuckv 1445 if (args_info->zlength_given)
431     write_into_file(outfile, "zlength", args_info->zlength_orig, 0);
432 gezelter 1390 if (args_info->zoffset_given)
433     write_into_file(outfile, "zoffset", args_info->zoffset_orig, 0);
434     if (args_info->sele1_given)
435     write_into_file(outfile, "sele1", args_info->sele1_orig, 0);
436     if (args_info->sele2_given)
437     write_into_file(outfile, "sele2", args_info->sele2_orig, 0);
438     if (args_info->sele3_given)
439     write_into_file(outfile, "sele3", args_info->sele3_orig, 0);
440     if (args_info->refsele_given)
441     write_into_file(outfile, "refsele", args_info->refsele_orig, 0);
442     if (args_info->comsele_given)
443     write_into_file(outfile, "comsele", args_info->comsele_orig, 0);
444     if (args_info->molname_given)
445     write_into_file(outfile, "molname", args_info->molname_orig, 0);
446     if (args_info->begin_given)
447     write_into_file(outfile, "begin", args_info->begin_orig, 0);
448     if (args_info->end_given)
449     write_into_file(outfile, "end", args_info->end_orig, 0);
450     if (args_info->radius_given)
451     write_into_file(outfile, "radius", args_info->radius_orig, 0);
452     if (args_info->bo_given)
453     write_into_file(outfile, "bo", 0, 0 );
454     if (args_info->bor_given)
455     write_into_file(outfile, "bor", 0, 0 );
456     if (args_info->bad_given)
457     write_into_file(outfile, "bad", 0, 0 );
458 gezelter 1513 if (args_info->count_given)
459     write_into_file(outfile, "count", 0, 0 );
460 gezelter 1390 if (args_info->gofr_given)
461     write_into_file(outfile, "gofr", 0, 0 );
462     if (args_info->gofz_given)
463     write_into_file(outfile, "gofz", 0, 0 );
464     if (args_info->r_theta_given)
465     write_into_file(outfile, "r_theta", 0, 0 );
466     if (args_info->r_omega_given)
467     write_into_file(outfile, "r_omega", 0, 0 );
468 kstocke1 1531 if (args_info->r_z_given)
469     write_into_file(outfile, "r_z", 0, 0 );
470 gezelter 1390 if (args_info->theta_omega_given)
471     write_into_file(outfile, "theta_omega", 0, 0 );
472     if (args_info->gxyz_given)
473     write_into_file(outfile, "gxyz", 0, 0 );
474 gezelter 1454 if (args_info->twodgofr_given)
475     write_into_file(outfile, "twodgofr", 0, 0 );
476 gezelter 1390 if (args_info->p2_given)
477     write_into_file(outfile, "p2", 0, 0 );
478     if (args_info->rp2_given)
479     write_into_file(outfile, "rp2", 0, 0 );
480     if (args_info->scd_given)
481     write_into_file(outfile, "scd", 0, 0 );
482     if (args_info->density_given)
483     write_into_file(outfile, "density", 0, 0 );
484     if (args_info->slab_density_given)
485     write_into_file(outfile, "slab_density", 0, 0 );
486 gezelter 1413 if (args_info->p_angle_given)
487     write_into_file(outfile, "p_angle", 0, 0 );
488 gezelter 1390 if (args_info->hxy_given)
489     write_into_file(outfile, "hxy", 0, 0 );
490     if (args_info->rho_r_given)
491     write_into_file(outfile, "rho_r", 0, 0 );
492 kstocke1 1522 if (args_info->angle_r_given)
493     write_into_file(outfile, "angle_r", 0, 0 );
494 gezelter 1390 if (args_info->hullvol_given)
495     write_into_file(outfile, "hullvol", 0, 0 );
496 kstocke1 1531 if (args_info->tet_param_given)
497     write_into_file(outfile, "tet_param", 0, 0 );
498 gezelter 1390
499    
500     i = EXIT_SUCCESS;
501     return i;
502     }
503    
504     int
505 gezelter 929 cmdline_parser_file_save(const char *filename, struct gengetopt_args_info *args_info)
506     {
507     FILE *outfile;
508     int i = 0;
509    
510     outfile = fopen(filename, "w");
511    
512     if (!outfile)
513     {
514     fprintf (stderr, "%s: cannot open file for writing: %s\n", CMDLINE_PARSER_PACKAGE, filename);
515     return EXIT_FAILURE;
516     }
517    
518 gezelter 1390 i = cmdline_parser_dump(outfile, args_info);
519 gezelter 929 fclose (outfile);
520    
521     return i;
522     }
523    
524     void
525     cmdline_parser_free (struct gengetopt_args_info *args_info)
526     {
527     cmdline_parser_release (args_info);
528     }
529    
530 gezelter 1390 /** @brief replacement of strdup, which is not standard */
531 tim 310 char *
532     gengetopt_strdup (const char *s)
533     {
534 kstocke1 1531 char *result = 0;
535 gezelter 929 if (!s)
536     return result;
537    
538     result = (char*)malloc(strlen(s) + 1);
539 tim 310 if (result == (char*)0)
540     return (char*)0;
541     strcpy(result, s);
542     return result;
543     }
544    
545 gezelter 929 static void
546     reset_group_staticProps(struct gengetopt_args_info *args_info)
547 tim 310 {
548 gezelter 929 if (! args_info->staticProps_group_counter)
549     return;
550 tim 310
551 gezelter 1039 args_info->bo_given = 0 ;
552 chuckv 1128 args_info->bor_given = 0 ;
553 chuckv 1180 args_info->bad_given = 0 ;
554 gezelter 1513 args_info->count_given = 0 ;
555 tim 310 args_info->gofr_given = 0 ;
556 xsun 1213 args_info->gofz_given = 0 ;
557 tim 310 args_info->r_theta_given = 0 ;
558     args_info->r_omega_given = 0 ;
559 kstocke1 1531 args_info->r_z_given = 0 ;
560 tim 310 args_info->theta_omega_given = 0 ;
561 tim 369 args_info->gxyz_given = 0 ;
562 gezelter 1454 args_info->twodgofr_given = 0 ;
563 tim 543 args_info->p2_given = 0 ;
564 xsun 980 args_info->rp2_given = 0 ;
565 tim 544 args_info->scd_given = 0 ;
566 tim 545 args_info->density_given = 0 ;
567 tim 840 args_info->slab_density_given = 0 ;
568 gezelter 1413 args_info->p_angle_given = 0 ;
569 xsun 967 args_info->hxy_given = 0 ;
570 chuckv 1091 args_info->rho_r_given = 0 ;
571 kstocke1 1522 args_info->angle_r_given = 0 ;
572 chuckv 1180 args_info->hullvol_given = 0 ;
573 kstocke1 1531 args_info->tet_param_given = 0 ;
574 gezelter 929
575     args_info->staticProps_group_counter = 0;
576 tim 543 }
577 tim 310
578 gezelter 929 int
579 kstocke1 1531 cmdline_parser (int argc, char **argv, struct gengetopt_args_info *args_info)
580 gezelter 929 {
581     return cmdline_parser2 (argc, argv, args_info, 0, 1, 1);
582     }
583 tim 310
584 gezelter 929 int
585 kstocke1 1531 cmdline_parser_ext (int argc, char **argv, struct gengetopt_args_info *args_info,
586 gezelter 1390 struct cmdline_parser_params *params)
587     {
588     int result;
589 kstocke1 1531 result = cmdline_parser_internal (argc, argv, args_info, params, 0);
590 gezelter 1390
591     if (result == EXIT_FAILURE)
592     {
593     cmdline_parser_free (args_info);
594     exit (EXIT_FAILURE);
595     }
596    
597     return result;
598     }
599    
600     int
601 kstocke1 1531 cmdline_parser2 (int argc, char **argv, struct gengetopt_args_info *args_info, int override, int initialize, int check_required)
602 gezelter 929 {
603     int result;
604 gezelter 1390 struct cmdline_parser_params params;
605    
606     params.override = override;
607     params.initialize = initialize;
608     params.check_required = check_required;
609     params.check_ambiguity = 0;
610     params.print_errors = 1;
611 gezelter 929
612 kstocke1 1531 result = cmdline_parser_internal (argc, argv, args_info, &params, 0);
613 gezelter 929
614     if (result == EXIT_FAILURE)
615     {
616     cmdline_parser_free (args_info);
617     exit (EXIT_FAILURE);
618     }
619    
620     return result;
621     }
622    
623     int
624     cmdline_parser_required (struct gengetopt_args_info *args_info, const char *prog_name)
625     {
626     int result = EXIT_SUCCESS;
627    
628 kstocke1 1531 if (cmdline_parser_required2(args_info, prog_name, 0) > 0)
629 gezelter 929 result = EXIT_FAILURE;
630    
631     if (result == EXIT_FAILURE)
632     {
633     cmdline_parser_free (args_info);
634     exit (EXIT_FAILURE);
635     }
636    
637     return result;
638     }
639    
640     int
641     cmdline_parser_required2 (struct gengetopt_args_info *args_info, const char *prog_name, const char *additional_error)
642     {
643     int error = 0;
644 kstocke1 1531 FIX_UNUSED (additional_error);
645 gezelter 929
646 chuckv 1128 /* checks for required options */
647 gezelter 929 if (! args_info->input_given)
648     {
649     fprintf (stderr, "%s: '--input' ('-i') option required%s\n", prog_name, (additional_error ? additional_error : ""));
650     error = 1;
651     }
652 chuckv 1128
653 gezelter 929 if (args_info->staticProps_group_counter == 0)
654     {
655 kstocke1 1531 fprintf (stderr, "%s: %d options of group staticProps were given. One is required%s.\n", prog_name, args_info->staticProps_group_counter, (additional_error ? additional_error : ""));
656 gezelter 929 error = 1;
657     }
658    
659    
660 chuckv 1128 /* checks for dependences among options */
661    
662 gezelter 929 return error;
663     }
664    
665 gezelter 1390
666     static char *package_name = 0;
667    
668     /**
669     * @brief updates an option
670     * @param field the generic pointer to the field to update
671     * @param orig_field the pointer to the orig field
672     * @param field_given the pointer to the number of occurrence of this option
673     * @param prev_given the pointer to the number of occurrence already seen
674     * @param value the argument for this option (if null no arg was specified)
675     * @param possible_values the possible values for this option (if specified)
676     * @param default_value the default value (in case the option only accepts fixed values)
677     * @param arg_type the type of this option
678     * @param check_ambiguity @see cmdline_parser_params.check_ambiguity
679     * @param override @see cmdline_parser_params.override
680     * @param no_free whether to free a possible previous value
681     * @param multiple_option whether this is a multiple option
682     * @param long_opt the corresponding long option
683     * @param short_opt the corresponding short option (or '-' if none)
684     * @param additional_error possible further error specification
685     */
686     static
687     int update_arg(void *field, char **orig_field,
688     unsigned int *field_given, unsigned int *prev_given,
689 kstocke1 1531 char *value, const char *possible_values[],
690     const char *default_value,
691 gezelter 1390 cmdline_parser_arg_type arg_type,
692     int check_ambiguity, int override,
693     int no_free, int multiple_option,
694     const char *long_opt, char short_opt,
695     const char *additional_error)
696     {
697     char *stop_char = 0;
698     const char *val = value;
699     int found;
700     char **string_field;
701 kstocke1 1531 FIX_UNUSED (field);
702 gezelter 1390
703     stop_char = 0;
704     found = 0;
705    
706     if (!multiple_option && prev_given && (*prev_given || (check_ambiguity && *field_given)))
707     {
708     if (short_opt != '-')
709     fprintf (stderr, "%s: `--%s' (`-%c') option given more than once%s\n",
710     package_name, long_opt, short_opt,
711     (additional_error ? additional_error : ""));
712     else
713     fprintf (stderr, "%s: `--%s' option given more than once%s\n",
714     package_name, long_opt,
715     (additional_error ? additional_error : ""));
716     return 1; /* failure */
717     }
718    
719 kstocke1 1531 FIX_UNUSED (default_value);
720 gezelter 1390
721     if (field_given && *field_given && ! override)
722     return 0;
723     if (prev_given)
724     (*prev_given)++;
725     if (field_given)
726     (*field_given)++;
727     if (possible_values)
728     val = possible_values[found];
729    
730     switch(arg_type) {
731     case ARG_INT:
732     if (val) *((int *)field) = strtol (val, &stop_char, 0);
733     break;
734     case ARG_DOUBLE:
735     if (val) *((double *)field) = strtod (val, &stop_char);
736     break;
737     case ARG_STRING:
738     if (val) {
739     string_field = (char **)field;
740     if (!no_free && *string_field)
741     free (*string_field); /* free previous string */
742     *string_field = gengetopt_strdup (val);
743     }
744     break;
745     default:
746     break;
747     };
748    
749     /* check numeric conversion */
750     switch(arg_type) {
751     case ARG_INT:
752     case ARG_DOUBLE:
753     if (val && !(stop_char && *stop_char == '\0')) {
754     fprintf(stderr, "%s: invalid numeric value: %s\n", package_name, val);
755     return 1; /* failure */
756     }
757     break;
758     default:
759     ;
760     };
761    
762     /* store the original value */
763     switch(arg_type) {
764     case ARG_NO:
765     break;
766     default:
767     if (value && orig_field) {
768     if (no_free) {
769     *orig_field = value;
770     } else {
771     if (*orig_field)
772     free (*orig_field); /* free previous string */
773     *orig_field = gengetopt_strdup (value);
774     }
775     }
776     };
777    
778     return 0; /* OK */
779     }
780    
781    
782 gezelter 929 int
783 kstocke1 1531 cmdline_parser_internal (
784     int argc, char **argv, struct gengetopt_args_info *args_info,
785 gezelter 1390 struct cmdline_parser_params *params, const char *additional_error)
786 gezelter 929 {
787     int c; /* Character of the parsed option. */
788    
789     int error = 0;
790     struct gengetopt_args_info local_args_info;
791 gezelter 1390
792     int override;
793     int initialize;
794     int check_required;
795     int check_ambiguity;
796    
797     package_name = argv[0];
798    
799     override = params->override;
800     initialize = params->initialize;
801     check_required = params->check_required;
802     check_ambiguity = params->check_ambiguity;
803 gezelter 929
804     if (initialize)
805     cmdline_parser_init (args_info);
806    
807     cmdline_parser_init (&local_args_info);
808    
809 tim 310 optarg = 0;
810 chuckv 1128 optind = 0;
811 gezelter 1390 opterr = params->print_errors;
812 tim 310 optopt = '?';
813    
814     while (1)
815     {
816     int option_index = 0;
817    
818     static struct option long_options[] = {
819     { "help", 0, NULL, 'h' },
820     { "version", 0, NULL, 'V' },
821     { "input", 1, NULL, 'i' },
822     { "output", 1, NULL, 'o' },
823 tim 311 { "step", 1, NULL, 'n' },
824 gezelter 1041 { "nbins", 1, NULL, 'b' },
825 xsun 967 { "nbins_x", 1, NULL, 'x' },
826     { "nbins_y", 1, NULL, 'y' },
827 kstocke1 1531 { "nbins_z", 1, NULL, 0 },
828 tim 310 { "nanglebins", 1, NULL, 'a' },
829 chuckv 1445 { "rcut", 1, NULL, 'c' },
830 gezelter 1454 { "dz", 1, NULL, 0 },
831 gezelter 1039 { "length", 1, NULL, 0 },
832 chuckv 1445 { "zlength", 1, NULL, 0 },
833 gezelter 929 { "zoffset", 1, NULL, 'z' },
834 tim 310 { "sele1", 1, NULL, 0 },
835     { "sele2", 1, NULL, 0 },
836 tim 544 { "sele3", 1, NULL, 0 },
837 tim 369 { "refsele", 1, NULL, 0 },
838 gezelter 1390 { "comsele", 1, NULL, 0 },
839 tim 544 { "molname", 1, NULL, 0 },
840     { "begin", 1, NULL, 0 },
841     { "end", 1, NULL, 0 },
842 chuckv 1091 { "radius", 1, NULL, 0 },
843 gezelter 1041 { "bo", 0, NULL, 0 },
844 chuckv 1128 { "bor", 0, NULL, 0 },
845 chuckv 1180 { "bad", 0, NULL, 0 },
846 gezelter 1513 { "count", 0, NULL, 0 },
847 gezelter 1039 { "gofr", 0, NULL, 'g' },
848 xsun 1213 { "gofz", 0, NULL, 0 },
849 tim 310 { "r_theta", 0, NULL, 0 },
850     { "r_omega", 0, NULL, 0 },
851 kstocke1 1531 { "r_z", 0, NULL, 0 },
852 tim 310 { "theta_omega", 0, NULL, 0 },
853 tim 369 { "gxyz", 0, NULL, 0 },
854 gezelter 1454 { "twodgofr", 0, NULL, 0 },
855 gezelter 1039 { "p2", 0, NULL, 'p' },
856 xsun 980 { "rp2", 0, NULL, 0 },
857 gezelter 1039 { "scd", 0, NULL, 's' },
858     { "density", 0, NULL, 'd' },
859 tim 840 { "slab_density", 0, NULL, 0 },
860 gezelter 1413 { "p_angle", 0, NULL, 0 },
861 xsun 955 { "hxy", 0, NULL, 0 },
862 chuckv 1091 { "rho_r", 0, NULL, 0 },
863 kstocke1 1522 { "angle_r", 0, NULL, 0 },
864 chuckv 1180 { "hullvol", 0, NULL, 0 },
865 kstocke1 1531 { "tet_param", 0, NULL, 'Q' },
866     { 0, 0, 0, 0 }
867 tim 310 };
868    
869 kstocke1 1531 c = getopt_long (argc, argv, "hVi:o:n:b:x:y:a:c:z:gpsdQ", long_options, &option_index);
870 tim 310
871     if (c == -1) break; /* Exit from `while (1)' loop. */
872    
873     switch (c)
874     {
875     case 'h': /* Print help and exit. */
876     cmdline_parser_print_help ();
877 gezelter 929 cmdline_parser_free (&local_args_info);
878 tim 310 exit (EXIT_SUCCESS);
879    
880     case 'V': /* Print version and exit. */
881     cmdline_parser_print_version ();
882 gezelter 929 cmdline_parser_free (&local_args_info);
883 tim 310 exit (EXIT_SUCCESS);
884    
885     case 'i': /* input dump file. */
886 gezelter 1390
887    
888     if (update_arg( (void *)&(args_info->input_arg),
889     &(args_info->input_orig), &(args_info->input_given),
890     &(local_args_info.input_given), optarg, 0, 0, ARG_STRING,
891     check_ambiguity, override, 0, 0,
892     "input", 'i',
893     additional_error))
894     goto failure;
895    
896 tim 310 break;
897     case 'o': /* output file name. */
898 gezelter 1390
899    
900     if (update_arg( (void *)&(args_info->output_arg),
901     &(args_info->output_orig), &(args_info->output_given),
902     &(local_args_info.output_given), optarg, 0, 0, ARG_STRING,
903     check_ambiguity, override, 0, 0,
904     "output", 'o',
905     additional_error))
906     goto failure;
907    
908 tim 310 break;
909 tim 311 case 'n': /* process every n frame. */
910 gezelter 1390
911    
912     if (update_arg( (void *)&(args_info->step_arg),
913     &(args_info->step_orig), &(args_info->step_given),
914     &(local_args_info.step_given), optarg, 0, "1", ARG_INT,
915     check_ambiguity, override, 0, 0,
916     "step", 'n',
917     additional_error))
918 gezelter 929 goto failure;
919 gezelter 1390
920 tim 310 break;
921 gezelter 1041 case 'b': /* number of bins (general purpose). */
922 gezelter 1390
923    
924     if (update_arg( (void *)&(args_info->nbins_arg),
925     &(args_info->nbins_orig), &(args_info->nbins_given),
926     &(local_args_info.nbins_given), optarg, 0, "100", ARG_INT,
927     check_ambiguity, override, 0, 0,
928     "nbins", 'b',
929     additional_error))
930 gezelter 929 goto failure;
931 gezelter 1390
932 tim 310 break;
933 xsun 955 case 'x': /* number of bins in x axis. */
934 gezelter 1390
935    
936     if (update_arg( (void *)&(args_info->nbins_x_arg),
937     &(args_info->nbins_x_orig), &(args_info->nbins_x_given),
938     &(local_args_info.nbins_x_given), optarg, 0, "100", ARG_INT,
939     check_ambiguity, override, 0, 0,
940     "nbins_x", 'x',
941     additional_error))
942 xsun 955 goto failure;
943 kstocke1 1531
944 xsun 955 break;
945     case 'y': /* number of bins in y axis. */
946 gezelter 1390
947    
948     if (update_arg( (void *)&(args_info->nbins_y_arg),
949     &(args_info->nbins_y_orig), &(args_info->nbins_y_given),
950     &(local_args_info.nbins_y_given), optarg, 0, "100", ARG_INT,
951     check_ambiguity, override, 0, 0,
952     "nbins_y", 'y',
953     additional_error))
954 xsun 955 goto failure;
955 gezelter 1390
956 xsun 955 break;
957 tim 310 case 'a': /* number of bins for cos(angle). */
958 gezelter 1390
959    
960     if (update_arg( (void *)&(args_info->nanglebins_arg),
961     &(args_info->nanglebins_orig), &(args_info->nanglebins_given),
962     &(local_args_info.nanglebins_given), optarg, 0, "50", ARG_INT,
963     check_ambiguity, override, 0, 0,
964     "nanglebins", 'a',
965     additional_error))
966 gezelter 929 goto failure;
967 gezelter 1390
968 tim 310 break;
969 gezelter 1039 case 'c': /* cutoff radius (rcut). */
970 gezelter 1390
971    
972     if (update_arg( (void *)&(args_info->rcut_arg),
973     &(args_info->rcut_orig), &(args_info->rcut_given),
974     &(local_args_info.rcut_given), optarg, 0, 0, ARG_DOUBLE,
975     check_ambiguity, override, 0, 0,
976     "rcut", 'c',
977     additional_error))
978 gezelter 1039 goto failure;
979 gezelter 1390
980 gezelter 1039 break;
981 gezelter 929 case 'z': /* Where to set the zero for the slab_density calculation. */
982 gezelter 1390
983    
984     if (update_arg( (void *)&(args_info->zoffset_arg),
985     &(args_info->zoffset_orig), &(args_info->zoffset_given),
986     &(local_args_info.zoffset_given), optarg, 0, "0", ARG_DOUBLE,
987     check_ambiguity, override, 0, 0,
988     "zoffset", 'z',
989     additional_error))
990 gezelter 929 goto failure;
991 gezelter 1390
992 gezelter 929 break;
993 gezelter 1039 case 'g': /* g(r). */
994 gezelter 1390
995 gezelter 1039 if (args_info->staticProps_group_counter && override)
996     reset_group_staticProps (args_info);
997     args_info->staticProps_group_counter += 1;
998 gezelter 1390
999     if (update_arg( 0 ,
1000     0 , &(args_info->gofr_given),
1001     &(local_args_info.gofr_given), optarg, 0, 0, ARG_NO,
1002     check_ambiguity, override, 0, 0,
1003     "gofr", 'g',
1004     additional_error))
1005     goto failure;
1006    
1007 gezelter 1039 break;
1008     case 'p': /* p2 order parameter (--sele1 and --sele2 must be specified). */
1009 gezelter 1390
1010 gezelter 1039 if (args_info->staticProps_group_counter && override)
1011     reset_group_staticProps (args_info);
1012     args_info->staticProps_group_counter += 1;
1013 gezelter 1390
1014     if (update_arg( 0 ,
1015     0 , &(args_info->p2_given),
1016     &(local_args_info.p2_given), optarg, 0, 0, ARG_NO,
1017     check_ambiguity, override, 0, 0,
1018     "p2", 'p',
1019     additional_error))
1020     goto failure;
1021    
1022 gezelter 1039 break;
1023     case 's': /* scd order parameter (either --sele1, --sele2, --sele3 are specified or --molname, --begin, --end are specified). */
1024 gezelter 1390
1025 gezelter 1039 if (args_info->staticProps_group_counter && override)
1026     reset_group_staticProps (args_info);
1027     args_info->staticProps_group_counter += 1;
1028 gezelter 1390
1029     if (update_arg( 0 ,
1030     0 , &(args_info->scd_given),
1031     &(local_args_info.scd_given), optarg, 0, 0, ARG_NO,
1032     check_ambiguity, override, 0, 0,
1033     "scd", 's',
1034     additional_error))
1035     goto failure;
1036    
1037 gezelter 1039 break;
1038     case 'd': /* density plot. */
1039 gezelter 1390
1040 gezelter 1039 if (args_info->staticProps_group_counter && override)
1041     reset_group_staticProps (args_info);
1042     args_info->staticProps_group_counter += 1;
1043 gezelter 1390
1044     if (update_arg( 0 ,
1045     0 , &(args_info->density_given),
1046     &(local_args_info.density_given), optarg, 0, 0, ARG_NO,
1047     check_ambiguity, override, 0, 0,
1048     "density", 'd',
1049     additional_error))
1050     goto failure;
1051    
1052 gezelter 1039 break;
1053 kstocke1 1531 case 'Q': /* tetrahedrality order parameter. */
1054    
1055     if (args_info->staticProps_group_counter && override)
1056     reset_group_staticProps (args_info);
1057     args_info->staticProps_group_counter += 1;
1058    
1059     if (update_arg( 0 ,
1060     0 , &(args_info->tet_param_given),
1061     &(local_args_info.tet_param_given), optarg, 0, 0, ARG_NO,
1062     check_ambiguity, override, 0, 0,
1063     "tet_param", 'Q',
1064     additional_error))
1065     goto failure;
1066    
1067     break;
1068 gezelter 1039
1069 tim 310 case 0: /* Long option with no short option */
1070 kstocke1 1531 /* number of bins in z axis. */
1071     if (strcmp (long_options[option_index].name, "nbins_z") == 0)
1072     {
1073    
1074    
1075     if (update_arg( (void *)&(args_info->nbins_z_arg),
1076     &(args_info->nbins_z_orig), &(args_info->nbins_z_given),
1077     &(local_args_info.nbins_z_given), optarg, 0, "100", ARG_INT,
1078     check_ambiguity, override, 0, 0,
1079     "nbins_z", '-',
1080     additional_error))
1081     goto failure;
1082    
1083     }
1084 gezelter 1454 /* slab width (dz). */
1085     else if (strcmp (long_options[option_index].name, "dz") == 0)
1086     {
1087    
1088    
1089     if (update_arg( (void *)&(args_info->dz_arg),
1090     &(args_info->dz_orig), &(args_info->dz_given),
1091     &(local_args_info.dz_given), optarg, 0, 0, ARG_DOUBLE,
1092     check_ambiguity, override, 0, 0,
1093     "dz", '-',
1094     additional_error))
1095     goto failure;
1096    
1097     }
1098 gezelter 1039 /* maximum length (Defaults to 1/2 smallest length of first frame). */
1099 kstocke1 1531 else if (strcmp (long_options[option_index].name, "length") == 0)
1100 gezelter 1039 {
1101 gezelter 1390
1102    
1103     if (update_arg( (void *)&(args_info->length_arg),
1104     &(args_info->length_orig), &(args_info->length_given),
1105     &(local_args_info.length_given), optarg, 0, 0, ARG_DOUBLE,
1106     check_ambiguity, override, 0, 0,
1107     "length", '-',
1108     additional_error))
1109 gezelter 1039 goto failure;
1110 gezelter 1390
1111 gezelter 1039 }
1112 chuckv 1445 /* maximum length (Defaults to 1/2 smallest length of first frame). */
1113     else if (strcmp (long_options[option_index].name, "zlength") == 0)
1114     {
1115    
1116    
1117     if (update_arg( (void *)&(args_info->zlength_arg),
1118     &(args_info->zlength_orig), &(args_info->zlength_given),
1119     &(local_args_info.zlength_given), optarg, 0, 0, ARG_DOUBLE,
1120     check_ambiguity, override, 0, 0,
1121     "zlength", '-',
1122     additional_error))
1123     goto failure;
1124    
1125     }
1126 tim 544 /* select the first stuntdouble set. */
1127 gezelter 1039 else if (strcmp (long_options[option_index].name, "sele1") == 0)
1128 tim 543 {
1129 gezelter 1390
1130    
1131     if (update_arg( (void *)&(args_info->sele1_arg),
1132     &(args_info->sele1_orig), &(args_info->sele1_given),
1133     &(local_args_info.sele1_given), optarg, 0, 0, ARG_STRING,
1134     check_ambiguity, override, 0, 0,
1135     "sele1", '-',
1136     additional_error))
1137     goto failure;
1138    
1139 tim 543 }
1140 tim 544 /* select the second stuntdouble set. */
1141 tim 310 else if (strcmp (long_options[option_index].name, "sele2") == 0)
1142 tim 543 {
1143 gezelter 1390
1144    
1145     if (update_arg( (void *)&(args_info->sele2_arg),
1146     &(args_info->sele2_orig), &(args_info->sele2_given),
1147     &(local_args_info.sele2_given), optarg, 0, 0, ARG_STRING,
1148     check_ambiguity, override, 0, 0,
1149     "sele2", '-',
1150     additional_error))
1151     goto failure;
1152    
1153 tim 543 }
1154 tim 544 /* select the third stuntdouble set. */
1155     else if (strcmp (long_options[option_index].name, "sele3") == 0)
1156     {
1157 gezelter 1390
1158    
1159     if (update_arg( (void *)&(args_info->sele3_arg),
1160     &(args_info->sele3_orig), &(args_info->sele3_given),
1161     &(local_args_info.sele3_given), optarg, 0, 0, ARG_STRING,
1162     check_ambiguity, override, 0, 0,
1163     "sele3", '-',
1164     additional_error))
1165     goto failure;
1166    
1167 tim 544 }
1168 tim 369 /* select reference (use and only use with --gxyz). */
1169     else if (strcmp (long_options[option_index].name, "refsele") == 0)
1170 tim 543 {
1171 gezelter 1390
1172    
1173     if (update_arg( (void *)&(args_info->refsele_arg),
1174     &(args_info->refsele_orig), &(args_info->refsele_given),
1175     &(local_args_info.refsele_given), optarg, 0, 0, ARG_STRING,
1176     check_ambiguity, override, 0, 0,
1177     "refsele", '-',
1178     additional_error))
1179     goto failure;
1180    
1181 tim 543 }
1182 gezelter 1390 /* select stunt doubles for center-of-mass reference point. */
1183     else if (strcmp (long_options[option_index].name, "comsele") == 0)
1184     {
1185    
1186    
1187     if (update_arg( (void *)&(args_info->comsele_arg),
1188     &(args_info->comsele_orig), &(args_info->comsele_given),
1189     &(local_args_info.comsele_given), optarg, 0, 0, ARG_STRING,
1190     check_ambiguity, override, 0, 0,
1191     "comsele", '-',
1192     additional_error))
1193     goto failure;
1194    
1195     }
1196 tim 544 /* molecule name. */
1197     else if (strcmp (long_options[option_index].name, "molname") == 0)
1198     {
1199 gezelter 1390
1200    
1201     if (update_arg( (void *)&(args_info->molname_arg),
1202     &(args_info->molname_orig), &(args_info->molname_given),
1203     &(local_args_info.molname_given), optarg, 0, 0, ARG_STRING,
1204     check_ambiguity, override, 0, 0,
1205     "molname", '-',
1206     additional_error))
1207     goto failure;
1208    
1209 tim 544 }
1210 gezelter 1039 /* begin internal index. */
1211 tim 544 else if (strcmp (long_options[option_index].name, "begin") == 0)
1212     {
1213 gezelter 1390
1214    
1215     if (update_arg( (void *)&(args_info->begin_arg),
1216     &(args_info->begin_orig), &(args_info->begin_given),
1217     &(local_args_info.begin_given), optarg, 0, 0, ARG_INT,
1218     check_ambiguity, override, 0, 0,
1219     "begin", '-',
1220     additional_error))
1221 gezelter 929 goto failure;
1222 gezelter 1390
1223 tim 544 }
1224     /* end internal index. */
1225     else if (strcmp (long_options[option_index].name, "end") == 0)
1226     {
1227 gezelter 1390
1228    
1229     if (update_arg( (void *)&(args_info->end_arg),
1230     &(args_info->end_orig), &(args_info->end_given),
1231     &(local_args_info.end_given), optarg, 0, 0, ARG_INT,
1232     check_ambiguity, override, 0, 0,
1233     "end", '-',
1234     additional_error))
1235 gezelter 929 goto failure;
1236 gezelter 1390
1237 tim 544 }
1238 chuckv 1091 /* nanoparticle radius. */
1239     else if (strcmp (long_options[option_index].name, "radius") == 0)
1240     {
1241 gezelter 1390
1242    
1243     if (update_arg( (void *)&(args_info->radius_arg),
1244     &(args_info->radius_orig), &(args_info->radius_given),
1245     &(local_args_info.radius_given), optarg, 0, 0, ARG_DOUBLE,
1246     check_ambiguity, override, 0, 0,
1247     "radius", '-',
1248     additional_error))
1249 chuckv 1091 goto failure;
1250 gezelter 1390
1251 chuckv 1091 }
1252 chuckv 1128 /* bond order parameter (--rcut must be specified). */
1253 gezelter 1041 else if (strcmp (long_options[option_index].name, "bo") == 0)
1254     {
1255 gezelter 1390
1256 gezelter 1041 if (args_info->staticProps_group_counter && override)
1257     reset_group_staticProps (args_info);
1258     args_info->staticProps_group_counter += 1;
1259 gezelter 1390
1260     if (update_arg( 0 ,
1261     0 , &(args_info->bo_given),
1262     &(local_args_info.bo_given), optarg, 0, 0, ARG_NO,
1263     check_ambiguity, override, 0, 0,
1264     "bo", '-',
1265     additional_error))
1266     goto failure;
1267    
1268 gezelter 1041 }
1269 chuckv 1128 /* bond order parameter as a function of radius (--rcut must be specified). */
1270     else if (strcmp (long_options[option_index].name, "bor") == 0)
1271     {
1272 gezelter 1390
1273 chuckv 1128 if (args_info->staticProps_group_counter && override)
1274     reset_group_staticProps (args_info);
1275     args_info->staticProps_group_counter += 1;
1276 gezelter 1390
1277     if (update_arg( 0 ,
1278     0 , &(args_info->bor_given),
1279     &(local_args_info.bor_given), optarg, 0, 0, ARG_NO,
1280     check_ambiguity, override, 0, 0,
1281     "bor", '-',
1282     additional_error))
1283     goto failure;
1284    
1285 chuckv 1128 }
1286 chuckv 1180 /* N(theta) bond angle density within (--rcut must be specified). */
1287     else if (strcmp (long_options[option_index].name, "bad") == 0)
1288     {
1289 gezelter 1390
1290 chuckv 1180 if (args_info->staticProps_group_counter && override)
1291     reset_group_staticProps (args_info);
1292     args_info->staticProps_group_counter += 1;
1293 gezelter 1390
1294     if (update_arg( 0 ,
1295     0 , &(args_info->bad_given),
1296     &(local_args_info.bad_given), optarg, 0, 0, ARG_NO,
1297     check_ambiguity, override, 0, 0,
1298     "bad", '-',
1299     additional_error))
1300     goto failure;
1301    
1302 chuckv 1180 }
1303 gezelter 1513 /* count of molecules matching selection criteria (and associated statistics). */
1304     else if (strcmp (long_options[option_index].name, "count") == 0)
1305     {
1306    
1307     if (args_info->staticProps_group_counter && override)
1308     reset_group_staticProps (args_info);
1309     args_info->staticProps_group_counter += 1;
1310    
1311     if (update_arg( 0 ,
1312     0 , &(args_info->count_given),
1313     &(local_args_info.count_given), optarg, 0, 0, ARG_NO,
1314     check_ambiguity, override, 0, 0,
1315     "count", '-',
1316     additional_error))
1317     goto failure;
1318    
1319     }
1320 xsun 1213 /* g(z). */
1321     else if (strcmp (long_options[option_index].name, "gofz") == 0)
1322     {
1323 gezelter 1390
1324 xsun 1213 if (args_info->staticProps_group_counter && override)
1325     reset_group_staticProps (args_info);
1326     args_info->staticProps_group_counter += 1;
1327 gezelter 1390
1328     if (update_arg( 0 ,
1329     0 , &(args_info->gofz_given),
1330     &(local_args_info.gofz_given), optarg, 0, 0, ARG_NO,
1331     check_ambiguity, override, 0, 0,
1332     "gofz", '-',
1333     additional_error))
1334     goto failure;
1335    
1336 xsun 1213 }
1337 tim 310 /* g(r, cos(theta)). */
1338     else if (strcmp (long_options[option_index].name, "r_theta") == 0)
1339 tim 543 {
1340 gezelter 1390
1341 gezelter 929 if (args_info->staticProps_group_counter && override)
1342     reset_group_staticProps (args_info);
1343     args_info->staticProps_group_counter += 1;
1344 gezelter 1390
1345     if (update_arg( 0 ,
1346     0 , &(args_info->r_theta_given),
1347     &(local_args_info.r_theta_given), optarg, 0, 0, ARG_NO,
1348     check_ambiguity, override, 0, 0,
1349     "r_theta", '-',
1350     additional_error))
1351     goto failure;
1352    
1353 tim 543 }
1354 tim 310 /* g(r, cos(omega)). */
1355     else if (strcmp (long_options[option_index].name, "r_omega") == 0)
1356 tim 543 {
1357 gezelter 1390
1358 gezelter 929 if (args_info->staticProps_group_counter && override)
1359     reset_group_staticProps (args_info);
1360     args_info->staticProps_group_counter += 1;
1361 gezelter 1390
1362     if (update_arg( 0 ,
1363     0 , &(args_info->r_omega_given),
1364     &(local_args_info.r_omega_given), optarg, 0, 0, ARG_NO,
1365     check_ambiguity, override, 0, 0,
1366     "r_omega", '-',
1367     additional_error))
1368     goto failure;
1369    
1370 tim 543 }
1371 kstocke1 1531 /* g(r, z). */
1372     else if (strcmp (long_options[option_index].name, "r_z") == 0)
1373     {
1374    
1375     if (args_info->staticProps_group_counter && override)
1376     reset_group_staticProps (args_info);
1377     args_info->staticProps_group_counter += 1;
1378    
1379     if (update_arg( 0 ,
1380     0 , &(args_info->r_z_given),
1381     &(local_args_info.r_z_given), optarg, 0, 0, ARG_NO,
1382     check_ambiguity, override, 0, 0,
1383     "r_z", '-',
1384     additional_error))
1385     goto failure;
1386    
1387     }
1388 tim 310 /* g(cos(theta), cos(omega)). */
1389     else if (strcmp (long_options[option_index].name, "theta_omega") == 0)
1390 tim 543 {
1391 gezelter 1390
1392 gezelter 929 if (args_info->staticProps_group_counter && override)
1393     reset_group_staticProps (args_info);
1394     args_info->staticProps_group_counter += 1;
1395 gezelter 1390
1396     if (update_arg( 0 ,
1397     0 , &(args_info->theta_omega_given),
1398     &(local_args_info.theta_omega_given), optarg, 0, 0, ARG_NO,
1399     check_ambiguity, override, 0, 0,
1400     "theta_omega", '-',
1401     additional_error))
1402     goto failure;
1403    
1404 tim 543 }
1405 tim 310 /* g(x, y, z). */
1406 tim 369 else if (strcmp (long_options[option_index].name, "gxyz") == 0)
1407 tim 543 {
1408 gezelter 1390
1409 gezelter 929 if (args_info->staticProps_group_counter && override)
1410     reset_group_staticProps (args_info);
1411     args_info->staticProps_group_counter += 1;
1412 gezelter 1390
1413     if (update_arg( 0 ,
1414     0 , &(args_info->gxyz_given),
1415     &(local_args_info.gxyz_given), optarg, 0, 0, ARG_NO,
1416     check_ambiguity, override, 0, 0,
1417     "gxyz", '-',
1418     additional_error))
1419     goto failure;
1420    
1421 tim 543 }
1422 gezelter 1454 /* 2D g(r) (Slab width --dz must be specified). */
1423     else if (strcmp (long_options[option_index].name, "twodgofr") == 0)
1424     {
1425    
1426     if (args_info->staticProps_group_counter && override)
1427     reset_group_staticProps (args_info);
1428     args_info->staticProps_group_counter += 1;
1429    
1430     if (update_arg( 0 ,
1431     0 , &(args_info->twodgofr_given),
1432     &(local_args_info.twodgofr_given), optarg, 0, 0, ARG_NO,
1433     check_ambiguity, override, 0, 0,
1434     "twodgofr", '-',
1435     additional_error))
1436     goto failure;
1437    
1438     }
1439 xsun 980 /* rp2 order parameter (--sele1 and --sele2 must be specified). */
1440     else if (strcmp (long_options[option_index].name, "rp2") == 0)
1441     {
1442 gezelter 1390
1443 xsun 980 if (args_info->staticProps_group_counter && override)
1444     reset_group_staticProps (args_info);
1445     args_info->staticProps_group_counter += 1;
1446 gezelter 1390
1447     if (update_arg( 0 ,
1448     0 , &(args_info->rp2_given),
1449     &(local_args_info.rp2_given), optarg, 0, 0, ARG_NO,
1450     check_ambiguity, override, 0, 0,
1451     "rp2", '-',
1452     additional_error))
1453     goto failure;
1454    
1455 xsun 980 }
1456 gezelter 1039 /* slab density. */
1457 tim 840 else if (strcmp (long_options[option_index].name, "slab_density") == 0)
1458     {
1459 gezelter 1390
1460 gezelter 929 if (args_info->staticProps_group_counter && override)
1461     reset_group_staticProps (args_info);
1462     args_info->staticProps_group_counter += 1;
1463 gezelter 1390
1464     if (update_arg( 0 ,
1465     0 , &(args_info->slab_density_given),
1466     &(local_args_info.slab_density_given), optarg, 0, 0, ARG_NO,
1467     check_ambiguity, override, 0, 0,
1468     "slab_density", '-',
1469     additional_error))
1470     goto failure;
1471    
1472 tim 840 }
1473 gezelter 1413 /* p(cos(theta)). */
1474     else if (strcmp (long_options[option_index].name, "p_angle") == 0)
1475     {
1476    
1477     if (args_info->staticProps_group_counter && override)
1478     reset_group_staticProps (args_info);
1479     args_info->staticProps_group_counter += 1;
1480    
1481     if (update_arg( 0 ,
1482     0 , &(args_info->p_angle_given),
1483     &(local_args_info.p_angle_given), optarg, 0, 0, ARG_NO,
1484     check_ambiguity, override, 0, 0,
1485     "p_angle", '-',
1486     additional_error))
1487     goto failure;
1488    
1489     }
1490 gezelter 1039 /* hxy. */
1491 xsun 955 else if (strcmp (long_options[option_index].name, "hxy") == 0)
1492     {
1493 gezelter 1390
1494 xsun 955 if (args_info->staticProps_group_counter && override)
1495     reset_group_staticProps (args_info);
1496     args_info->staticProps_group_counter += 1;
1497 gezelter 1390
1498     if (update_arg( 0 ,
1499     0 , &(args_info->hxy_given),
1500     &(local_args_info.hxy_given), optarg, 0, 0, ARG_NO,
1501     check_ambiguity, override, 0, 0,
1502     "hxy", '-',
1503     additional_error))
1504     goto failure;
1505    
1506 xsun 955 }
1507 chuckv 1091 /* rho of R. */
1508     else if (strcmp (long_options[option_index].name, "rho_r") == 0)
1509     {
1510 gezelter 1390
1511 chuckv 1091 if (args_info->staticProps_group_counter && override)
1512     reset_group_staticProps (args_info);
1513     args_info->staticProps_group_counter += 1;
1514 gezelter 1390
1515     if (update_arg( 0 ,
1516     0 , &(args_info->rho_r_given),
1517     &(local_args_info.rho_r_given), optarg, 0, 0, ARG_NO,
1518     check_ambiguity, override, 0, 0,
1519     "rho_r", '-',
1520     additional_error))
1521     goto failure;
1522    
1523 chuckv 1091 }
1524 kstocke1 1522 /* angle of R. */
1525     else if (strcmp (long_options[option_index].name, "angle_r") == 0)
1526     {
1527    
1528     if (args_info->staticProps_group_counter && override)
1529     reset_group_staticProps (args_info);
1530     args_info->staticProps_group_counter += 1;
1531    
1532     if (update_arg( 0 ,
1533     0 , &(args_info->angle_r_given),
1534     &(local_args_info.angle_r_given), optarg, 0, 0, ARG_NO,
1535     check_ambiguity, override, 0, 0,
1536     "angle_r", '-',
1537     additional_error))
1538     goto failure;
1539    
1540     }
1541 chuckv 1180 /* hull volume of nanoparticle. */
1542     else if (strcmp (long_options[option_index].name, "hullvol") == 0)
1543     {
1544 gezelter 1390
1545 chuckv 1180 if (args_info->staticProps_group_counter && override)
1546     reset_group_staticProps (args_info);
1547     args_info->staticProps_group_counter += 1;
1548 gezelter 1390
1549     if (update_arg( 0 ,
1550     0 , &(args_info->hullvol_given),
1551     &(local_args_info.hullvol_given), optarg, 0, 0, ARG_NO,
1552     check_ambiguity, override, 0, 0,
1553     "hullvol", '-',
1554     additional_error))
1555     goto failure;
1556    
1557 chuckv 1180 }
1558 tim 840
1559 gezelter 929 break;
1560 tim 310 case '?': /* Invalid option. */
1561     /* `getopt_long' already printed an error message. */
1562 gezelter 929 goto failure;
1563 tim 310
1564     default: /* bug: option not considered. */
1565 gezelter 929 fprintf (stderr, "%s: option unknown: %c%s\n", CMDLINE_PARSER_PACKAGE, c, (additional_error ? additional_error : ""));
1566 tim 310 abort ();
1567     } /* switch */
1568     } /* while */
1569    
1570 gezelter 929 if (args_info->staticProps_group_counter > 1)
1571 tim 310 {
1572 kstocke1 1531 fprintf (stderr, "%s: %d options of group staticProps were given. One is required%s.\n", argv[0], args_info->staticProps_group_counter, (additional_error ? additional_error : ""));
1573 gezelter 929 error = 1;
1574 tim 310 }
1575    
1576    
1577 gezelter 929
1578     if (check_required)
1579 tim 310 {
1580 gezelter 929 error += cmdline_parser_required2 (args_info, argv[0], additional_error);
1581 tim 310 }
1582    
1583 gezelter 929 cmdline_parser_release (&local_args_info);
1584    
1585     if ( error )
1586     return (EXIT_FAILURE);
1587    
1588 gezelter 1454 if (optind < argc)
1589     {
1590     int i = 0 ;
1591     int found_prog_name = 0;
1592     /* whether program name, i.e., argv[0], is in the remaining args
1593     (this may happen with some implementations of getopt,
1594     but surely not with the one included by gengetopt) */
1595    
1596     i = optind;
1597     while (i < argc)
1598     if (argv[i++] == argv[0]) {
1599     found_prog_name = 1;
1600     break;
1601     }
1602     i = 0;
1603    
1604     args_info->inputs_num = argc - optind - found_prog_name;
1605     args_info->inputs =
1606     (char **)(malloc ((args_info->inputs_num)*sizeof(char *))) ;
1607     while (optind < argc)
1608     if (argv[optind++] != argv[0])
1609     args_info->inputs[ i++ ] = gengetopt_strdup (argv[optind-1]) ;
1610     }
1611    
1612 tim 310 return 0;
1613 gezelter 929
1614     failure:
1615    
1616     cmdline_parser_release (&local_args_info);
1617     return (EXIT_FAILURE);
1618 tim 310 }

Properties

Name Value
svn:keywords Author Id Revision Date