boat
C++23 geospatial library
Loading...
Searching...
No Matches
optional.hpp
Go to the documentation of this file.
1// Andrew Naplavkov
2
3#ifndef BOAT_DB_ADAPTED_OPTIONAL_HPP
4#define BOAT_DB_ADAPTED_OPTIONAL_HPP
5
6#include <boat/db/variant.hpp>
7#include <optional>
8
9namespace boat::db {
10
12template <class T>
13void read(variant const& in, std::optional<T>& out)
14 requires requires { read(in, out.emplace()); }
15{
16 in.has_value() ? read(in, out.emplace()) : out.reset();
17}
18
20template <class T>
21void write(variant& out, std::optional<T> const& in)
22 requires requires { write(out, *in); }
23{
24 in.has_value() ? write(out, *in) : out.reset();
25}
26
27template <specialized<std::optional> T>
28struct kind<T> {
29 static constexpr auto value = kind<typename T::value_type>::value;
30};
31
32} // namespace boat::db
33
34#endif // BOAT_DB_ADAPTED_OPTIONAL_HPP
Definition geometry.hpp:9
void write(variant &out, geometry::ogc99 auto const &in)
Serializes an OGC geometry as WKB in a blob.
Definition geometry.hpp:21
void read(variant const &in, geometry::ogc99 auto &out)
Reads WKB from a blob; NULL produces a default-constructed geometry.
Definition geometry.hpp:12
Definition variant.hpp:14