home *** CD-ROM | disk | FTP | other *** search
/ ftptest.leeds.ac.uk / 2015.02.ftptest.leeds.ac.uk.tar / ftptest.leeds.ac.uk / bionet / CAE-GROUP / SCL-WIN3x / SCL.EXE / ERRORDES.H < prev    next >
C/C++ Source or Header  |  1994-08-06  |  4KB  |  134 lines

  1.  
  2. #ifndef ERRORDESC_H
  3. #define    ERRORDESC_H
  4.  
  5. /*
  6. * NIST Utils Class Library
  7. * clutils/errordesc.h
  8. * February, 1994
  9. * David Sauder
  10. * K. C. Morris
  11.  
  12. * Development of this software was funded by the United States Government,
  13. * and is not subject to copyright.
  14. */
  15.  
  16. /* $Id: errordesc.h,v 2.0.1.2 1994/04/05 16:43:58 sauderd Exp $  */ 
  17.  
  18.  
  19.  
  20. #include <scl_string.h>
  21. #include <iostream.h>
  22.  
  23. typedef enum Severity {
  24.     SEVERITY_MAX    = -5,
  25.     SEVERITY_DUMP    = -4,
  26.     SEVERITY_EXIT    = -3,    // fatal
  27.     SEVERITY_BUG    = -2,    // non-recoverable error -- probably bug
  28.     SEVERITY_INPUT_ERROR = -1,    // non-recoverable error
  29.     SEVERITY_WARNING    = 0,    // recoverable error
  30.     SEVERITY_INCOMPLETE    = 1,    // incomplete data
  31.     SEVERITY_USERMSG    = 2,    // possibly an error
  32.     SEVERITY_NULL    = 3    // no error or message
  33.   } Severity;
  34.  
  35. /* DAS not used
  36. enum Enforcement {
  37.     ENFORCE_OFF,
  38.     ENFORCE_OPTIONALITY,
  39.     ENFORCE_ALL
  40.     
  41.     } ;
  42. */    
  43.  
  44. enum  DebugLevel  {
  45.     DEBUG_OFF    =0,
  46.     DEBUG_USR    =1,
  47.     DEBUG_ALL    =2
  48.     
  49. };
  50.  
  51.  
  52. void ErrorMessage (char * msg =0)    ;
  53.  
  54.  
  55. /******************************************************************
  56.  ** Class:  ErrorDescriptor
  57.  ** Data Members:  
  58.  **    severity level of error
  59.  **    user message
  60.  **    detailed message
  61.  ** Description:  
  62.  **    the error is a detailed error message + a severity level
  63.  **    also keeps a user message separately
  64.  **    detailed message gets sent to ostream
  65.  **    uses SCLstring class to keep the user messages
  66.  **    keeps severity of error
  67.  **    created with or without error
  68.  ** Status:  
  69.  ******************************************************************/
  70.  
  71. class ErrorDescriptor {
  72. //  friend     istream &operator<< ( istream&, ErrorDescriptor& );
  73.   protected:
  74.   
  75.     Severity    _severity;
  76.  
  77.     static DebugLevel    _debug_level;
  78.     static ostream* _out;
  79.     
  80.     SCLstring *_userMsg;
  81.     SCLstring *_detailMsg;
  82.   public:
  83.  
  84.     ErrorDescriptor (Severity s    = SEVERITY_NULL, 
  85.               DebugLevel d  = DEBUG_OFF);
  86.     ~ErrorDescriptor () { delete _userMsg; delete _detailMsg; }
  87.  
  88.     void ClearErrorMsg() {
  89.     _severity = SEVERITY_NULL;
  90.     delete _userMsg;   _userMsg = 0;
  91.     delete _detailMsg; _detailMsg = 0;
  92.     }
  93.  
  94.     Severity severity() const        { return _severity; }
  95.     Severity severity(Severity s) {  return (_severity = s); }
  96.     Severity GreaterSeverity(Severity s)
  97.     { return ((s < _severity) ?  _severity = s : _severity); }
  98.  
  99.     const char * UserMsg () const;  //  UserMsg is from String
  100.     void UserMsg ( const char *);
  101.     void AppendToUserMsg ( const char *);
  102.     void PrependToUserMsg ( const char *);
  103.  
  104.     const char * DetailMsg () const;
  105.     void DetailMsg ( const char *);
  106.     void AppendToDetailMsg ( const char *);
  107.     void PrependToDetailMsg ( const char *);
  108.  
  109.     Severity AppendFromErrorArg(ErrorDescriptor *err)
  110.     {
  111.     GreaterSeverity( err->severity() );
  112.     AppendToDetailMsg( err->DetailMsg() );
  113.     AppendToUserMsg( err->UserMsg() );
  114.     return severity();
  115.     }
  116.  
  117.     DebugLevel debug_level() const        { return _debug_level; }
  118.     void debug_level(DebugLevel d)   { _debug_level = d; }
  119.     void SetOutput(ostream *o)      { _out = o; }
  120.     
  121.     // void operator =  (const char* y)  {  SCLstring::operator = (y);  }
  122.     
  123. /*
  124. //    Enforcement    _enforcement_level;    
  125.     ErrorDescriptor (Severity s    = SEVERITY_NULL, 
  126.               Enforcement e = ENFORCE_OFF,
  127.               DebugLevel d  = DEBUG_OFF);
  128.     Enforcement enforcement() const       { return _enforcement_level; }
  129.     void enforcement(Enforcement e) { _enforcement_level = e; }
  130. */
  131. } ;
  132.  
  133. #endif
  134.