ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1655
Committed: Mon Oct 3 20:32:45 2011 UTC (13 years, 7 months ago) by gezelter
Original Path: branches/development/src/applications/staticProps/StaticPropsCmd.cpp
File size: 57286 byte(s)
Log Message:
Replacing most of the C-code with C++ code, and migrating the config.h
file into the PROJECT_BINARY_DIR so that we can have multiple builds
on the same architecture.

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

Properties

Name Value
svn:keywords Author Id Revision Date