ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/applications/staticProps/StaticPropsCmd.c
Revision: 1213
Committed: Wed Jan 23 21:21:50 2008 UTC (17 years, 3 months ago) by xsun
Content type: text/plain
Original Path: trunk/src/applications/staticProps/StaticPropsCmd.c
File size: 54250 byte(s)
Log Message:
fixed a few correlation functions

File Contents

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