home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / magazine / pcmagazi / 1992 / 04 / app.cpp < prev    next >
C/C++ Source or Header  |  1992-02-05  |  3KB  |  142 lines

  1. // app.cpp RHS 6/7/91
  2.  
  3. #include<string.h>
  4. #include<dos.h>
  5. #include"app.h"
  6.  
  7. Application::Application(int argc, char **argv)
  8.     {
  9.     argcount = argc;
  10.     arglist = argv;
  11.     SetDefaults();
  12.     }
  13.  
  14. Application::Application(void)
  15.     {
  16.     argcount = _argc;
  17.     arglist = _argv;
  18.     SetDefaults();
  19.     }
  20.  
  21. char *Application::GetAppName(void)
  22.     {
  23.     return arglist[0];
  24.     }
  25.  
  26. void Application::GetAppName(char *buf)
  27.     {
  28.     strcpy(buf,GetAppName());
  29.     }
  30.  
  31.  
  32. BOOL Application::GetSwitchArg(char c)
  33.     {
  34.     if(GetSwitchArg(c,NULL) != NULL)
  35.         return TRUE;
  36.     return FALSE;
  37.     }
  38.  
  39. char *Application::GetSwitchArg(char c, char *buf)
  40.     {
  41.     nextarg = 1;                // set to search first time
  42.     oldc = c;                   // set char to search for
  43.     return _GetSwitchArg(buf);  // call search Engine
  44.     }
  45.  
  46. char *Application::GetNextSwitchArg(char *buf)
  47.     {
  48.         // NOTE: oldc set from previous search call
  49.     return _GetSwitchArg(buf);  // call search Engine for more of previous
  50.     }
  51.  
  52. char *Application::_GetSwitchArg(char *buf)
  53.     {
  54.     int i;
  55.     register char *s = &switches[0];
  56.     register char *s2 = &switches[1];
  57.  
  58.     if(oldc)
  59.         {
  60.         for( i = nextarg; i < argcount; i++)
  61.             if( (*s && (*s == arglist[i][0])) || (*s2 && (*s2 == arglist[i][0])) )
  62.                 if(arglist[i][1] == oldc)
  63.                     {
  64.                     if(buf)
  65.                         strcpy(buf,&arglist[i][2]);
  66.                     nextarg = i+1;
  67.                     return &arglist[i][2];
  68.                     }
  69.         if(buf)
  70.             *buf = '\0';
  71.         return NULL;
  72.         }
  73.     else
  74.         {
  75.         for(i = nextarg; i < argcount; i++)
  76.             if( (*s && (*s != arglist[i][0])) && (*s2 && (*s2 != arglist[i][0])) )
  77.                 {
  78.                 nextarg = i+1;
  79.                 return arglist[i];
  80.                 }
  81.         return NULL;
  82.         }
  83.     }
  84.  
  85. char *Application::Arg(void)
  86.     {
  87.     static char count;
  88.  
  89.     oldc = 0;
  90.     if(!count)
  91.         {
  92.         nextarg = 1;
  93.         count++;
  94.         }
  95.     return _GetSwitchArg(NULL);
  96.     }
  97.  
  98. char *Application::GetArg(void)
  99.     {
  100.     oldc = 0;                       // no switch search
  101.     nextarg = 1;                    // set for initial search
  102.     return _GetSwitchArg(NULL);     // call search engine
  103.     }
  104.  
  105. char *Application::GetNextArg(void)
  106.     {
  107.     oldc = 0;                       // no switch search
  108.     return _GetSwitchArg(NULL);     // call search engine
  109.     }
  110.  
  111.  
  112. void Application::SetSwitchChar(char c)
  113.     {
  114.     switches[0] = c;
  115.     }
  116.  
  117. void Application::AddSwitchChar(char c)
  118.     {
  119.     switches[1] = c;
  120.     }
  121.  
  122. char *Application::GetArg(int argno)
  123.     {
  124.     return arglist[argno+1];
  125.     }
  126.  
  127. int Application::GetArgCount(void)
  128.     {
  129.     return argcount-1;
  130.     }
  131.  
  132. int Application::GetParamCount(void)
  133.     {
  134.     return argcount;
  135.     }
  136.  
  137. char *Application::operator[](int argno)
  138.     {
  139.     return arglist[argno];
  140.     }
  141.  
  142.