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

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

namespace MiX{
  class ParsingException : public std::exception{
    long index_;
    ErrorType type_;
    std::string data_;
  public:
    ///コンストラクタ
    ParsingException(long index,ErrorType type,const std::string& data) : index_(index),type_(type),data_(data){ };
    ///デストラクタ
    virtual ~ParsingException() throw(){ };
    ///エラーの詳細をあらわす文字列を返す
    const char* what()const throw(){ return data_.c_str(); };
    ///エラーの起こった場所を文字列の先頭からのインデックスで返す
    long getIndex()const{ return index_; };
    ///エラータイプを返す
    ErrorType getType()const{
      return type_;
    };
  };
}

#ifndef MIX_PARSINGEXCEPTION_CPP_
#include "ParsingException.cpp"
#endif

#endif
