]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/include/getopt-long.hh
Merge branch 'master' into lilypond/translation
[lilypond.git] / flower / include / getopt-long.hh
index a069e284229a5c5ba330f398dd06e8c6578df586..52c819822c0facc1b68405ae4f7b6fc33378e840 100644 (file)
 #ifndef GETOPT_LONG_HH
 #define GETOPT_LONG_HH
 
-#include "string.hh"
+#include <cstdio>
 
-class ostream;
+#include "std-string.hh"
 
 /**
-  a struct this for initialising the commandline options.
- */
-struct Long_option_init {
-  bool take_arg;
-  char const * longname;
-  char        shortname;
-
-  String str () const;
-};
+   a struct this for initialising the commandline options.
+*/
+struct Long_option_init
+{
+  char const *take_arg_str0_;
+  char const *longname_str0_;
+
+  /*
+    = 0: don't take short version.
+  */
+  char shortname_char_;
+
+  char const *help_str0_;
+
+  string to_string () const;
+  string str_for_help () const;
+  //   NO constructor!
 
+  static int compare (Long_option_init const &, Long_option_init const &);
+  static string table_string (Long_option_init *);
+};
 
 /** C++ for version of long_getopt.  For processing GNU style command
-  line arguments.  No pointer (return values, arguments) contents are
-  copied.
-  
-  TODO: handle 
-  command  - , and command --
-  
-  argument reordering
-  */
-class Getopt_long {
+    line arguments.  No pointer (return values, arguments) contents are
+    copied.
+
+    TODO: handle
+    command  - , and command --
+
+    argument reordering
+*/
+class Getopt_long
+{
 
   /// the option info.
   const Long_option_init *option_a_;
-  int table_len_i_;
-    
-  /// if doing short option, arg_value_ch_a_a_[optind][optindind] is processed next.
-  int argument_index_i_;
+  int table_len_;
 
-  /// the option found
-  const Long_option_init *found_option_l_;
+  /// if doing short option, arg_value_char_a_a_[optind][optindind] is processed next.
+  int argument_index_;
 
+  /// the option found
+  const Long_option_init *found_option_;
 
-public: 
+public:
   /** errorcodes: no error, argument expected, no argument expected,
-    unknown option, illegal argument (eg. int expected).  */
+      unknown option, illegal argument (eg. int expected).  */
   enum Errorcod { E_NOERROR = 0, E_ARGEXPECT, E_NOARGEXPECT, E_UNKNOWNOPTION,
-                 E_ILLEGALARG } ;
+                  E_ILLEGALARG
+                };
 
   /// argument. Set to 0 if not present
-  char const * optional_argument_ch_C_;
+  char const *optional_argument_str0_;
 
   /// current error status
   Errorcod error_;
 
-  /// arg_value_ch_a_a_[array_index_i_] will be processed next.
-  int array_index_i_;
+  /// arg_value_char_a_a_[array_index_] will be processed next.
+  int array_index_;
 
   /// the arguments
-  char **arg_value_ch_a_a_;
+  char **arg_value_char_a_a_;
 
   /// the arg. count
-  int argument_count_i_;
+  int argument_count_;
 
-  ostream *error_ostream_l_;
+  FILE *error_out_;
 
 public:
   /// get ready for processing next error.
-  void next();
-  const Long_option_init *parselong();
-  const Long_option_init *parseshort();
-  void OK() const;
-  bool ok() const;
+  void next ();
+  const Long_option_init *parselong ();
+  const Long_option_init *parseshort ();
+  void OK () const;
+  bool ok () const;
 
   /// report an error and abort
   void report (Errorcod c);
 
-
   /// return an integer (with err. detect)
-  long argument_to_i();
-    
+  long get_argument_index ();
+
   /**
-    What to do with  errors. 
-    report messages on  #*os#, and abort.
-    if #os# is null, then do not report nor abort, just set #error#
-    */
-       
-  void seterror (ostream *os);
+     What to do with  errors.
+     report messages on  #*os#, and abort.
+     if #os# is null, then do not report nor abort, just set #error#
+  */
+
+  void seterror (FILE *os);
 
   /// construct: pass arguments and option info.
-  Getopt_long (int c,  char **v, Long_option_init *lo);
+  Getopt_long (int c, char **v, Long_option_init *lo);
 
-  /**  get the next option. 
-    @return pointer to next option found.
-    0 if error occurred, or next argument is no option.
-    */
-  const Long_option_init *operator()();
+  /**  get the next option.
+       @return pointer to next option found.
+       0 if error occurred, or next argument is no option.
+  */
+  const Long_option_init *operator () ();
 
-  char const *current_arg();
-  char const * get_next_arg();
+  char const *current_arg ();
+  char const *get_next_arg ();
 };
 
 #endif // GETOPT_LONG_HH