Libraries/ConfigDB/src/include/ConfigDB/Format.h
Go to the documentation of this file.
1 
20 #pragma once
21 
23 #include "Status.h"
24 #include "StoreRef.h"
25 
26 namespace ConfigDB
27 {
28 class Database;
29 class Store;
30 class Object;
31 
33 {
34 public:
35  virtual Status getStatus() const = 0;
36 };
37 
41 struct ExportOptions {
45  bool useName{false};
46 
52  bool asObject{false};
53 
57  bool pretty{false};
58 };
59 
64 {
65 public:
66  virtual Status getStatus() const = 0;
67 };
68 
72 class Format
73 {
74 public:
82  virtual std::unique_ptr<ExportStream> createExportStream(Database& db, const ExportOptions& options = {}) const = 0;
83 
92  virtual std::unique_ptr<ExportStream> createExportStream(StoreRef store, const Object& object,
93  const ExportOptions& options = {}) const = 0;
94 
102  virtual size_t exportToStream(const Object& object, Print& output, const ExportOptions& options = {}) const = 0;
103 
111  virtual size_t exportToStream(Database& database, Print& output, const ExportOptions& options = {}) const = 0;
112 
117  virtual std::unique_ptr<ImportStream> createImportStream(Database& db) const = 0;
118 
126  virtual std::unique_ptr<ImportStream> createImportStream(StoreUpdateRef& store, Object& object) const = 0;
127 
131  virtual Status importFromStream(Object& object, Stream& source) const = 0;
132 
138  virtual Status importFromStream(Database& database, Stream& source) const = 0;
139 
143  virtual String getFileExtension() const = 0;
144 
148  virtual MimeType getMimeType() const = 0;
149 };
150 
151 } // namespace ConfigDB
Definition: Database.h:30
Interface for formatted export stream.
Definition: Libraries/ConfigDB/src/include/ConfigDB/Format.h:64
virtual Status getStatus() const =0
virtual MimeType getMimeType() const =0
Get the MIME type for this reader format.
virtual std::unique_ptr< ExportStream > createExportStream(Database &db, const ExportOptions &options={}) const =0
Create a stream to serialize the entire database.
virtual size_t exportToStream(const Object &object, Print &output, const ExportOptions &options={}) const =0
Print object.
virtual Status importFromStream(Object &object, Stream &source) const =0
De-serialise content from stream into object (RAM)
virtual std::unique_ptr< ExportStream > createExportStream(StoreRef store, const Object &object, const ExportOptions &options={}) const =0
Create a stream to serialize an Object.
virtual size_t exportToStream(Database &database, Print &output, const ExportOptions &options={}) const =0
Serialise entire database directly to an output stream.
virtual std::unique_ptr< ImportStream > createImportStream(StoreUpdateRef &store, Object &object) const =0
Create a stream for de-serialising (writing) into a store.
virtual std::unique_ptr< ImportStream > createImportStream(Database &db) const =0
Create a stream for de-serialising (writing) into the database Used when updating a database from a r...
virtual String getFileExtension() const =0
Get the standard file extension for the reader implementation.
virtual Status importFromStream(Database &database, Stream &source) const =0
De-serialise content from stream into database Each store is overwritten as it is loadded....
Definition: Libraries/ConfigDB/src/include/ConfigDB/Format.h:33
virtual Status getStatus() const =0
An object can contain other objects, properties and arrays.
Definition: Libraries/ConfigDB/src/include/ConfigDB/Object.h:37
Definition: StoreRef.h:29
Definition: StoreRef.h:46
Base class for read-only stream.
Definition: DataSourceStream.h:46
Provides formatted output to stream.
Definition: Print.h:37
Base class for read/write stream.
Definition: ReadWriteStream.h:20
Base Stream class.
Definition: Wiring/Stream.h:33
The String class.
Definition: WString.h:133
MimeType
Definition: WebConstants.h:53
Definition: Array.h:26
Definition: Formatter.h:20
Options for streaming object output.
Definition: Libraries/ConfigDB/src/include/ConfigDB/Format.h:41
bool useName
Include the object name in output.
Definition: Libraries/ConfigDB/src/include/ConfigDB/Format.h:45
bool pretty
Set compact (default) or prettified output.
Definition: Libraries/ConfigDB/src/include/ConfigDB/Format.h:57
bool asObject
Wrap everything as an object definition.
Definition: Libraries/ConfigDB/src/include/ConfigDB/Format.h:52
Definition: Status.h:54