OpenCores
URL https://opencores.org/ocsvn/sqmusic/sqmusic/trunk

Subversion Repositories sqmusic

[/] [sqmusic/] [trunk/] [cpp/] [args.h] - Diff between revs 17 and 18

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 17 Rev 18
Line 45... Line 45...
class Args {
class Args {
  arg_vector_t& legal_args;
  arg_vector_t& legal_args;
  argument_t* def_arg;
  argument_t* def_arg;
  std::string program_name;
  std::string program_name;
  argument_t help_arg;
  argument_t help_arg;
public:
  void clean_args() {
 
    for( int j=0; j<legal_args.size(); j++ ) {
 
      argument_t& a = *legal_args[j];
 
      if( a.short_name=="-h" && a.long_name!="help" )
 
        { help_arg.short_name.clear(); break; } // remove -h for help if already used
 
    }
 
  }
  void throw_error( std::string x ) /*throw const char**/ { throw x.c_str(); }
  void throw_error( std::string x ) /*throw const char**/ { throw x.c_str(); }
 
public:
  Args( int argc, char *argv[], arg_vector_t& legal_args ) //throw const char *
  Args( int argc, char *argv[], arg_vector_t& legal_args ) //throw const char *
  : legal_args( legal_args ),
  : legal_args( legal_args ),
    help_arg( legal_args, "help", argument_t::flag, "Display usage information")
    help_arg( legal_args, "help", argument_t::flag, "Display usage information")
  {
  {
 
    clean_args(); // eliminate duplicated values
    // look for default argument
    // look for default argument
    def_arg=NULL;
    def_arg=NULL;
    for( int j=0; j<legal_args.size(); j++ ) {
    for( int j=0; j<legal_args.size(); j++ ) {
      if ( legal_args[j]->short_name.empty() && legal_args[j]->long_name.empty() )
      if ( legal_args[j]->short_name.empty() && legal_args[j]->long_name.empty() )
        if( def_arg==NULL ) def_arg = legal_args[j];
        if( def_arg==NULL ) def_arg = legal_args[j];
Line 130... Line 138...
      argument_t& a = *legal_args[j];
      argument_t& a = *legal_args[j];
      if( a.long_name.empty() && a.long_name.empty() ) continue;
      if( a.long_name.empty() && a.long_name.empty() ) continue;
      std::cout << "\t";
      std::cout << "\t";
      std::string aux;
      std::string aux;
      if( !a.long_name.empty() ) aux = a.long_name;
      if( !a.long_name.empty() ) aux = a.long_name;
      if( !a.long_name.empty() && !a.long_name.empty() ) aux += " | ";
      if( !a.long_name.empty() && !a.short_name.empty() ) aux += " | ";
      if( !a.short_name.empty() ) aux+= a.short_name;
      if( !a.short_name.empty() ) aux+= a.short_name;
      std::cout << brackets( a, aux );
      std::cout << brackets( a, aux );
      switch( a.type ) {
      switch( a.type ) {
        case argument_t::integer: std::cout << " followed by integer number. "; break;
        case argument_t::integer: std::cout << " followed by integer number. "; break;
        case argument_t::real   : std::cout << " followed by real number. "; break;
        case argument_t::real   : std::cout << " followed by real number. "; break;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.