home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / cmdline.lha / cmdline / src / cmd / shell_arg.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-03  |  2.8 KB  |  104 lines

  1. //------------------------------------------------------------------------
  2. // ^FILE: shell_arg.c - implement a shell-script argument
  3. //
  4. // ^DESCRIPTION:
  5. //    This file implements the base class that is used for all
  6. //    shell-script command arguments.
  7. //
  8. // ^HISTORY:
  9. //    04/22/92    Brad Appleton    <brad@ssd.csd.harris.com>    Created
  10. //-^^---------------------------------------------------------------------
  11.  
  12. #include <stdlib.h>
  13. #include <iostream.h>
  14. #include <string.h>
  15. #include <ctype.h>
  16.  
  17. #include "shell_arg.h"
  18.  
  19. //----------------------------------------------------------------- initialize
  20.  
  21. void
  22. ShellCmdArg::initialize(const char * variable_name)
  23. {
  24.    if (is_array()) {
  25.       shell_array = new ShellArray(variable_name) ;
  26.    } else {
  27.       shell_variable = new ShellVariable(variable_name) ;
  28.    }
  29. }
  30.  
  31. //---------------------------------------------------------------- constructors
  32.  
  33. ShellCmdArg::ShellCmdArg(char    * variable_name,
  34.                          char      optchar,
  35.                          char    * keyword,
  36.                          char    * value,
  37.                          char    * description,
  38.                          unsigned  syntax_flags)
  39.    : CmdArg(optchar, keyword, value, description, syntax_flags),
  40.      sca_name(variable_name), sca_keyword(keyword),
  41.      sca_value(value), sca_description(description)
  42. {
  43.    initialize(variable_name);
  44. }
  45.  
  46. ShellCmdArg::ShellCmdArg(char    * variable_name,
  47.                          char      optchar,
  48.                          char    * keyword,
  49.                          char    * description,
  50.                          unsigned  syntax_flags)
  51.    : CmdArg(optchar, keyword, description, syntax_flags),
  52.      sca_name(variable_name), sca_keyword(keyword),
  53.      sca_value(NULL), sca_description(description)
  54. {
  55.    initialize(variable_name);
  56. }
  57.  
  58. ShellCmdArg::ShellCmdArg(char    * variable_name,
  59.                          char    * value,
  60.                          char    * description,
  61.                          unsigned  syntax_flags)
  62.    : CmdArg(value, description, syntax_flags),
  63.      sca_name(variable_name), sca_keyword(NULL),
  64.      sca_value(value), sca_description(description)
  65. {
  66.    initialize(variable_name);
  67. }
  68.  
  69. //------------------------------------------------------------------ destructor
  70.  
  71. ShellCmdArg::~ShellCmdArg(void)
  72. {
  73.    if (is_array()) {
  74.       delete  shell_array ;
  75.    } else {
  76.       delete  shell_variable ;
  77.    }
  78.    delete [] sca_name ;
  79.    delete [] sca_keyword ;
  80.    delete [] sca_value ;
  81.    delete [] sca_description ;
  82. }
  83.  
  84. //-------------------------------------------------------------------- is_array
  85.  
  86. int
  87. ShellCmdArg::is_array(void) const
  88. {
  89.    return  (syntax() & CmdArg::isLIST) ;
  90. }
  91.  
  92. //------------------------------------------------------------------------- set
  93.  
  94. void
  95. ShellCmdArg::set(const char * value)
  96. {
  97.    if (is_array()) {
  98.       shell_array->append(value);
  99.    } else {
  100.       shell_variable->set(value);
  101.    }
  102. }
  103.  
  104.