// Copyright 2018 The Dawn Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef DAWNNATIVE_ERRORDATA_H_ #define DAWNNATIVE_ERRORDATA_H_ #include "common/Compiler.h" #include #include #include #include namespace wgpu { enum class ErrorType : uint32_t; } namespace dawn { using ErrorType = wgpu::ErrorType; } namespace dawn_native { enum class InternalErrorType : uint32_t; class DAWN_NO_DISCARD ErrorData { public: static DAWN_NO_DISCARD std::unique_ptr Create(InternalErrorType type, std::string message, const char* file, const char* function, int line); ErrorData(InternalErrorType type, std::string message); struct BacktraceRecord { const char* file; const char* function; int line; }; void AppendBacktrace(const char* file, const char* function, int line); void AppendContext(std::string context); void AppendDebugGroup(std::string label); InternalErrorType GetType() const; const std::string& GetMessage() const; const std::vector& GetBacktrace() const; const std::vector& GetContexts() const; const std::vector& GetDebugGroups() const; std::string GetFormattedMessage() const; private: InternalErrorType mType; std::string mMessage; std::vector mBacktrace; std::vector mContexts; std::vector mDebugGroups; }; } // namespace dawn_native #endif // DAWNNATIVE_ERRORDATA_H_