ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1782
Committed: Wed Aug 22 02:28:28 2012 UTC (12 years, 8 months ago) by gezelter
File size: 58420 byte(s)
Log Message:
MERGE OpenMD development branch 1465:1781 into trunk

File Contents

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

Properties

Name Value
svn:keywords Author Id Revision Date