aboutsummaryrefslogtreecommitdiff
path: root/profiling/common/include/ProfilingException.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'profiling/common/include/ProfilingException.hpp')
-rw-r--r--profiling/common/include/ProfilingException.hpp63
1 files changed, 58 insertions, 5 deletions
diff --git a/profiling/common/include/ProfilingException.hpp b/profiling/common/include/ProfilingException.hpp
index 532c2d49f7..abdc0dc025 100644
--- a/profiling/common/include/ProfilingException.hpp
+++ b/profiling/common/include/ProfilingException.hpp
@@ -1,29 +1,82 @@
//
-// Copyright © 2020 Arm Ltd. All rights reserved.
+// Copyright © 2020 Arm Ltd and Contributors. All rights reserved.
// SPDX-License-Identifier: MIT
//
#pragma once
#include <stdexcept>
#include <string>
+#include <sstream>
-namespace armnnProfiling
+namespace arm
{
+namespace pipe
+{
+
+struct Location
+{
+ const char* m_Function;
+ const char* m_File;
+ unsigned int m_Line;
+
+ Location(const char* func,
+ const char* file,
+ unsigned int line)
+ : m_Function{func}
+ , m_File{file}
+ , m_Line{line}
+ {
+ }
+
+ std::string AsString() const
+ {
+ std::stringstream ss;
+ ss << " at function " << m_Function
+ << " [" << m_File << ':' << m_Line << "]";
+ return ss.str();
+ }
+
+ std::string FileLine() const
+ {
+ std::stringstream ss;
+ ss << " [" << m_File << ':' << m_Line << "]";
+ return ss.str();
+ }
+};
+
/// General Exception class for Profiling code
class ProfilingException : public std::exception
{
public:
explicit ProfilingException(const std::string& message) : m_Message(message) {};
+ explicit ProfilingException(const std::string& message,
+ const Location& location) : m_Message(message + location.AsString()) {};
+
/// @return - Error message of ProfilingException
- virtual const char* what() const noexcept override
+ virtual const char *what() const noexcept override
{
- return m_Message.c_str();
+ return m_Message.c_str();
}
private:
std::string m_Message;
};
-} // namespace armnnProfiling
+class TimeoutException : public ProfilingException
+{
+public:
+ using ProfilingException::ProfilingException;
+};
+
+class InvalidArgumentException : public ProfilingException
+{
+public:
+ using ProfilingException::ProfilingException;
+};
+
+} // namespace pipe
+} // namespace arm
+
+#define LOCATION() arm::pipe::Location(__func__, __FILE__, __LINE__)