1 | /**************************************************************************************** |
2 | |
3 | Copyright (C) 2015 Autodesk, Inc. |
4 | All rights reserved. |
5 | |
6 | Use of this software is subject to the terms of the Autodesk license agreement |
7 | provided at the time of installation or download, or which otherwise accompanies |
8 | this software in either electronic or hard copy form. |
9 | |
10 | ****************************************************************************************/ |
11 | |
12 | //! \file fbxstatus.h |
13 | #ifndef _FBXSDK_CORE_BASE_STATUS_H_ |
14 | #define _FBXSDK_CORE_BASE_STATUS_H_ |
15 | |
16 | #include <fbxsdk/fbxsdk_def.h> |
17 | |
18 | #include <fbxsdk/core/base/fbxstring.h> |
19 | |
20 | #include <fbxsdk/fbxsdk_nsbegin.h> |
21 | |
22 | /** This class facilitates the testing/reporting of errors. It encapsulates the |
23 | * status code and the internal FBXSDK error code as returned by the API functions. |
24 | * \nosubgrouping |
25 | */ |
26 | class FBXSDK_DLL FbxStatus |
27 | { |
28 | public: |
29 | |
30 | |
31 | //! Available status codes. |
32 | enum EStatusCode { |
33 | eSuccess = 0, //!< Operation was successful |
34 | eFailure, //!< Operation failed |
35 | eInsufficientMemory, //!< Operation failed due to insufficient memory |
36 | eInvalidParameter, //!< An invalid parameter was provided |
37 | eIndexOutOfRange, //!< Index value outside the valid range |
38 | ePasswordError, //!< Operation on FBX file password failed |
39 | eInvalidFileVersion, //!< File version not supported (anymore or yet) |
40 | eInvalidFile //!< Operation on the file access failed |
41 | }; |
42 | |
43 | //! Default constructor. |
44 | FbxStatus(); |
45 | |
46 | FbxStatus(EStatusCode pCode); |
47 | FbxStatus(const FbxStatus& rhs); |
48 | |
49 | FbxStatus& operator=(const FbxStatus& rhs); |
50 | |
51 | /** Equivalence operator. |
52 | * \param rhs Status object to compare. |
53 | * \return \c True if all the members of \e rhs are equal to this instance members and \c False otherwise. |
54 | */ |
55 | bool operator==(const FbxStatus& rhs) const { return (mCode == rhs.mCode); } |
56 | /** Equivalence operator. |
57 | * \param pCode Status code to compare. |
58 | * \return \c True if the code member of this instance equals \e pCode and \c False otherwise. |
59 | */ |
60 | bool operator==(const EStatusCode pCode) const { return (mCode == pCode); } |
61 | /** Non-Equivalence operator. |
62 | * \param rhs Status object to compare. |
63 | * \return \c True if at least one member of \e rhs is not equal to this instance member and \c True otherwise. |
64 | */ |
65 | bool operator!=(const FbxStatus& rhs) const { return (mCode != rhs.mCode); } |
66 | /** Non-Equivalence operator. |
67 | * \param rhs Status code to compare. |
68 | * \return \c True if the code member of this instance equals \e rhs and \c False otherwise. |
69 | */ |
70 | bool operator!=(const EStatusCode rhs) const { return (mCode != rhs); } |
71 | |
72 | /** The conversion operator that converts a FbxStatus object to bool. |
73 | * The result it returns will be \c True if the FbxStatus does not contain |
74 | * an error, and \c False if it does. |
75 | */ |
76 | operator bool() const { return mCode==eSuccess; } |
77 | |
78 | /** Determines whether there is an error. |
79 | * \return \c True if an error occured and \c False if the operation was sucessful. |
80 | */ |
81 | bool Error() const { return !this->operator bool(); } |
82 | |
83 | //! Clear error code and message from the instance. After this call, it will behave as if it contained eSuccess. |
84 | void Clear(); |
85 | |
86 | //! Retrieve the type of error that occurred, as specified in the enumeration. |
87 | EStatusCode GetCode() const { return mCode; } |
88 | |
89 | /** Change the current code of the instance. |
90 | * \param rhs New code value. |
91 | */ |
92 | void SetCode(const EStatusCode rhs); |
93 | |
94 | /** Change the current code of the instance. |
95 | * \param rhs New code value. |
96 | * \param pErrorMsg Optional error description string. This string can have formatting characters |
97 | * The function will use the vsnprintf function to assemble the final string |
98 | * using an internal buffer of 4096 characters. |
99 | */ |
100 | void SetCode(const EStatusCode rhs, const char* pErrorMsg, ...); |
101 | |
102 | //! Get the error message string corresponding to the current code. |
103 | const char* GetErrorString() const; |
104 | |
105 | /***************************************************************************************************************************** |
106 | ** WARNING! Anything beyond these lines is for internal use, may not be documented and is subject to change without notice! ** |
107 | *****************************************************************************************************************************/ |
108 | #ifndef DOXYGEN_SHOULD_SKIP_THIS |
109 | |
110 | private: |
111 | EStatusCode mCode; |
112 | FbxString mErrorString; |
113 | |
114 | #endif /* !DOXYGEN_SHOULD_SKIP_THIS */ |
115 | }; |
116 | |
117 | #include <fbxsdk/fbxsdk_nsend.h> |
118 | |
119 | #endif /* _FBXSDK_CORE_BASE_STATUS_H_ */ |
120 | |