ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1848
Committed: Mon Feb 4 21:13:46 2013 UTC (12 years, 2 months ago) by gezelter
File size: 59577 byte(s)
Log Message:
Merging changes from trunk branch into development.

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

Properties

Name Value
svn:keywords Author Id Revision Date