ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.c
Revision: 1522
Committed: Fri Nov 19 20:26:36 2010 UTC (14 years, 5 months ago) by kstocke1
Content type: text/plain
File size: 53359 byte(s)
Log Message:
new hotness

File Contents

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

Properties

Name Value
svn:keywords Author Id Revision Date