nlib
ExiErrorStatus.h
[詳解]
1 
2 #pragma once
3 #ifndef INCLUDE_NN_NLIB_EXI_EXIERRORSTATUS_H_
4 #define INCLUDE_NN_NLIB_EXI_EXIERRORSTATUS_H_
5 
7 #include "nn/nlib/exi/Types.h"
8 
9 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS)
10 #undef NLIB_VIS_PUBLIC
11 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT
12 #endif
13 
14 NLIB_NAMESPACE_BEGIN
15 namespace exi {
16 
18  public:
19  enum ErrorValue {
20  OK = 0,
40  FUNC_NOT_AVAILABLE
41  };
42 
43  public:
44  ExiErrorStatus() NLIB_NOEXCEPT : m_Error(OK), m_Line(0), m_FileName(NULL) {}
45  bool IsOk() const NLIB_NOEXCEPT { return m_Error == OK; }
46  ErrorValue GetErrorValue() const NLIB_NOEXCEPT { return static_cast<ErrorValue>(m_Error); }
47  int GetLineNo() const NLIB_NOEXCEPT { return m_Line; }
48  const char* GetFileName() const NLIB_NOEXCEPT { return m_FileName; }
49  bool SetError(ErrorValue e, int line, const char* filename) NLIB_NOEXCEPT;
50  void Reset() NLIB_NOEXCEPT;
52 
53  private:
54  int m_Error; // ErrorValue
55  int m_Line; // __LINE__
56  const char* m_FileName; // __FILE__
57  NEXI_DISALLOW_NEW_DELETE(ExiErrorStatus);
58  NLIB_DISALLOW_COPY_AND_ASSIGN(ExiErrorStatus);
59 };
60 
61 // for unit-tests, make NEXI_SET_ERROR() work if ErrorStatus is not set.
62 #define NEXI_SET_ERROR(e) \
63  (this->GetExiErrorStatus() ? this->GetExiErrorStatus()->SetError((e), __LINE__, __FILE__) \
64  : false)
65 #define NEXI_IS_ERROR (!this->GetExiErrorStatus()->IsOk())
66 #define NEXI_RESET_ERROR this->GetExiErrorStatus()->Reset()
67 #define NEXI_CHECK_OUT_OF_MEMORY \
68  if (ExiAllocator::IsOutOfMemory()) NEXI_SET_ERROR(ExiErrorStatus::OUT_OF_MEMORY)
69 
70 } // namespace exi
71 NLIB_NAMESPACE_END
72 
73 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS)
74 #undef NLIB_VIS_PUBLIC
75 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT
76 #endif
77 
78 #endif // INCLUDE_NN_NLIB_EXI_EXIERRORSTATUS_H_
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Platform.h:2151
ExiErrorStatus() noexcept
コンストラクタです。
文字列型のtypedefやユーティリティマクロ等が定義されています。
不正なバイナリデータの可能性があります。
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:126
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
Definition: Config.h:141
IOがエラーを起こしました。
int GetLineNo() const noexcept
エラーを発生させたコードの行番号を返します。
XMLパーサーが利用するアロケータを定義しています。
想定外のEOSを検出しました。
不正なバイナリデータの可能性があります。 EXIヘッダの解析中にエラーになりました。 不正なデータであるか...
不正なバイナリデータの可能性があります。指定されたイベントが不正であるか見つかりませんでした。 ...
属性の名前空間をデフォルト名前空間にすることはできません。
XMLパーサーのエラー状態を設定・格納します。
const char * GetFileName() const noexcept
エラーを発生させたコードのファイル名を返します。
ErrorValue GetErrorValue() const noexcept
エラー状態を示す値を取得します。
ErrorValue
エラー状態を示す列挙型です。
prefixを削除(undeclare)しようとしました。
ストリームが取り外されています(クローズされている)。
各種シンタックスエラーです。
属性が重複しています。
不正な文字の読み書きをしようとしました。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:51
予約されたプレフィックスであるxml又はxmlnsを宣言しようとしました。
不正なバイナリデータの可能性があります。インデックスがあるべき範囲を超えています。 ...
bool IsOk() const noexcept
エラーが発生していなければtrueを返します。
メモリの確保に失敗しました。
サポートされていない機能やフォーマットです。