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