aboutsummaryrefslogtreecommitdiff
path: root/APEX_1.4/shared/external/include/UserErrorCallback.h
diff options
context:
space:
mode:
authorgit perforce import user <a@b>2016-10-25 12:29:14 -0600
committerSheikh Dawood Abdul Ajees <Sheikh Dawood Abdul Ajees>2016-10-25 18:56:37 -0500
commit3dfe2108cfab31ba3ee5527e217d0d8e99a51162 (patch)
treefa6485c169e50d7415a651bf838f5bcd0fd3bfbd /APEX_1.4/shared/external/include/UserErrorCallback.h
downloadphysx-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.h82
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