///////////////////////////////////////////////////////////////////////////
// FILE: stdexcept.h/stdexcept (Standard exception classes)
//
//                          Open Watcom Project
//
//    Copyright (c) 2002-2008 Open Watcom Contributors. All Rights Reserved.
//    Portions Copyright (c) 1983-2002 Sybase, Inc. All Rights Reserved.
//
//    This file is automatically generated. Do not edit directly.
//
// =========================================================================
//
// Description: This header is part of the C++ standard library. It
//              defines various exception classes based on exception.
///////////////////////////////////////////////////////////////////////////
#ifndef _STDEXCEPT_INCLUDED
#define _STDEXCEPT_INCLUDED

#if !defined(_ENABLE_AUTODEPEND)
  #pragma read_only_file;
#endif


#ifndef __cplusplus
#error The header stdexcept requires C++
#endif

#ifndef _COMDEF_H_INCLUDED
  #include <_comdef.h>
#endif

#ifndef __STRDEF_H_INCLUDED
  #include <_strdef.h>
#endif

#ifndef _EXCEPTION_INCLUDED
  #include <exceptio>
#endif

namespace std {

  namespace _ow {
    class _WPRTLINK str_exception : public exception {
      string message;
    public:
      str_exception( const string &what_arg ) _WCTHROWS()
        : message( what_arg ) { }

      virtual const char *what( ) const _WCTHROWS()
        { return message.c_str( ); }
    };
  }

  class _WPRTLINK logic_error : public _ow::str_exception {
  public:
    logic_error( const string &what_arg ) _WCTHROWS()
      : _ow::str_exception( what_arg ) { }
  };

  class _WPRTLINK domain_error : public logic_error {
  public:
    domain_error( const string &what_arg ) _WCTHROWS()
      : logic_error( what_arg ) { }
  };

  class _WPRTLINK invalid_argument : public logic_error {
  public:
    invalid_argument( const string &what_arg ) _WCTHROWS()
      : logic_error( what_arg ) { }
  };

  class _WPRTLINK length_error : public logic_error {
  public:
    length_error( const string &what_arg ) _WCTHROWS()
      : logic_error( what_arg ) { }
  };

  class _WPRTLINK out_of_range : public logic_error {
  public:
    out_of_range( const string &what_arg ) _WCTHROWS()
      : logic_error( what_arg ) { }
  };

  class _WPRTLINK runtime_error : public _ow::str_exception {
  public:
    runtime_error( const string &what_arg ) _WCTHROWS()
      : _ow::str_exception( what_arg ) { }
  };

  class _WPRTLINK range_error : public runtime_error {
  public:
    range_error( const string &what_arg ) _WCTHROWS()
      : runtime_error( what_arg ) { }
  };

  class _WPRTLINK overflow_error : public runtime_error {
  public:
    overflow_error( const string &what_arg ) _WCTHROWS()
      : runtime_error( what_arg ) { }
  };

  class _WPRTLINK underflow_error : public runtime_error {
  public:
    underflow_error( const string &what_arg ) _WCTHROWS()
      : runtime_error( what_arg ) { }
  };

} // namespace std

#endif
