meos namespace

Classes

template<typename BaseType>
struct default_interp
Helps decide the appropriate Interpolation for specified base type.
class DeserializationException
template<typename T = float>
class Deserializer
class GeomPoint
A point in space.
template<typename BaseType>
struct is_discrete
Helps find out if a base type is discrete or not.
template<typename BaseType>
struct is_geometry
Helps find out if a base type is geometry or not.
class Period
Time interval with either inclusive or exlusive bounds.
class PeriodSet
Set of one or more Period objects.
template<typename T>
class Range
Range of values with either inclusive or exlusive bounds.
class SerializationException
template<typename T = float>
class Serializer
struct SRIDMembers
class STBox
Spatio-temporal box - bounding box with value and/or space/time dimensions.
class TBox
Temporal box - bounding box with value and/or time dimensions.
template<typename BaseType = float>
class Temporal
Base for all the temporal types - TInstant, TInstantSet, TSequence, TSequenceSet.
template<typename TemporalType>
struct TemporalComparators
template<typename BaseType = float>
class TemporalSet
Base class for TInstantSet and TSequence.
class TimestampSet
Set of one or more time_point objects.
template<typename BaseType>
class TInstant
A value at a particular instant in time.
template<typename TemporalType, typename TInstantType, typename BaseType>
struct TInstantFunctions
template<typename BaseType = float>
class TInstantSet
Set of TInstant objects.
template<typename BaseType = float>
class TSequence
Set of TInstant objects, with exclusive/inclusive bounds and Interpolation.
template<typename BaseType = float>
class TSequenceSet
Set of TSequence objects.

Enums

enum class Interpolation { Stepwise, Linear }
enum class TemporalDuration { Temporal, Instant, InstantSet, Sequence, SequenceSet }

Typedefs

using time_point = std::chrono::system_clock::time_point
using duration_ms = std::chrono::milliseconds
using RangeBool = Range<bool>
using RangeInt = Range<int>
using RangeFloat = Range<float>
using RangeText = Range<std::string>
using RangeGeomPoint = Range<GeomPoint>
using Empty = std::tuple
using TBool = Temporal<bool>
using TInt = Temporal<int>
using TFloat = Temporal<float>
using TText = Temporal<std::string>
using TGeomPoint = Temporal<GeomPoint>
using TBoolSet = TemporalSet<bool>
using TIntSet = TemporalSet<int>
using TFloatSet = TemporalSet<float>
using TTextSet = TemporalSet<std::string>
using TGeomPointSet = TemporalSet<GeomPoint>
using TBoolInst = TInstant<bool>
using TIntInst = TInstant<int>
using TFloatInst = TInstant<float>
using TTextInst = TInstant<std::string>
using TGeomPointInst = TInstant<GeomPoint>
using TBoolInstSet = TInstantSet<bool>
using TIntInstSet = TInstantSet<int>
using TFloatInstSet = TInstantSet<float>
using TTextInstSet = TInstantSet<std::string>
using TGeomPointInstSet = TInstantSet<GeomPoint>
using TBoolSeq = TSequence<bool>
using TIntSeq = TSequence<int>
using TFloatSeq = TSequence<float>
using TTextSeq = TSequence<std::string>
using TGeomPointSeq = TSequence<GeomPoint>
using TBoolSeqSet = TSequenceSet<bool>
using TIntSeqSet = TSequenceSet<int>
using TFloatSeqSet = TSequenceSet<float>
using TTextSeqSet = TSequenceSet<std::string>
using TGeomPointSeqSet = TSequenceSet<GeomPoint>

Functions

void init_geos()
void finish_geos()
template<typename T>
auto nextValue(std::istream& in) -> T
void validate_normalized_ISO8601(const std::string& s)
auto normalized_ISO8601(std::string s) -> std::string
auto nextTime(std::istream& in) -> time_point
void consume(std::istream& in, char expectedCharacter, bool skip_ws = true)
void consume(std::istream& in, std::string expectedString, bool skip_ws = true)
auto consume_one_of(std::istream& in, std::string charSet, bool skip_ws = true) -> char
auto read_until_one_of(std::istream& in, std::string end) -> std::string
auto operator<<(std::ostream& os, const Interpolation& i) -> std::ostream&
Outputs a string representation of the Interpolation to the stream.
auto write_ISO8601_time(time_point const& t) -> std::string
auto rtrim(std::string& s, std::string const& t = ws) -> std::string&
auto ltrim(std::string& s, std::string const& t = ws) -> std::string&
auto trim(std::string& s, std::string const& t = ws) -> std::string&

Variables

GEOSContextHandle_t geos_context
template<typename BaseType>
bool is_geometry_v constexpr
Shorthand for is_geometry<BaseType>::value.
int const SRID_DEFAULT
template<typename BaseType>
Interpolation default_interp_v constexpr
Shorthand for default_interp<BaseType>::value.
template<typename BaseType>
bool is_discrete_v constexpr
Shorthand for is_discrete<BaseType>::value.
std::string ws

Enum documentation

enum class meos::Interpolation

Temporal sequences and sequence sets can specify interpolation.

Discrete base types like bool, int and text can only have Stepwise interpolation. However other base types like float and geom can have Linear interpolation as well.

The following type traits are also provided: default_interp_v<BaseType> for getting the default Interpolation. is_discrete_v<BaseType> for checking if a base type is discrete or not.

Typedef documentation

typedef std::chrono::system_clock::time_point meos::time_point

typedef std::chrono::milliseconds meos::duration_ms

typedef Range<bool> meos::RangeBool

typedef Range<int> meos::RangeInt

typedef Range<float> meos::RangeFloat

typedef Range<std::string> meos::RangeText

typedef std::tuple meos::Empty

Declares an empty type

typedef Temporal<bool> meos::TBool

typedef Temporal<int> meos::TInt

typedef Temporal<float> meos::TFloat

typedef Temporal<std::string> meos::TText

typedef TemporalSet<std::string> meos::TTextSet

typedef TInstant<std::string> meos::TTextInst

typedef TInstantSet<std::string> meos::TTextInstSet

typedef TSequence<std::string> meos::TTextSeq

Function documentation

void meos::init_geos()

void meos::finish_geos()

template<typename T>
T meos::nextValue(std::istream& in)

void meos::validate_normalized_ISO8601(const std::string& s)

std::string meos::normalized_ISO8601(std::string s)

time_point meos::nextTime(std::istream& in)

Parse time in ISO8601 format Skips initial whitespaces, reads until one of ",)]}\n" is reached, and tries to parse everything in between as time in ISO8601 format

Example patterns: 1234-12-12 1234-12-12 12:12 1234-12-12T12:12 1234-12-12 12:12:12 1234-12-12T12:12:12 1234-12-12 12:12:12Z 1234-12-12 12:12:12+05 1234-12-12 12:12:12-0530 // normalized pattern

void meos::consume(std::istream& in, char expectedCharacter, bool skip_ws = true)

void meos::consume(std::istream& in, std::string expectedString, bool skip_ws = true)

char meos::consume_one_of(std::istream& in, std::string charSet, bool skip_ws = true)

std::string meos::read_until_one_of(std::istream& in, std::string end)

std::ostream& meos::operator<<(std::ostream& os, const Interpolation& i)

Outputs a string representation of the Interpolation to the stream.

std::string meos::write_ISO8601_time(time_point const& t)

std::string& meos::rtrim(std::string& s, std::string const& t = ws)

std::string& meos::ltrim(std::string& s, std::string const& t = ws)

std::string& meos::trim(std::string& s, std::string const& t = ws)

Variable documentation

GEOSContextHandle_t meos::geos_context

template<typename BaseType>
bool meos::is_geometry_v constexpr

Shorthand for is_geometry<BaseType>::value.

template<typename BaseType>
Interpolation meos::default_interp_v constexpr

Shorthand for default_interp<BaseType>::value.

template<typename BaseType>
bool meos::is_discrete_v constexpr

Shorthand for is_discrete<BaseType>::value.

std::string meos::ws