libdballe 9.6
db/v7/fwd.h
1#ifndef DBALLE_DB_V7_FWD_H
2#define DBALLE_DB_V7_FWD_H
3
4namespace dballe {
5namespace db {
6namespace v7 {
7
8struct Transaction;
9struct QueryBuilder;
10struct StationQueryBuilder;
11struct DataQueryBuilder;
12struct SummaryQueryBuilder;
13struct IdQueryBuilder;
14struct DB;
15struct Repinfo;
16struct Station;
17struct LevTr;
18struct LevTrEntry;
19struct SQLTrace;
20struct Driver;
21
22namespace cursor {
23struct Stations;
24struct StationData;
25struct Data;
26struct Summary;
27}
28
29namespace batch {
30struct Station;
31struct StationDatum;
32struct MeasuredDatum;
33}
34
35namespace trace {
36struct Step;
37struct Transaction;
38}
39
44template<typename Step=trace::Step>
45class Tracer
46{
47protected:
48 Step* step;
49
50public:
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
Smart pointer for trace::Step objects, which calls done() when going out of scope.
Definition: db/v7/fwd.h:46