Program Listing for File Panic.hpp

Return to documentation for file (include/lvr2/util/Panic.hpp)

#ifndef LVR2_UTIL_PANIC_H_
#define LVR2_UTIL_PANIC_H_

#include <exception>
#include <iostream>
#include <string>

namespace lvr2
{

struct PanicException : public std::exception
{
    PanicException(std::string msg) : m_msg(msg) {}

    virtual const char* what() const noexcept
    {
        return m_msg.c_str();
    }

private:
    std::string m_msg;
};


struct VertexLoopException : public std::exception
{
    VertexLoopException(std::string msg) : m_msg(msg) {}

    virtual const char* what() const noexcept
    {
        return m_msg.c_str();
    }
private:
    std::string m_msg;
};

inline void panic(std::string msg)
{
    throw PanicException("Program panicked: " + msg);
}

inline void panic_unimplemented(std::string msg)
{
    throw PanicException("Program panicked due to missing implementation: " + msg);
}


} // namespace lvr2


#endif // LVR2_UTIL_PANIC_H_