/**
 * \file BGDNetException.h
 * \brief Объявление класса Exception
 */

#ifndef __BGDNetException_h__
#define __BGDNetException_h__

#include "BGDNetConfig.h"

#include <string>
#include <nwcaldef.h>

namespace BGDNet
{

using std::string;

/**
 * \class Exception
 * \brief Класс "Исключение"
 *
 * Описывает исключительные ситуации, возникновение которых возможно
 * в процессе работы библиотеки.
 */
class BGDNET_API Exception
{
public:

  Exception( NWCCODE errCode, const char* errMsg = 0 );
  /**<
   * \brief Конструктор.
   * @param errCode Код ошибки NetWare
   * @param errMsg Необязательный указатель на строку, содержащую
   * текст сообщения об ошибке.
   */

  Exception( const Exception& e );
  /**<
   * \brief Инициализатор копии.
   */

  ~Exception( void );
  /**<
   * \brief Деструктор.
   */

  Exception& operator =( const Exception& e );
  /**<
   * \brief Оператор присваивания.
   */

  NWCCODE code( void ) const;
  /**<
   * \brief Доступ к коду ошибки NetWare.
   * @return Код ошибки NetWare.
   */

  const char* what( void ) const;
  /**<
   * \brief Доступ к описанию ошибки.
   * @return Указатель на строку, содержащую описание возникшей ошибки.
   */

private:

  NWCCODE m_errCode;
  /**<
   * \brief Код ошибки NetWare.
   */

  string* m_pMsg;
  /**<
   * \brief Указатель на строку, содержащую описание ошибки.
   */
};

} // namespace BGDNet

#endif //__BGDNetException_h__
