libdballe  8.6
core/cursor.h
1 #ifndef DBALLE_CORE_CURSOR_H
2 #define DBALLE_CORE_CURSOR_H
3 
4 #include <dballe/cursor.h>
5 #include <dballe/core/enq.h>
6 #include <memory>
7 
8 namespace dballe {
9 namespace impl {
10 
13 {
14  virtual void enq(Enq& enq) const = 0;
15 
17  inline static std::unique_ptr<CursorStation> downcast(std::unique_ptr<dballe::CursorStation> c)
18  {
19  return std::unique_ptr<CursorStation>(dynamic_cast<CursorStation*>(c.release()));
20  }
21 
23  static std::unique_ptr<CursorStation> make_empty();
24 };
25 
28 {
29  virtual void enq(Enq& enq) const = 0;
30 
32  inline static std::unique_ptr<CursorStationData> downcast(std::unique_ptr<dballe::CursorStationData> c)
33  {
34  return std::unique_ptr<CursorStationData>(dynamic_cast<CursorStationData*>(c.release()));
35  }
36 
38  static std::unique_ptr<CursorStationData> make_empty();
39 };
40 
43 {
44  virtual void enq(Enq& enq) const = 0;
45 
47  inline static std::unique_ptr<CursorData> downcast(std::unique_ptr<dballe::CursorData> c)
48  {
49  return std::unique_ptr<CursorData>(dynamic_cast<CursorData*>(c.release()));
50  }
51 
53  static std::unique_ptr<CursorData> make_empty();
54 };
55 
58 {
59  virtual void enq(Enq& enq) const = 0;
60 
62  inline static std::unique_ptr<CursorSummary> downcast(std::unique_ptr<dballe::CursorSummary> c)
63  {
64  return std::unique_ptr<CursorSummary>(dynamic_cast<CursorSummary*>(c.release()));
65  }
66 
68  static std::unique_ptr<CursorSummary> make_empty();
69 };
70 
73 {
74  virtual void enq(Enq& enq) const {}
75 
77  inline static std::unique_ptr<CursorMessage> downcast(std::unique_ptr<dballe::CursorMessage> c)
78  {
79  return std::unique_ptr<CursorMessage>(dynamic_cast<CursorMessage*>(c.release()));
80  }
81 
83  static std::unique_ptr<CursorMessage> make_empty();
84 };
85 
86 }
87 }
88 #endif
Class passed to key-value accessors to set values in an invoker-defined way.
Definition: core/enq.h:17
Cursor iterating over messages.
Definition: core/cursor.h:72
static std::unique_ptr< CursorData > downcast(std::unique_ptr< dballe::CursorData > c)
Downcast a unique_ptr pointer.
Definition: core/cursor.h:47
Cursor iterating over station data values.
Definition: core/cursor.h:27
Cursor iterating over summary entries.
Definition: cursor.h:97
static std::unique_ptr< CursorSummary > downcast(std::unique_ptr< dballe::CursorSummary > c)
Downcast a unique_ptr pointer.
Definition: core/cursor.h:62
static std::unique_ptr< CursorStation > downcast(std::unique_ptr< dballe::CursorStation > c)
Downcast a unique_ptr pointer.
Definition: core/cursor.h:17
static std::unique_ptr< CursorMessage > downcast(std::unique_ptr< dballe::CursorMessage > c)
Downcast a unique_ptr pointer.
Definition: core/cursor.h:77
Definition: cmdline.h:18
Cursor iterating over data values.
Definition: cursor.h:77
Cursor iterating over messages.
Definition: cursor.h:117
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:42
Cursor iterating over summary entries.
Definition: core/cursor.h:57
Cursor iterating over stations.
Definition: cursor.h:56
static std::unique_ptr< CursorStationData > downcast(std::unique_ptr< dballe::CursorStationData > c)
Downcast a unique_ptr pointer.
Definition: core/cursor.h:32
static std::unique_ptr< CursorStation > make_empty()
Create a CursorStation iterating on no results.