#include <string> #include <sstream> #include <j/lang/assertion_error.hpp> namespace j { namespace lang { /** * AssertionError を構築します。 */ AssertionError::AssertionError() noexcept : Error(), file(""), func(""), line(0) { // NOP } /** * AssertionError を構築します。 * * @param msg メッセージ */ AssertionError::AssertionError(const String &msg) noexcept : Error(msg), file(""), func(""), line(0) { // NOP } /** * AssertionError を構築します。 * * @param msg メッセージ */ AssertionError::AssertionError(const String &msg, const char *file, const char *func, int line) noexcept : Error(msg), file(file), func(func), line(line) { // NOP } /** * AssertionError のコピーコンストラクタ。 * * @param t コピー元 AssertionError */ AssertionError::AssertionError(const AssertionError &t) noexcept : Error(t), file(t.file), func(t.func), line(t.line) { // NOP } /** * AssertionError のムーブコンストラクタ。 * * @param str ムーブ元 String */ AssertionError::AssertionError(AssertionError &&t) noexcept : Error(std::move(t)), file(std::move(t.file)), func(std::move(t.func)), line(std::move(t.line)) { // NOP } /** * デストラクタ。 */ AssertionError::~AssertionError() noexcept { // NOP } /** * エラーが発生したファイル名を返します。 * * @return ファイル名 */ const char *AssertionError::getFile() const noexcept { return file; } /** * エラーが発生した関数名を返します。 * * @return 関数名 */ const char *AssertionError::getFunc() const noexcept { return func; } /** * エラーが発生した行番号を返します。 * * @return 行番号 */ int AssertionError::getLine() const noexcept { return line; } /** * 本オブジェクトの文字列表現を返します。 * * @return 文字列表現 */ String AssertionError::toString() const noexcept { std::ostringstream ss; ss << "AssertionError: " << message << std::endl << "\tat " << file << ":" << line << " [" << func << "]"; return String(ss.str()); } } // namespace lang } // namespace j