nlib
ExiErrorStatus.h
[詳解]
1 
2 /*--------------------------------------------------------------------------------*
3  Project: CrossRoad
4  Copyright (C)Nintendo All rights reserved.
5 
6  These coded instructions, statements, and computer programs contain proprietary
7  information of Nintendo and/or its licensed developers and are protected by
8  national and international copyright laws. They may not be disclosed to third
9  parties or copied or duplicated in any form, in whole or in part, without the
10  prior written consent of Nintendo.
11 
12  The content herein is highly confidential and should be handled accordingly.
13  *--------------------------------------------------------------------------------*/
14 
15 #pragma once
16 #ifndef INCLUDE_NN_NLIB_EXI_EXIERRORSTATUS_H_
17 #define INCLUDE_NN_NLIB_EXI_EXIERRORSTATUS_H_
18 
20 #include "nn/nlib/exi/Types.h"
21 
22 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS)
23 #undef NLIB_VIS_PUBLIC
24 #define NLIB_VIS_PUBLIC NLIB_WINEXPORT
25 #endif
26 
27 NLIB_NAMESPACE_BEGIN
28 namespace exi {
29 
31  public:
32  enum ErrorValue {
33  OK = 0,
53  FUNC_NOT_AVAILABLE
54  };
55 
56  public:
57  ExiErrorStatus() NLIB_NOEXCEPT : error_(OK), line_(0), filename_(NULL) {}
58  ErrorValue GetError() const NLIB_NOEXCEPT { return static_cast<ErrorValue>(error_); }
59  int GetLineNo() const NLIB_NOEXCEPT { return line_; }
60  const char* GetFileName() const NLIB_NOEXCEPT { return filename_; }
61  bool SetError(ErrorValue e, int line, const char* filename) NLIB_NOEXCEPT;
62  void Reset() NLIB_NOEXCEPT;
63  NLIB_SAFE_BOOL(ExiErrorStatus, error_ == OK)
64 
65  private:
66  int error_; // ErrorValue
67  int line_; // __LINE__
68  const char* filename_; // __FILE__
69  NEXI_DISALLOW_NEW_DELETE(ExiErrorStatus);
71 };
72 
73 // for unit-tests, make NEXI_SET_ERROR() work if ErrorStatus is not set.
74 #define NEXI_SET_ERROR(e) \
75  (this->GetExiErrorStatus() ? this->GetExiErrorStatus()->SetError((e), __LINE__, __FILE__) \
76  : false)
77 #define NEXI_IS_ERROR (nlib_is_error(*this->GetExiErrorStatus()))
78 #define NEXI_RESET_ERROR this->GetExiErrorStatus()->Reset()
79 #define NEXI_CHECK_OUT_OF_MEMORY \
80  if (ExiAllocator::IsOutOfMemory()) NEXI_SET_ERROR(ExiErrorStatus::OUT_OF_MEMORY)
81 
82 } // namespace exi
83 NLIB_NAMESPACE_END
84 
85 #if defined(_MSC_VER) && defined(nx_exi_EXPORTS)
86 #undef NLIB_VIS_PUBLIC
87 #define NLIB_VIS_PUBLIC NLIB_WINIMPORT
88 #endif
89 
90 #endif // INCLUDE_NN_NLIB_EXI_EXIERRORSTATUS_H_
ExiErrorStatus() noexcept
コンストラクタです。
文字列型のtypedefやユーティリティマクロ等が定義されています。
不正なバイナリデータの可能性があります。
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
TypeName で指定されたクラスのコピーコンストラクタと代入演算子を禁止します。
Definition: Config.h:163
#define NLIB_SAFE_BOOL(class_name, exp)
クラス内に安全なoperator bool()を定義します。 可能であればC++11のexplicit boolを利用します。 ...
Definition: Config.h:178
IOがエラーを起こしました。
XMLパーサーが利用するアロケータを定義しています。
想定外のEOSを検出しました。
不正なバイナリデータの可能性があります。 EXIヘッダの解析中にエラーになりました。 不正なデータであるか...
不正なバイナリデータの可能性があります。指定されたイベントが不正であるか見つかりませんでした。 ...
属性の名前空間をデフォルト名前空間にすることはできません。
#define NLIB_VIS_PUBLIC
関数やクラス等のシンボルをライブラリの外部に公開します。
Definition: Platform_unix.h:89
XMLパーサーのエラー状態を設定・格納します。
int GetLineNo() const noexcept
エラーを発生させたコードの行番号を返します。
const char * GetFileName() const noexcept
エラーを発生させたコードのファイル名を返します。
ErrorValue
エラー状態を示す列挙型です。
#define NLIB_NOEXCEPT
環境に合わせてnoexcept 又は同等の定義がされます。
Definition: Config.h:99
prefixを削除(undeclare)しようとしました。
ErrorValue GetError() const noexcept
エラー状態を示す値を取得します。
ストリームが取り外されています(クローズされている)。
各種シンタックスエラーです。
属性が重複しています。
不正な文字の読み書きをしようとしました。
予約されたプレフィックスであるxml又はxmlnsを宣言しようとしました。
不正なバイナリデータの可能性があります。インデックスがあるべき範囲を超えています。 ...
#define NLIB_FINAL
利用可能であればfinalが定義されます。そうでない場合は空文字列です。
Definition: Config.h:229
メモリの確保に失敗しました。
サポートされていない機能やフォーマットです。