libdballe  8.6
exporter.h
1 #ifndef DBALLE_EXPORTER_H
2 #define DBALLE_EXPORTER_H
3 
4 #include <dballe/fwd.h>
5 #include <vector>
6 #include <memory>
7 #include <string>
8 #include <cstdio>
9 #include <functional>
10 
11 namespace wreport {
12 struct Bulletin;
13 }
14 
15 namespace dballe {
16 
25 {
26 public:
28  std::string template_name;
30  int centre = MISSING_INT;
32  int subcentre = MISSING_INT;
34  int application = MISSING_INT;
35 
36 
37  bool operator==(const ExporterOptions&) const;
38  bool operator!=(const ExporterOptions&) const;
39 
41  void print(FILE* out);
42 
44  std::string to_string() const;
45 
47  static std::unique_ptr<ExporterOptions> create();
48 
49  static const ExporterOptions defaults;
50 
51  friend class Exporter;
52 
53 protected:
55  ExporterOptions() = default;
56  ExporterOptions(const ExporterOptions&) = default;
57  ExporterOptions(ExporterOptions&&) = default;
58  ExporterOptions& operator=(const ExporterOptions&) = default;
59  ExporterOptions& operator=(ExporterOptions&&) = default;
60 };
61 
62 
66 class Exporter
67 {
68 protected:
69  ExporterOptions opts;
70 
71  Exporter(const ExporterOptions& opts);
72 
73 public:
74  Exporter(const Exporter&) = delete;
75  Exporter(Exporter&&) = delete;
76  virtual ~Exporter();
77 
78  Exporter& operator=(const Exporter&) = delete;
79  Exporter& operator=(Exporter&&) = delete;
80 
89  virtual std::string to_binary(const std::vector<std::shared_ptr<Message>>& messages) const = 0;
90 
94  virtual std::unique_ptr<wreport::Bulletin> to_bulletin(const std::vector<std::shared_ptr<Message>>& msgs) const = 0;
95 
102  virtual std::unique_ptr<wreport::Bulletin> make_bulletin() const;
103 
104 
106  static std::unique_ptr<Exporter> create(Encoding type, const ExporterOptions& opts=ExporterOptions::defaults);
107 };
108 
109 }
110 
111 #endif
std::string template_name
Name of template to use for output (leave empty to autodetect)
Definition: exporter.h:28
Message exporter interface.
Definition: exporter.h:66
Definition: cmdline.h:18
Options to control message export.
Definition: exporter.h:24