ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/applications/staticProps/StaticPropsCmd.cpp
Revision: 1442
Committed: Mon May 10 17:28:26 2010 UTC (14 years, 11 months ago) by gezelter
Content type: text/plain
Original Path: trunk/src/applications/staticProps/StaticPropsCmd.c
File size: 50309 byte(s)
Log Message:
Adding property set to svn entries

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

Properties

Name Value
svn:keywords Author Id Revision Date