home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / powergui / profile / advprof / vprofarg.cpp < prev    next >
Text File  |  1996-10-29  |  3KB  |  106 lines

  1. //************************************************************
  2. // GUI Profile Viewer Example
  3. //
  4. // Copyright (C) 1994, Law, Leong, Love, Olson, Tsuji.
  5. // Copyright (c) 1997 John Wiley & Sons, Inc. 
  6. // All Rights Reserved.
  7. //************************************************************
  8. #include <istring.hpp>
  9. #include <iostream.h>
  10. #include "vprofarg.hpp"
  11.  
  12. #define SYNTAX "Syntax is: viewprof prffile[.ini] "\
  13.                "[/?] [/s] [/u] [/a:app] [/k:key]" 
  14. #define MSG1 "You can't provide a file name with /s or /u"
  15. #define MSG2 "You can't use both /s and /u"
  16.  
  17. ViewProfileArgs :: ViewProfileArgs ( int argc, char *argv[] )
  18.   : type( none ),
  19.     app( "*" ),
  20.     k( "*" )
  21.   {
  22.   for ( int i = argc; i > 1; i-- )
  23.     {
  24.     IString
  25.       token = argv[i-1];
  26.     if ( token[1] == '/' )
  27.       switch ( token[2] )
  28.         {
  29.         case '?':
  30.           {
  31.           IString
  32.             help( SYNTAX "\n"
  33.                   "\tprffile - Profile to view\n"
  34.                   "\t/?  - Displays help\n"
  35.                   "\t/s  - View system profile\n"
  36.                   "\t/u  - View user profile\n"
  37.                   "\tapp - View application(s), default is *\n"
  38.                   "\tkey - View key(s), default is *" );
  39.           throw help;
  40.           }
  41.         case 's':
  42.           if ( type == file )
  43.             throw IString( MSG1 "\n" SYNTAX );
  44.           if ( type == user )
  45.             throw IString( MSG2 "\n" SYNTAX );
  46.           type = system;
  47.           break;
  48.         case 'u':
  49.           if ( type == file )
  50.             throw IString( MSG1 "\n" SYNTAX );
  51.           if ( type == system )
  52.             throw IString( MSG2 "\n" SYNTAX );
  53.           type = user;
  54.           break;
  55.         case 'a':
  56.           if ( app == "*" )
  57.             app = token.subString(4);
  58.           break;
  59.         case 'k':
  60.           if ( k == "*" )
  61.             k = token.subString(4);
  62.           break;
  63.         default:
  64.           {
  65.           IString
  66.             msg = "Syntax error; invalid option: ";
  67.           msg += token[2];
  68.           msg += "\n" SYNTAX;
  69.           throw msg;
  70.           }
  71.         }
  72.     else
  73.       {
  74.       if ( type == user || type == system )
  75.         throw IString( MSG1 "\n" SYNTAX );
  76.  
  77.       if ( name ==  "" )
  78.         name = token;
  79.       }
  80.     }
  81.   }
  82.  
  83. ViewProfileArgs :: ~ViewProfileArgs ()
  84.   {
  85.   }
  86.  
  87. ViewProfileArgs::ProfileType ViewProfileArgs :: profileType () const
  88.   {
  89.   return this->type;
  90.   }
  91.  
  92. IString ViewProfileArgs :: applicationName ( ) const
  93.   {
  94.   return this->app;
  95.   }
  96.  
  97. IString ViewProfileArgs :: key ( ) const
  98.   {
  99.   return this->k;
  100.   }
  101.  
  102. IString ViewProfileArgs :: profileName ( ) const
  103.   {
  104.   return this->name;
  105.   }
  106.