diff options
| author | git perforce import user <a@b> | 2016-10-25 12:29:14 -0600 |
|---|---|---|
| committer | Sheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees> | 2016-10-25 18:56:37 -0500 |
| commit | 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch) | |
| tree | fa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/shared/external/include/UserErrorCallback.h | |
| download | physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.tar.xz physx-3.4-3dfe2108cfab31ba3ee5527e217d0d8e99a51162.zip | |
Initial commit:
PhysX 3.4.0 Update @ 21294896
APEX 1.4.0 Update @ 21275617
[CL 21300167]
Diffstat (limited to 'APEX_1.4/shared/external/include/UserErrorCallback.h')
| -rw-r--r-- | APEX_1.4/shared/external/include/UserErrorCallback.h | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/APEX_1.4/shared/external/include/UserErrorCallback.h b/APEX_1.4/shared/external/include/UserErrorCallback.h new file mode 100644 index 00000000..14fe7651 --- /dev/null +++ b/APEX_1.4/shared/external/include/UserErrorCallback.h @@ -0,0 +1,82 @@ +/* + * Copyright (c) 2008-2015, NVIDIA CORPORATION. All rights reserved. + * + * NVIDIA CORPORATION and its licensors retain all intellectual property + * and proprietary rights in and to this software, related documentation + * and any modifications thereto. Any use, reproduction, disclosure or + * distribution of this software and related documentation without an express + * license agreement from NVIDIA CORPORATION is strictly prohibited. + */ + + +#ifndef USER_ERROR_CALLBACK_H +#define USER_ERROR_CALLBACK_H + +#include "PxErrorCallback.h" +#include "PxErrors.h" +#include <PsString.h> +#include <ApexUsingNamespace.h> + +#include <map> +#include <string> +#include <vector> + + +class UserErrorCallback : public physx::PxErrorCallback +{ +public: + UserErrorCallback(const char* filename, const char* mode, bool header, bool reportErrors); + ~UserErrorCallback(); + + void printError(const char* message, const char* errorCode = NULL, const char* file = NULL, int line = 0); + void reportError(physx::PxErrorCode::Enum code, const char* message, const char* file, int line); + void printError(physx::PxErrorCode::Enum code, const char* file, int line, const char* fmt, ...); + int getNumErrors(); + void clearErrorCounter(); + const char* getFirstEror(); + void addFilteredMessage(const char* msg, bool fullMatch, bool* trigger = NULL); + + void reportErrors(bool enabled); + + static UserErrorCallback* instance() + { + if (!s_instance) + { + // Allocate a stub (bitbucket) error handler + s_instance = ::new UserErrorCallback(NULL, NULL, false, false); + } + return s_instance; + } + +private: + bool messageFiltered(const char * code, const char * msg); + void openFile(); + + uint32_t mNumErrors; + FILE* mOutFile; + std::string mOutFileName; + const char* mOutFileMode; + bool mOutFileHeader; + bool mReportErrors; + char mFirstErrorBuffer[2048]; + bool mFirstErrorBufferUpdated; + + std::map<std::string, bool*> mFilteredMessages; + std::vector<std::pair<std::string, bool*> > mFilteredParts; + + static UserErrorCallback* s_instance; +}; + +// gcc uses names ...s +#define ERRORSTREAM_INVALID_PARAMETER(_A, ...) \ + UserErrorCallback::instance()->printError(physx::PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__, _A, ##__VA_ARGS__) +#define ERRORSTREAM_INVALID_OPERATION(_A, ...) \ + UserErrorCallback::instance()->printError(physx::PxErrorCode::eINVALID_OPERATION, __FILE__, __LINE__, _A, ##__VA_ARGS__) +#define ERRORSTREAM_DEBUG_ERROR(_A, ...) \ + UserErrorCallback::instance()->printError(physx::PxErrorCode::eINTERNAL_ERROR , __FILE__, __LINE__, _A, ##__VA_ARGS__) +#define ERRORSTREAM_DEBUG_INFO(_A, ...) \ + UserErrorCallback::instance()->printError(physx::PxErrorCode::eDEBUG_INFO , __FILE__, __LINE__, _A, ##__VA_ARGS__) +#define ERRORSTREAM_DEBUG_WARNING(_A, ...) \ + UserErrorCallback::instance()->printError(physx::PxErrorCode::eDEBUG_WARNING , __FILE__, __LINE__, _A, ##__VA_ARGS__) + +#endif |