// -*- mode: c++ -*- 
#ifndef MIX_DOMEXCEPTION_H_
#define MIX_DOMEXCEPTION_H_

#include <exception>
#include "misc.h"
#include "classes.h"

namespace MiX{

  template <class charT,class char_traits,class xml_traits>
  class DOM_Exception : public std::exception{
  public:
    MiX_Template_Typedef(charT,char_traits,xml_traits);
  private:
    const node_type* node_;
    ErrorType type_;
    std::string data_;
  public:
    ///コンストラクタ
    DOM_Exception(const node_type* node,ErrorType type,const std::string& data)
      : node_(node),type_(type),data_(data){ };
    ///デストラクタ
    virtual ~DOM_Exception() throw(){ };
    ///エラーの詳細をあらわす文字列を返す
    const char* what()const throw(){ return data_.c_str(); }
    ///エラーを起こしたNodeへのポインタを返す
    const node_type* getNode()const throw(){ return node_; }
    ///エラータイプを返す
    ErrorType getType() const throw() { return type_; };
  };
}

#endif
