From 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 Mon Sep 17 00:00:00 2001 From: git perforce import user Date: Tue, 25 Oct 2016 12:29:14 -0600 Subject: Initial commit: PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @ 21275617 [CL 21300167] --- .../shared/external/include/UserErrorCallback.h | 82 ++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 APEX_1.4/shared/external/include/UserErrorCallback.h (limited to 'APEX_1.4/shared/external/include/UserErrorCallback.h') 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 +#include + +#include +#include +#include + + +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 mFilteredMessages; + std::vector > 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 -- cgit v1.2.3