]> Creatis software - clitk.git/blob - cmake/gengetopt/skels/header.cc
Added FindGengetopt.cmake which compiles gengetopt if not installed.
[clitk.git] / cmake / gengetopt / skels / header.cc
1 /*
2  * File automatically generated by
3  * gengen 1.4 by Lorenzo Bettini 
4  * http://www.gnu.org/software/gengen
5  */
6
7 #include "header.h"
8
9 void
10 header_gen_class::generate_header(ostream &stream, unsigned int indent)
11 {
12   string indent_str (indent, ' ');
13   indent = 0;
14
15   stream << "/** ";
16   stream << "@";
17   stream << "file ";
18   generate_string (header_file_name, stream, indent + indent_str.length ());
19   stream << ".";
20   generate_string (header_file_ext, stream, indent + indent_str.length ());
21   stream << "\n";
22   stream << indent_str;
23   stream << " *  ";
24   stream << "@";
25   stream << "brief The header file for the command line option parser";
26   stream << "\n";
27   stream << indent_str;
28   stream << " *  generated by GNU Gengetopt ";
29   generate_string (generator_version, stream, indent + indent_str.length ());
30   stream << "\n";
31   stream << indent_str;
32   stream << " *  http://www.gnu.org/software/gengetopt.";
33   stream << "\n";
34   stream << indent_str;
35   stream << " *  DO NOT modify this file, since it can be overwritten";
36   stream << "\n";
37   stream << indent_str;
38   stream << " *  ";
39   stream << "@";
40   stream << "author GNU Gengetopt by Lorenzo Bettini */";
41   stream << "\n";
42   stream << indent_str;
43   stream << "\n";
44   stream << indent_str;
45   stream << "#ifndef ";
46   generate_string (ifndefname, stream, indent + indent_str.length ());
47   stream << "_H";
48   stream << "\n";
49   stream << indent_str;
50   stream << "#define ";
51   generate_string (ifndefname, stream, indent + indent_str.length ());
52   stream << "_H";
53   stream << "\n";
54   stream << indent_str;
55   stream << "\n";
56   stream << indent_str;
57   stream << "/* If we use autoconf.  */";
58   stream << "\n";
59   stream << indent_str;
60   stream << "#ifdef HAVE_CONFIG_H";
61   stream << "\n";
62   stream << indent_str;
63   stream << "#include \"config.h\"";
64   stream << "\n";
65   stream << indent_str;
66   stream << "#endif";
67   stream << "\n";
68   stream << indent_str;
69   stream << "\n";
70   stream << indent_str;
71   stream << "#include <stdio.h> /* for FILE */";
72   stream << "\n";
73   stream << indent_str;
74   stream << "\n";
75   stream << indent_str;
76   stream << "#ifdef __cplusplus";
77   stream << "\n";
78   stream << indent_str;
79   stream << "extern \"C\" {";
80   stream << "\n";
81   stream << indent_str;
82   stream << "#endif /* __cplusplus */";
83   stream << "\n";
84   stream << indent_str;
85   stream << "\n";
86   stream << indent_str;
87   stream << "#ifndef ";
88   generate_string (package_var_name, stream, indent + indent_str.length ());
89   stream << "\n";
90   stream << indent_str;
91   stream << "/** ";
92   stream << "@";
93   stream << "brief the program name (used for printing errors) */";
94   stream << "\n";
95   stream << indent_str;
96   stream << "#define ";
97   generate_string (package_var_name, stream, indent + indent_str.length ());
98   stream << " ";
99   generate_string (package_var_val, stream, indent + indent_str.length ());
100   stream << "\n";
101   stream << indent_str;
102   stream << "#endif";
103   stream << "\n";
104   stream << indent_str;
105   stream << "\n";
106   stream << indent_str;
107   stream << "#ifndef ";
108   generate_string (package_var_name, stream, indent + indent_str.length ());
109   stream << "_NAME";
110   stream << "\n";
111   stream << indent_str;
112   stream << "/** ";
113   stream << "@";
114   stream << "brief the complete program name (used for help and version) */";
115   stream << "\n";
116   stream << indent_str;
117   if (( package_var_val != "PACKAGE" ))
118     {
119       stream << "#define ";
120       generate_string (package_var_name, stream, indent + indent_str.length ());
121       stream << "_NAME ";
122       generate_string (package_var_val, stream, indent + indent_str.length ());
123       stream << "\n";
124       stream << indent_str;
125     }
126   else
127     {
128       stream << "#ifdef PACKAGE_NAME";
129       stream << "\n";
130       stream << indent_str;
131       stream << "#define ";
132       generate_string (package_var_name, stream, indent + indent_str.length ());
133       stream << "_NAME PACKAGE_NAME";
134       stream << "\n";
135       stream << indent_str;
136       stream << "#else";
137       stream << "\n";
138       stream << indent_str;
139       stream << "#define ";
140       generate_string (package_var_name, stream, indent + indent_str.length ());
141       stream << "_NAME PACKAGE";
142       stream << "\n";
143       stream << indent_str;
144       stream << "#endif";
145       stream << "\n";
146       stream << indent_str;
147     }
148   stream << "#endif";
149   stream << "\n";
150   stream << indent_str;
151   stream << "\n";
152   stream << indent_str;
153   stream << "#ifndef ";
154   generate_string (version_var_name, stream, indent + indent_str.length ());
155   stream << "\n";
156   stream << indent_str;
157   stream << "/** ";
158   stream << "@";
159   stream << "brief the program version */";
160   stream << "\n";
161   stream << indent_str;
162   stream << "#define ";
163   generate_string (version_var_name, stream, indent + indent_str.length ());
164   stream << " ";
165   generate_string (version_var_val, stream, indent + indent_str.length ());
166   stream << "\n";
167   stream << indent_str;
168   stream << "#endif";
169   stream << "\n";
170   stream << indent_str;
171   if (enum_types.size () > 0)
172     generate_string (enum_types, stream, indent + indent_str.length ());
173   else
174     generate_enum_types (stream, indent + indent_str.length ());
175   stream << indent_str;
176   stream << "\n";
177   stream << indent_str;
178   stream << "/** ";
179   stream << "@";
180   stream << "brief Where the command line options are stored */";
181   stream << "\n";
182   stream << indent_str;
183   stream << "struct ";
184   generate_string (args_info, stream, indent + indent_str.length ());
185   stream << "\n";
186   stream << indent_str;
187   stream << "{";
188   stream << "\n";
189   stream << indent_str;
190   indent = 2;
191   stream << "  ";
192   if (option_arg.size () > 0)
193     generate_string (option_arg, stream, indent + indent_str.length ());
194   else
195     generate_option_arg (stream, indent + indent_str.length ());
196   indent = 0;
197   stream << "\n";
198   stream << indent_str;
199   indent = 2;
200   stream << "  ";
201   if (option_given.size () > 0)
202     generate_string (option_given, stream, indent + indent_str.length ());
203   else
204     generate_option_given (stream, indent + indent_str.length ());
205   indent = 0;
206   stream << "\n";
207   stream << indent_str;
208   indent = 2;
209   if (group_counters.size () > 0)
210     generate_string (group_counters, stream, indent + indent_str.length ());
211   else
212     generate_group_counters (stream, indent + indent_str.length ());
213   indent = 0;
214   stream << indent_str;
215   indent = 2;
216   if (mode_counters.size () > 0)
217     generate_string (mode_counters, stream, indent + indent_str.length ());
218   else
219     generate_mode_counters (stream, indent + indent_str.length ());
220   indent = 0;
221   stream << indent_str;
222   stream << "} ;";
223   stream << "\n";
224   stream << indent_str;
225   stream << "\n";
226   stream << indent_str;
227   stream << "/** ";
228   stream << "@";
229   stream << "brief The additional parameters to pass to parser functions */";
230   stream << "\n";
231   stream << indent_str;
232   stream << "struct ";
233   generate_string (parser_name, stream, indent + indent_str.length ());
234   stream << "_params";
235   stream << "\n";
236   stream << indent_str;
237   stream << "{";
238   stream << "\n";
239   stream << indent_str;
240   stream << "  int override; /**< ";
241   stream << "@";
242   stream << "brief whether to override possibly already present options (default 0) */";
243   stream << "\n";
244   stream << indent_str;
245   stream << "  int initialize; /**< ";
246   stream << "@";
247   stream << "brief whether to initialize the option structure ";
248   generate_string (args_info, stream, indent + indent_str.length ());
249   stream << " (default 1) */";
250   stream << "\n";
251   stream << indent_str;
252   stream << "  int check_required; /**< ";
253   stream << "@";
254   stream << "brief whether to check that all required options were provided (default 1) */";
255   stream << "\n";
256   stream << indent_str;
257   stream << "  int check_ambiguity; /**< ";
258   stream << "@";
259   stream << "brief whether to check for options already specified in the option structure ";
260   generate_string (args_info, stream, indent + indent_str.length ());
261   stream << " (default 0) */";
262   stream << "\n";
263   stream << indent_str;
264   stream << "  int print_errors; /**< ";
265   stream << "@";
266   stream << "brief whether getopt_long should print an error message for a bad option (default 1) */";
267   stream << "\n";
268   stream << indent_str;
269   stream << "} ;";
270   stream << "\n";
271   stream << indent_str;
272   stream << "\n";
273   stream << indent_str;
274   stream << "/** ";
275   stream << "@";
276   stream << "brief the purpose string of the program */";
277   stream << "\n";
278   stream << indent_str;
279   stream << "extern const char *";
280   generate_string (args_info, stream, indent + indent_str.length ());
281   stream << "_purpose;";
282   stream << "\n";
283   stream << indent_str;
284   stream << "/** ";
285   stream << "@";
286   stream << "brief the usage string of the program */";
287   stream << "\n";
288   stream << indent_str;
289   stream << "extern const char *";
290   generate_string (args_info, stream, indent + indent_str.length ());
291   stream << "_usage;";
292   stream << "\n";
293   stream << indent_str;
294   stream << "/** ";
295   stream << "@";
296   stream << "brief all the lines making the help output */";
297   stream << "\n";
298   stream << indent_str;
299   stream << "extern const char *";
300   generate_string (args_info, stream, indent + indent_str.length ());
301   stream << "_help[];";
302   stream << "\n";
303   stream << indent_str;
304   if (has_hidden)
305     {
306       stream << "/** ";
307       stream << "@";
308       stream << "brief all the lines making the full help output (including hidden options) */";
309       stream << "\n";
310       stream << indent_str;
311       stream << "extern const char *";
312       generate_string (args_info, stream, indent + indent_str.length ());
313       stream << "_full_help[];";
314       stream << "\n";
315       stream << indent_str;
316     }
317   if (has_details)
318     {
319       stream << "/** ";
320       stream << "@";
321       stream << "brief all the lines making the detailed help output (including hidden options and details) */";
322       stream << "\n";
323       stream << indent_str;
324       stream << "extern const char *";
325       generate_string (args_info, stream, indent + indent_str.length ());
326       stream << "_detailed_help[];";
327       stream << "\n";
328       stream << indent_str;
329     }
330   stream << "\n";
331   stream << indent_str;
332   stream << "/**";
333   stream << "\n";
334   stream << indent_str;
335   stream << " * The command line parser";
336   stream << "\n";
337   stream << indent_str;
338   stream << " * ";
339   stream << "@";
340   stream << "param argc the number of command line options";
341   stream << "\n";
342   stream << indent_str;
343   stream << " * ";
344   stream << "@";
345   stream << "param argv the command line options";
346   stream << "\n";
347   stream << indent_str;
348   stream << " * ";
349   stream << "@";
350   stream << "param args_info the structure where option information will be stored";
351   stream << "\n";
352   stream << indent_str;
353   stream << " * ";
354   stream << "@";
355   stream << "return 0 if everything went fine, NON 0 if an error took place";
356   stream << "\n";
357   stream << indent_str;
358   stream << " */";
359   stream << "\n";
360   stream << indent_str;
361   stream << "int ";
362   generate_string (parser_name, stream, indent + indent_str.length ());
363   stream << " (int argc, char **argv,";
364   stream << "\n";
365   stream << indent_str;
366   stream << "  struct ";
367   generate_string (args_info, stream, indent + indent_str.length ());
368   stream << " *args_info);";
369   stream << "\n";
370   stream << indent_str;
371   stream << "\n";
372   stream << indent_str;
373   stream << "/**";
374   stream << "\n";
375   stream << indent_str;
376   stream << " * The command line parser (version with additional parameters - deprecated)";
377   stream << "\n";
378   stream << indent_str;
379   stream << " * ";
380   stream << "@";
381   stream << "param argc the number of command line options";
382   stream << "\n";
383   stream << indent_str;
384   stream << " * ";
385   stream << "@";
386   stream << "param argv the command line options";
387   stream << "\n";
388   stream << indent_str;
389   stream << " * ";
390   stream << "@";
391   stream << "param args_info the structure where option information will be stored";
392   stream << "\n";
393   stream << indent_str;
394   stream << " * ";
395   stream << "@";
396   stream << "param override whether to override possibly already present options";
397   stream << "\n";
398   stream << indent_str;
399   stream << " * ";
400   stream << "@";
401   stream << "param initialize whether to initialize the option structure my_args_info";
402   stream << "\n";
403   stream << indent_str;
404   stream << " * ";
405   stream << "@";
406   stream << "param check_required whether to check that all required options were provided";
407   stream << "\n";
408   stream << indent_str;
409   stream << " * ";
410   stream << "@";
411   stream << "return 0 if everything went fine, NON 0 if an error took place";
412   stream << "\n";
413   stream << indent_str;
414   stream << " * ";
415   stream << "@";
416   stream << "deprecated use ";
417   generate_string (parser_name, stream, indent + indent_str.length ());
418   stream << "_ext() instead";
419   stream << "\n";
420   stream << indent_str;
421   stream << " */";
422   stream << "\n";
423   stream << indent_str;
424   stream << "int ";
425   generate_string (parser_name, stream, indent + indent_str.length ());
426   stream << "2 (int argc, char **argv,";
427   stream << "\n";
428   stream << indent_str;
429   stream << "  struct ";
430   generate_string (args_info, stream, indent + indent_str.length ());
431   stream << " *args_info,";
432   stream << "\n";
433   stream << indent_str;
434   stream << "  int override, int initialize, int check_required);";
435   stream << "\n";
436   stream << indent_str;
437   stream << "\n";
438   stream << indent_str;
439   stream << "/**";
440   stream << "\n";
441   stream << indent_str;
442   stream << " * The command line parser (version with additional parameters)";
443   stream << "\n";
444   stream << indent_str;
445   stream << " * ";
446   stream << "@";
447   stream << "param argc the number of command line options";
448   stream << "\n";
449   stream << indent_str;
450   stream << " * ";
451   stream << "@";
452   stream << "param argv the command line options";
453   stream << "\n";
454   stream << indent_str;
455   stream << " * ";
456   stream << "@";
457   stream << "param args_info the structure where option information will be stored";
458   stream << "\n";
459   stream << indent_str;
460   stream << " * ";
461   stream << "@";
462   stream << "param params additional parameters for the parser";
463   stream << "\n";
464   stream << indent_str;
465   stream << " * ";
466   stream << "@";
467   stream << "return 0 if everything went fine, NON 0 if an error took place";
468   stream << "\n";
469   stream << indent_str;
470   stream << " */";
471   stream << "\n";
472   stream << indent_str;
473   stream << "int ";
474   generate_string (parser_name, stream, indent + indent_str.length ());
475   stream << "_ext (int argc, char **argv,";
476   stream << "\n";
477   stream << indent_str;
478   stream << "  struct ";
479   generate_string (args_info, stream, indent + indent_str.length ());
480   stream << " *args_info,";
481   stream << "\n";
482   stream << indent_str;
483   stream << "  struct ";
484   generate_string (parser_name, stream, indent + indent_str.length ());
485   stream << "_params *params);";
486   stream << "\n";
487   stream << indent_str;
488   stream << "\n";
489   stream << indent_str;
490   stream << "/**";
491   stream << "\n";
492   stream << indent_str;
493   stream << " * Save the contents of the option struct into an already open FILE stream.";
494   stream << "\n";
495   stream << indent_str;
496   stream << " * ";
497   stream << "@";
498   stream << "param outfile the stream where to dump options";
499   stream << "\n";
500   stream << indent_str;
501   stream << " * ";
502   stream << "@";
503   stream << "param args_info the option struct to dump";
504   stream << "\n";
505   stream << indent_str;
506   stream << " * ";
507   stream << "@";
508   stream << "return 0 if everything went fine, NON 0 if an error took place";
509   stream << "\n";
510   stream << indent_str;
511   stream << " */";
512   stream << "\n";
513   stream << indent_str;
514   stream << "int ";
515   generate_string (parser_name, stream, indent + indent_str.length ());
516   stream << "_dump(FILE *outfile,";
517   stream << "\n";
518   stream << indent_str;
519   stream << "  struct ";
520   generate_string (args_info, stream, indent + indent_str.length ());
521   stream << " *args_info);";
522   stream << "\n";
523   stream << indent_str;
524   stream << "\n";
525   stream << indent_str;
526   stream << "/**";
527   stream << "\n";
528   stream << indent_str;
529   stream << " * Save the contents of the option struct into a (text) file.";
530   stream << "\n";
531   stream << indent_str;
532   stream << " * This file can be read by the config file parser (if generated by gengetopt)";
533   stream << "\n";
534   stream << indent_str;
535   stream << " * ";
536   stream << "@";
537   stream << "param filename the file where to save";
538   stream << "\n";
539   stream << indent_str;
540   stream << " * ";
541   stream << "@";
542   stream << "param args_info the option struct to save";
543   stream << "\n";
544   stream << indent_str;
545   stream << " * ";
546   stream << "@";
547   stream << "return 0 if everything went fine, NON 0 if an error took place";
548   stream << "\n";
549   stream << indent_str;
550   stream << " */";
551   stream << "\n";
552   stream << indent_str;
553   stream << "int ";
554   generate_string (parser_name, stream, indent + indent_str.length ());
555   stream << "_file_save(const char *filename,";
556   stream << "\n";
557   stream << indent_str;
558   stream << "  struct ";
559   generate_string (args_info, stream, indent + indent_str.length ());
560   stream << " *args_info);";
561   stream << "\n";
562   stream << indent_str;
563   stream << "\n";
564   stream << indent_str;
565   stream << "/**";
566   stream << "\n";
567   stream << indent_str;
568   stream << " * Print the help";
569   stream << "\n";
570   stream << indent_str;
571   stream << " */";
572   stream << "\n";
573   stream << indent_str;
574   stream << "void ";
575   generate_string (parser_name, stream, indent + indent_str.length ());
576   stream << "_print_help(void);";
577   stream << "\n";
578   stream << indent_str;
579   if (has_hidden)
580     {
581       stream << "/**";
582       stream << "\n";
583       stream << indent_str;
584       stream << " * Print the full help (including hidden options)";
585       stream << "\n";
586       stream << indent_str;
587       stream << " */";
588       stream << "\n";
589       stream << indent_str;
590       stream << "void ";
591       generate_string (parser_name, stream, indent + indent_str.length ());
592       stream << "_print_full_help(void);";
593       stream << "\n";
594       stream << indent_str;
595     }
596   if (has_details)
597     {
598       stream << "/**";
599       stream << "\n";
600       stream << indent_str;
601       stream << " * Print the detailed help (including hidden options and details)";
602       stream << "\n";
603       stream << indent_str;
604       stream << " */";
605       stream << "\n";
606       stream << indent_str;
607       stream << "void ";
608       generate_string (parser_name, stream, indent + indent_str.length ());
609       stream << "_print_detailed_help(void);";
610       stream << "\n";
611       stream << indent_str;
612     }
613   stream << "/**";
614   stream << "\n";
615   stream << indent_str;
616   stream << " * Print the version";
617   stream << "\n";
618   stream << indent_str;
619   stream << " */";
620   stream << "\n";
621   stream << indent_str;
622   stream << "void ";
623   generate_string (parser_name, stream, indent + indent_str.length ());
624   stream << "_print_version(void);";
625   stream << "\n";
626   stream << indent_str;
627   stream << "\n";
628   stream << indent_str;
629   stream << "/**";
630   stream << "\n";
631   stream << indent_str;
632   stream << " * Initializes all the fields a ";
633   generate_string (parser_name, stream, indent + indent_str.length ());
634   stream << "_params structure ";
635   stream << "\n";
636   stream << indent_str;
637   stream << " * to their default values";
638   stream << "\n";
639   stream << indent_str;
640   stream << " * ";
641   stream << "@";
642   stream << "param params the structure to initialize";
643   stream << "\n";
644   stream << indent_str;
645   stream << " */";
646   stream << "\n";
647   stream << indent_str;
648   stream << "void ";
649   generate_string (parser_name, stream, indent + indent_str.length ());
650   stream << "_params_init(struct ";
651   generate_string (parser_name, stream, indent + indent_str.length ());
652   stream << "_params *params);";
653   stream << "\n";
654   stream << indent_str;
655   stream << "\n";
656   stream << indent_str;
657   stream << "/**";
658   stream << "\n";
659   stream << indent_str;
660   stream << " * Allocates dynamically a ";
661   generate_string (parser_name, stream, indent + indent_str.length ());
662   stream << "_params structure and initializes";
663   stream << "\n";
664   stream << indent_str;
665   stream << " * all its fields to their default values";
666   stream << "\n";
667   stream << indent_str;
668   stream << " * ";
669   stream << "@";
670   stream << "return the created and initialized ";
671   generate_string (parser_name, stream, indent + indent_str.length ());
672   stream << "_params structure";
673   stream << "\n";
674   stream << indent_str;
675   stream << " */";
676   stream << "\n";
677   stream << indent_str;
678   stream << "struct ";
679   generate_string (parser_name, stream, indent + indent_str.length ());
680   stream << "_params *";
681   generate_string (parser_name, stream, indent + indent_str.length ());
682   stream << "_params_create(void);";
683   stream << "\n";
684   stream << indent_str;
685   stream << "\n";
686   stream << indent_str;
687   stream << "/**";
688   stream << "\n";
689   stream << indent_str;
690   stream << " * Initializes the passed ";
691   generate_string (args_info, stream, indent + indent_str.length ());
692   stream << " structure's fields";
693   stream << "\n";
694   stream << indent_str;
695   stream << " * (also set default values for options that have a default)";
696   stream << "\n";
697   stream << indent_str;
698   stream << " * ";
699   stream << "@";
700   stream << "param args_info the structure to initialize";
701   stream << "\n";
702   stream << indent_str;
703   stream << " */";
704   stream << "\n";
705   stream << indent_str;
706   stream << "void ";
707   generate_string (parser_name, stream, indent + indent_str.length ());
708   stream << "_init (struct ";
709   generate_string (args_info, stream, indent + indent_str.length ());
710   stream << " *args_info);";
711   stream << "\n";
712   stream << indent_str;
713   stream << "/**";
714   stream << "\n";
715   stream << indent_str;
716   stream << " * Deallocates the string fields of the ";
717   generate_string (args_info, stream, indent + indent_str.length ());
718   stream << " structure";
719   stream << "\n";
720   stream << indent_str;
721   stream << " * (but does not deallocate the structure itself)";
722   stream << "\n";
723   stream << indent_str;
724   stream << " * ";
725   stream << "@";
726   stream << "param args_info the structure to deallocate";
727   stream << "\n";
728   stream << indent_str;
729   stream << " */";
730   stream << "\n";
731   stream << indent_str;
732   stream << "void ";
733   generate_string (parser_name, stream, indent + indent_str.length ());
734   stream << "_free (struct ";
735   generate_string (args_info, stream, indent + indent_str.length ());
736   stream << " *args_info);";
737   stream << "\n";
738   stream << indent_str;
739   stream << "\n";
740   stream << indent_str;
741   if (generate_config_parser)
742     {
743       stream << "/**";
744       stream << "\n";
745       stream << indent_str;
746       stream << " * The config file parser (deprecated version)";
747       stream << "\n";
748       stream << indent_str;
749       stream << " * ";
750       stream << "@";
751       stream << "param filename the name of the config file";
752       stream << "\n";
753       stream << indent_str;
754       stream << " * ";
755       stream << "@";
756       stream << "param args_info the structure where option information will be stored";
757       stream << "\n";
758       stream << indent_str;
759       stream << " * ";
760       stream << "@";
761       stream << "param override whether to override possibly already present options";
762       stream << "\n";
763       stream << indent_str;
764       stream << " * ";
765       stream << "@";
766       stream << "param initialize whether to initialize the option structure my_args_info";
767       stream << "\n";
768       stream << indent_str;
769       stream << " * ";
770       stream << "@";
771       stream << "param check_required whether to check that all required options were provided";
772       stream << "\n";
773       stream << indent_str;
774       stream << " * ";
775       stream << "@";
776       stream << "return 0 if everything went fine, NON 0 if an error took place";
777       stream << "\n";
778       stream << indent_str;
779       stream << " * ";
780       stream << "@";
781       stream << "deprecated use ";
782       generate_string (parser_name, stream, indent + indent_str.length ());
783       stream << "_config_file() instead";
784       stream << "\n";
785       stream << indent_str;
786       stream << " */";
787       stream << "\n";
788       stream << indent_str;
789       stream << "int ";
790       generate_string (parser_name, stream, indent + indent_str.length ());
791       stream << "_configfile (const char *filename,";
792       stream << "\n";
793       stream << indent_str;
794       stream << "  struct ";
795       generate_string (args_info, stream, indent + indent_str.length ());
796       stream << " *args_info,";
797       stream << "\n";
798       stream << indent_str;
799       stream << "  int override, int initialize, int check_required);";
800       stream << "\n";
801       stream << indent_str;
802       stream << "\n";
803       stream << indent_str;
804       stream << "/**";
805       stream << "\n";
806       stream << indent_str;
807       stream << " * The config file parser";
808       stream << "\n";
809       stream << indent_str;
810       stream << " * ";
811       stream << "@";
812       stream << "param filename the name of the config file";
813       stream << "\n";
814       stream << indent_str;
815       stream << " * ";
816       stream << "@";
817       stream << "param args_info the structure where option information will be stored";
818       stream << "\n";
819       stream << indent_str;
820       stream << " * ";
821       stream << "@";
822       stream << "param params additional parameters for the parser";
823       stream << "\n";
824       stream << indent_str;
825       stream << " * ";
826       stream << "@";
827       stream << "return 0 if everything went fine, NON 0 if an error took place";
828       stream << "\n";
829       stream << indent_str;
830       stream << " */";
831       stream << "\n";
832       stream << indent_str;
833       stream << "int ";
834       generate_string (parser_name, stream, indent + indent_str.length ());
835       stream << "_config_file (const char *filename,";
836       stream << "\n";
837       stream << indent_str;
838       stream << "  struct ";
839       generate_string (args_info, stream, indent + indent_str.length ());
840       stream << " *args_info,";
841       stream << "\n";
842       stream << indent_str;
843       stream << "  struct ";
844       generate_string (parser_name, stream, indent + indent_str.length ());
845       stream << "_params *params);";
846       stream << "\n";
847       stream << indent_str;
848       stream << "\n";
849       stream << indent_str;
850     }
851   if (generate_string_parser)
852     {
853       stream << "/**";
854       stream << "\n";
855       stream << indent_str;
856       stream << " * The string parser (interprets the passed string as a command line)";
857       stream << "\n";
858       stream << indent_str;
859       stream << " * ";
860       stream << "@";
861       stream << "param cmdline the command line stirng";
862       stream << "\n";
863       stream << indent_str;
864       stream << " * ";
865       stream << "@";
866       stream << "param args_info the structure where option information will be stored";
867       stream << "\n";
868       stream << indent_str;
869       stream << " * ";
870       stream << "@";
871       stream << "param prog_name the name of the program that will be used to print";
872       stream << "\n";
873       stream << indent_str;
874       stream << " *   possible errors";
875       stream << "\n";
876       stream << indent_str;
877       stream << " * ";
878       stream << "@";
879       stream << "return 0 if everything went fine, NON 0 if an error took place";
880       stream << "\n";
881       stream << indent_str;
882       stream << " */";
883       stream << "\n";
884       stream << indent_str;
885       stream << "int ";
886       generate_string (parser_name, stream, indent + indent_str.length ());
887       stream << "_string (const char *cmdline, struct ";
888       generate_string (args_info, stream, indent + indent_str.length ());
889       stream << " *args_info,";
890       stream << "\n";
891       stream << indent_str;
892       stream << "  const char *prog_name);";
893       stream << "\n";
894       stream << indent_str;
895       stream << "/**";
896       stream << "\n";
897       stream << indent_str;
898       stream << " * The string parser (version with additional parameters - deprecated)";
899       stream << "\n";
900       stream << indent_str;
901       stream << " * ";
902       stream << "@";
903       stream << "param cmdline the command line stirng";
904       stream << "\n";
905       stream << indent_str;
906       stream << " * ";
907       stream << "@";
908       stream << "param args_info the structure where option information will be stored";
909       stream << "\n";
910       stream << indent_str;
911       stream << " * ";
912       stream << "@";
913       stream << "param prog_name the name of the program that will be used to print";
914       stream << "\n";
915       stream << indent_str;
916       stream << " *   possible errors";
917       stream << "\n";
918       stream << indent_str;
919       stream << " * ";
920       stream << "@";
921       stream << "param override whether to override possibly already present options";
922       stream << "\n";
923       stream << indent_str;
924       stream << " * ";
925       stream << "@";
926       stream << "param initialize whether to initialize the option structure my_args_info";
927       stream << "\n";
928       stream << indent_str;
929       stream << " * ";
930       stream << "@";
931       stream << "param check_required whether to check that all required options were provided";
932       stream << "\n";
933       stream << indent_str;
934       stream << " * ";
935       stream << "@";
936       stream << "return 0 if everything went fine, NON 0 if an error took place";
937       stream << "\n";
938       stream << indent_str;
939       stream << " * ";
940       stream << "@";
941       stream << "deprecated use ";
942       generate_string (parser_name, stream, indent + indent_str.length ());
943       stream << "_string_ext() instead";
944       stream << "\n";
945       stream << indent_str;
946       stream << " */";
947       stream << "\n";
948       stream << indent_str;
949       stream << "int ";
950       generate_string (parser_name, stream, indent + indent_str.length ());
951       stream << "_string2 (const char *cmdline, struct ";
952       generate_string (args_info, stream, indent + indent_str.length ());
953       stream << " *args_info,";
954       stream << "\n";
955       stream << indent_str;
956       stream << "  const char *prog_name,";
957       stream << "\n";
958       stream << indent_str;
959       stream << "  int override, int initialize, int check_required);";
960       stream << "\n";
961       stream << indent_str;
962       stream << "/**";
963       stream << "\n";
964       stream << indent_str;
965       stream << " * The string parser (version with additional parameters)";
966       stream << "\n";
967       stream << indent_str;
968       stream << " * ";
969       stream << "@";
970       stream << "param cmdline the command line stirng";
971       stream << "\n";
972       stream << indent_str;
973       stream << " * ";
974       stream << "@";
975       stream << "param args_info the structure where option information will be stored";
976       stream << "\n";
977       stream << indent_str;
978       stream << " * ";
979       stream << "@";
980       stream << "param prog_name the name of the program that will be used to print";
981       stream << "\n";
982       stream << indent_str;
983       stream << " *   possible errors";
984       stream << "\n";
985       stream << indent_str;
986       stream << " * ";
987       stream << "@";
988       stream << "param params additional parameters for the parser";
989       stream << "\n";
990       stream << indent_str;
991       stream << " * ";
992       stream << "@";
993       stream << "return 0 if everything went fine, NON 0 if an error took place";
994       stream << "\n";
995       stream << indent_str;
996       stream << " */";
997       stream << "\n";
998       stream << indent_str;
999       stream << "int ";
1000       generate_string (parser_name, stream, indent + indent_str.length ());
1001       stream << "_string_ext (const char *cmdline, struct ";
1002       generate_string (args_info, stream, indent + indent_str.length ());
1003       stream << " *args_info,";
1004       stream << "\n";
1005       stream << indent_str;
1006       stream << "  const char *prog_name,";
1007       stream << "\n";
1008       stream << indent_str;
1009       stream << "  struct ";
1010       generate_string (parser_name, stream, indent + indent_str.length ());
1011       stream << "_params *params);";
1012       stream << "\n";
1013       stream << indent_str;
1014       stream << "\n";
1015       stream << indent_str;
1016     }
1017   stream << "/**";
1018   stream << "\n";
1019   stream << indent_str;
1020   stream << " * Checks that all the required options were specified";
1021   stream << "\n";
1022   stream << indent_str;
1023   stream << " * ";
1024   stream << "@";
1025   stream << "param args_info the structure to check";
1026   stream << "\n";
1027   stream << indent_str;
1028   stream << " * ";
1029   stream << "@";
1030   stream << "param prog_name the name of the program that will be used to print";
1031   stream << "\n";
1032   stream << indent_str;
1033   stream << " *   possible errors";
1034   stream << "\n";
1035   stream << indent_str;
1036   stream << " * ";
1037   stream << "@";
1038   stream << "return";
1039   stream << "\n";
1040   stream << indent_str;
1041   stream << " */";
1042   stream << "\n";
1043   stream << indent_str;
1044   stream << "int ";
1045   generate_string (parser_name, stream, indent + indent_str.length ());
1046   stream << "_required (struct ";
1047   generate_string (args_info, stream, indent + indent_str.length ());
1048   stream << " *args_info,";
1049   stream << "\n";
1050   stream << indent_str;
1051   stream << "  const char *prog_name);";
1052   stream << "\n";
1053   stream << indent_str;
1054   stream << "\n";
1055   stream << indent_str;
1056   if (option_values_decl.size () > 0)
1057     generate_string (option_values_decl, stream, indent + indent_str.length ());
1058   else
1059     generate_option_values_decl (stream, indent + indent_str.length ());
1060   stream << indent_str;
1061   stream << "\n";
1062   stream << indent_str;
1063   stream << "#ifdef __cplusplus";
1064   stream << "\n";
1065   stream << indent_str;
1066   stream << "}";
1067   stream << "\n";
1068   stream << indent_str;
1069   stream << "#endif /* __cplusplus */";
1070   stream << "\n";
1071   stream << indent_str;
1072   stream << "#endif /* ";
1073   generate_string (ifndefname, stream, indent + indent_str.length ());
1074   stream << "_H */";
1075   stream << "\n";
1076   stream << indent_str;
1077 }