ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1991
Committed: Wed Apr 23 20:34:17 2014 UTC (11 years ago) by gezelter
File size: 64069 byte(s)
Log Message:
added selection offset 2 for pAngle

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

Properties

Name Value
svn:keywords Author Id Revision Date