IODA Bundle
ODAOutput.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright 1996-2012 ECMWF.
3  *
4  * This software is licensed under the terms of the Apache Licence Version 2.0
5  * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6  * In applying this licence, ECMWF does not waive the privileges and immunities
7  * granted to it by virtue of its status as an intergovernmental organisation nor
8  * does it submit to any jurisdiction.
9  */
10 
11 /// @author Piotr Kuchta
12 /// @author Simon Smart
13 /// @date Jan 2009
14 /// @date Aug 2018
15 
16 #ifndef odc_sql_ODAOutput_H
17 #define odc_sql_ODAOutput_H
18 
19 
20 #include "eckit/sql/SQLOutput.h"
21 #include "odc/core/MetaData.h"
22 
23 namespace odc {
24 namespace sql {
25 
26 //----------------------------------------------------------------------------------------------------------------------
27 
28 template <typename WRITER>
29 class ODAOutput : public eckit::sql::SQLOutput {
30 public:
31 
32  ODAOutput(WRITER*);
33 // ODAOutput(WRITER*, const MetaData&);
34  virtual ~ODAOutput(); // Change to virtual if base class
35 
36 private: // methods
37 
38  virtual void print(std::ostream&) const override;
39 
40 // -- Members
41 
42  std::unique_ptr<WRITER> writer_;
43 
44  typename WRITER::iterator it_;
45 
46 // MetaData metaData_;
47 
48  unsigned long long count_;
49 
50 // -- Overridden methods
51  virtual void reset() override;
52  virtual void flush() override;
53  virtual bool output(const eckit::sql::expression::Expressions&) override;
54  virtual void preprepare(eckit::sql::SQLSelect&) override;
55  virtual void prepare(eckit::sql::SQLSelect&) override;
56  virtual void cleanup(eckit::sql::SQLSelect&) override;
57  virtual unsigned long long count() override;
58 
59  // Overridden (and removed) functions
60 
61  virtual void outputReal(double, bool) override;
62  virtual void outputDouble(double, bool) override;
63  virtual void outputInt(double, bool) override;
64  virtual void outputUnsignedInt(double, bool) override;
65  virtual void outputString(const char*, size_t, bool) override;
66  virtual void outputBitfield(double, bool) override;
67 };
68 
69 //----------------------------------------------------------------------------------------------------------------------
70 
71 } // namespace sql
72 
73 //----------------------------------------------------------------------------------------------------------------------
74 
75 // We explicitly instantiate this template in the .cc file, so don't instantiate in each
76 // translation unit.
77 
79 template <typename ITERATOR> class Writer;
80 class DispatchingWriter;
81 
83 extern template class sql::ODAOutput<DispatchingWriter>;
84 
85 //----------------------------------------------------------------------------------------------------------------------
86 
87 } // namespace odc
88 
89 #endif
virtual void preprepare(eckit::sql::SQLSelect &) override
Definition: ODAOutput.cc:82
virtual ~ODAOutput()
Definition: ODAOutput.cc:45
virtual void prepare(eckit::sql::SQLSelect &) override
Definition: ODAOutput.cc:85
std::unique_ptr< WRITER > writer_
Definition: ODAOutput.h:42
virtual void flush() override
Definition: ODAOutput.cc:60
virtual bool output(const eckit::sql::expression::Expressions &) override
Definition: ODAOutput.cc:66
unsigned long long count_
Definition: ODAOutput.h:48
virtual void outputBitfield(double, bool) override
Definition: ODAOutput.cc:124
WRITER::iterator it_
Definition: ODAOutput.h:44
virtual void outputUnsignedInt(double, bool) override
Definition: ODAOutput.cc:122
virtual void outputInt(double, bool) override
Definition: ODAOutput.cc:121
virtual void reset() override
Definition: ODAOutput.cc:57
virtual unsigned long long count() override
Definition: ODAOutput.cc:54
ODAOutput(WRITER *)
Definition: ODAOutput.cc:38
virtual void cleanup(eckit::sql::SQLSelect &) override
Definition: ODAOutput.cc:63
virtual void print(std::ostream &) const override
Definition: ODAOutput.cc:48
virtual void outputString(const char *, size_t, bool) override
Definition: ODAOutput.cc:123
virtual void outputDouble(double, bool) override
Definition: ODAOutput.cc:120
virtual void outputReal(double, bool) override
Definition: ODAOutput.cc:119
Definition: ColumnInfo.h:23