libdballe  9.14
dbapi.h
1 #ifndef DBALLE_FORTRAN_DBAPI_H
2 #define DBALLE_FORTRAN_DBAPI_H
3 
4 #include "commonapi.h"
5 #include <dballe/file.h>
6 
7 namespace dballe {
8 struct DB;
9 
10 namespace db {
11 struct CursorStation;
12 struct Transaction;
13 } // namespace db
14 
15 namespace fortran {
16 
17 struct InputFile;
18 struct OutputFile;
19 
21 {
22 protected:
23  void shutdown(bool commit);
24 
25 public:
26  std::shared_ptr<db::Transaction> tr;
27  InputFile* input_file = nullptr;
28  OutputFile* output_file = nullptr;
29 
30  DbAPI(std::shared_ptr<db::Transaction> tr, const char* anaflag,
31  const char* dataflag, const char* attrflag);
32  DbAPI(std::shared_ptr<db::Transaction> tr, unsigned perms);
33  virtual ~DbAPI();
34 
35  void seti(const char* param, int value) override;
36  void reinit_db(const char* repinfofile = nullptr) override;
37  void remove_all() override;
38  int query_stations() override;
39  int query_data() override;
40  void insert_data() override;
41  void remove_data() override;
42  void commit() override;
43  void messages_open_input(const char* filename, const char* mode,
44  Encoding format, bool simplified = true) override;
45  void messages_open_output(const char* filename, const char* mode,
46  Encoding format) override;
47  bool messages_read_next() override;
48  void messages_write_next(const char* template_name = 0) override;
49 
50  static std::unique_ptr<API> fortran_connect(const DBConnectOptions& options,
51  const char* anaflag,
52  const char* dataflag,
53  const char* attrflag);
54 
55  friend class Operation;
56 };
57 
58 } // namespace fortran
59 } // namespace dballe
60 
61 #endif
Common implementation of the set* and enq* machinery using input and output records.
Definition: commonapi.h:172
Operation-specific behaviour for the API.
Definition: commonapi.h:44
Definition: cmdline.h:18
Definition: dbapi.h:20
Options controlling how to connect to a database.
Definition: db.h:17