libdballe  9.11
db/v7/fwd.h
1 #ifndef DBALLE_DB_V7_FWD_H
2 #define DBALLE_DB_V7_FWD_H
3 
4 namespace dballe {
5 namespace db {
6 namespace v7 {
7 
8 struct Transaction;
9 struct QueryBuilder;
10 struct StationQueryBuilder;
11 struct DataQueryBuilder;
12 struct SummaryQueryBuilder;
13 struct IdQueryBuilder;
14 struct DB;
15 struct Repinfo;
16 struct Station;
17 struct LevTr;
18 struct LevTrEntry;
19 struct SQLTrace;
20 struct Driver;
21 
22 namespace cursor {
23 struct Stations;
24 struct StationData;
25 struct Data;
26 struct Summary;
27 }
28 
29 namespace batch {
30 struct Station;
31 struct StationDatum;
32 struct MeasuredDatum;
33 }
34 
35 namespace trace {
36 struct Step;
37 struct Transaction;
38 }
39 
44 template<typename Step=trace::Step>
45 class Tracer
46 {
47 protected:
48  Step* step;
49 
50 public:
51  Tracer() : step(nullptr) {}
52  Tracer(Step* step) : step(step) {}
53  Tracer(const Tracer&) = delete;
54  Tracer(Tracer&& o)
55  : step(o.step)
56  {
57  o.step = nullptr;
58  }
59  Tracer& operator=(const Tracer&) = delete;
60  Tracer& operator=(Tracer&&) = delete;
61  ~Tracer()
62  {
63  if (step) step->done();
64  }
65  void reset(Step* step)
66  {
67  this->step = step;
68  }
69  void done()
70  {
71  if (step) step->done();
72  step = nullptr;
73  }
74  Step* operator->() { return step; }
75  operator bool() const { return step; }
76 };
77 
78 }
79 }
80 }
81 
82 #endif
Definition: cmdline.h:18
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:45