nlib
ExiErrorStatus.h
Go to the documentation of this file.
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_(nullptr) {}
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
Instantiates the object.
Defines constructs such as string-type typedef statements and utility macros.
#define NLIB_DISALLOW_COPY_AND_ASSIGN(TypeName)
Prohibits use of the copy constructor and assignment operator for the class specified by TypeName...
Definition: Config.h:179
#define NLIB_SAFE_BOOL(class_name, exp)
Defines a safe operator bool function in the class. Uses the C++11 explicit bool if it is available f...
Definition: Config.h:194
Defines the allocator used by the XML parser.
Binary data may be invalid. An error occurred while parsing the EXI header. Either the data is invali...
Binary data may be invalid. Specified event was either invalid or could not be found.
Cannot turn an attribute namespace into the default namespace.
#define NLIB_VIS_PUBLIC
Symbols for functions and classes are made available outside of the library.
Definition: Platform_unix.h:89
Sets and stores the error status of the XML parser.
int GetLineNo() const noexcept
Returns the line number of the code that generated the error.
const char * GetFileName() const noexcept
Returns the filename of the code that generated the error.
ErrorValue
Enumerates error statuses.
#define NLIB_NOEXCEPT
Defines noexcept geared to the environment, or the equivalent.
Definition: Config.h:105
Attempted to delete (undeclare) a prefix.
ErrorValue GetError() const noexcept
Gets a value that indicates the error status.
Attempted to read or write an invalid character.
Attempted to define a reserved prefix (xml or xmlns).
Binary data may be invalid. Index exceeds the expected range.
#define NLIB_FINAL
Defines final if it is available for use. If not, holds an empty string.
Definition: Config.h:245
Unsupported feature or format.