1 #ifndef DBALLE_CORE_CURSOR_H 2 #define DBALLE_CORE_CURSOR_H 4 #include <dballe/cursor.h> 5 #include <dballe/core/enq.h> 14 virtual void enq(
Enq& enq)
const = 0;
17 inline static std::shared_ptr<CursorStation>
downcast(std::shared_ptr<dballe::CursorStation> c)
21 throw std::runtime_error(
"Attempted to downcast the wrong kind of cursor");
26 static std::shared_ptr<CursorStation>
make_empty();
32 virtual void enq(
Enq& enq)
const = 0;
35 inline static std::shared_ptr<CursorStationData>
downcast(std::shared_ptr<dballe::CursorStationData> c)
39 throw std::runtime_error(
"Attempted to downcast the wrong kind of cursor");
44 static std::shared_ptr<CursorStationData>
make_empty();
50 virtual void enq(
Enq& enq)
const = 0;
53 inline static std::shared_ptr<CursorData>
downcast(std::shared_ptr<dballe::CursorData> c)
55 auto res = std::dynamic_pointer_cast<
CursorData>(c);
57 throw std::runtime_error(
"Attempted to downcast the wrong kind of cursor");
62 static std::shared_ptr<CursorData>
make_empty();
68 virtual void enq(
Enq& enq)
const = 0;
71 inline static std::shared_ptr<CursorSummary>
downcast(std::shared_ptr<dballe::CursorSummary> c)
75 throw std::runtime_error(
"Attempted to downcast the wrong kind of cursor");
80 static std::shared_ptr<CursorSummary>
make_empty();
86 virtual void enq(
Enq& enq)
const {}
89 inline static std::shared_ptr<CursorMessage>
downcast(std::shared_ptr<dballe::CursorMessage> c)
93 throw std::runtime_error(
"Attempted to downcast the wrong kind of cursor");
98 static std::shared_ptr<CursorMessage>
make_empty();
static std::shared_ptr< CursorMessage > make_empty()
Create a CursorStation iterating on no results.
Class passed to key-value accessors to set values in an invoker-defined way.
Definition: core/enq.h:17
static std::shared_ptr< CursorData > downcast(std::shared_ptr< dballe::CursorData > c)
Downcast a shared_ptr pointer.
Definition: core/cursor.h:53
Cursor iterating over messages.
Definition: core/cursor.h:84
static std::shared_ptr< CursorStationData > make_empty()
Create a CursorStationData iterating on no results.
Cursor iterating over station data values.
Definition: core/cursor.h:30
Cursor iterating over summary entries.
Definition: cursor.h:97
Cursor iterating over data values.
Definition: cursor.h:77
static std::shared_ptr< CursorStation > downcast(std::shared_ptr< dballe::CursorStation > c)
Downcast a shared_ptr pointer.
Definition: core/cursor.h:17
Cursor iterating over messages.
Definition: cursor.h:117
static std::shared_ptr< CursorMessage > downcast(std::shared_ptr< dballe::CursorMessage > c)
Downcast a shared_ptr pointer.
Definition: core/cursor.h:89
static std::shared_ptr< CursorSummary > downcast(std::shared_ptr< dballe::CursorSummary > c)
Downcast a shared_ptr pointer.
Definition: core/cursor.h:71
static std::shared_ptr< CursorStation > make_empty()
Create a CursorStation iterating on no results.
static std::shared_ptr< CursorStationData > downcast(std::shared_ptr< dballe::CursorStationData > c)
Downcast a shared_ptr pointer.
Definition: core/cursor.h:35
static std::shared_ptr< CursorSummary > make_empty()
Create a CursorSummary iterating on no results.
Cursor iterating over station data values.
Definition: cursor.h:66
Cursor iterating over stations.
Definition: core/cursor.h:12
Cursor iterating over data values.
Definition: core/cursor.h:48
Cursor iterating over summary entries.
Definition: core/cursor.h:66
Cursor iterating over stations.
Definition: cursor.h:56
static std::shared_ptr< CursorData > make_empty()
Create a CursorData iterating on no results.