ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1992
Committed: Thu Apr 24 17:30:00 2014 UTC (11 years ago) by gezelter
File size: 65141 byte(s)
Log Message:
Added FCCOfR and IcosahedralOfR analyzers to staticProps

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

Properties

Name Value
svn:keywords Author Id Revision Date