1
0
Fork 0
mirror of https://github.com/systemed/tilemaker synced 2025-02-22 06:24:08 +01:00
tilemaker/include/vtzero/exception.hpp
2023-12-28 21:31:01 +00:00

134 lines
3.2 KiB
C++

#ifndef VTZERO_EXCEPTION_HPP
#define VTZERO_EXCEPTION_HPP
/*****************************************************************************
vtzero - Tiny and fast vector tile decoder and encoder in C++.
This file is from https://github.com/mapbox/vtzero where you can find more
documentation.
*****************************************************************************/
/**
* @file exception.hpp
*
* @brief Contains the exceptions used in the vtzero library.
*/
#include <cstdint>
#include <stdexcept>
#include <string>
namespace vtzero {
/**
* Base class for all exceptions directly thrown by the vtzero library.
*/
class exception : public std::runtime_error {
public:
/// Constructor
explicit exception(const char* message) :
std::runtime_error(message) {
}
/// Constructor
explicit exception(const std::string& message) :
std::runtime_error(message) {
}
}; // class exception
/**
* This exception is thrown when vector tile encoding isn't valid according
* to the vector tile specification.
*/
class format_exception : public exception {
public:
/// Constructor
explicit format_exception(const char* message) :
exception(message) {
}
/// Constructor
explicit format_exception(const std::string& message) :
exception(message) {
}
}; // class format_exception
/**
* This exception is thrown when a geometry encoding isn't valid according
* to the vector tile specification.
*/
class geometry_exception : public format_exception {
public:
/// Constructor
explicit geometry_exception(const char* message) :
format_exception(message) {
}
/// Constructor
explicit geometry_exception(const std::string& message) :
format_exception(message) {
}
}; // class geometry_exception
/**
* This exception is thrown when a property value is accessed using the
* wrong type.
*/
class type_exception : public exception {
public:
/// Constructor
explicit type_exception() :
exception("wrong property value type") {
}
}; // class type_exception
/**
* This exception is thrown when an unknown version number is found in the
* layer.
*/
class version_exception : public exception {
public:
/// Constructor
explicit version_exception(const uint32_t version) :
exception(std::string{"unknown vector tile version: "} +
std::to_string(version)) {
}
}; // version_exception
/**
* This exception is thrown when an index into the key or value table
* in a layer is out of range. This can only happen if the tile data is
* invalid.
*/
class out_of_range_exception : public exception {
public:
/// Constructor
explicit out_of_range_exception(const uint32_t index) :
exception(std::string{"index out of range: "} +
std::to_string(index)) {
}
}; // out_of_range_exception
} // namespace vtzero
#endif // VTZERO_EXCEPTION_HPP