
#ifndef X_AT_INDEX_H
#define X_AT_INDEX_H

#include "at_error.h"
#include "base\exception.h"


class AT_Xpace_Error : public AT_General_Error
{
public :
  AT_Xpace_Error
    (const char* module,
     uint lineNum,
     const char* what,
     const Xpace::Exception& ex);

  #define AT_Xpace_Err(ex)  \
    AT_Xpace_Error(__FILE__, __LINE__, (AT_String) typeid(*this).name(), ex)
  #define AT_Xpace_Err_noThis(T, ex) \
    AT_Xpace_Error(__FILE__, __LINE__, (AT_String) typeid(T).name(), ex)

  AT_Xpace_Error *clone
    ()
    const;

  virtual void report
    (Reporter& r)
    const;

private :
  std::vector<char> what_buf;
};

AT_Error* translateException
  (const Xpace::Exception& ex);

#endif