OpenLexocad  27.0
MemoryWriter.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Base/base_defines.h>
4 
5 #pragma warning(push)
6 #pragma warning(disable : 4100)
7 #pragma warning(disable : 4005)
8 
9 #include <Base/FileInfo.h>
10 #include <Base/String.h>
11 #include <Base/Writer.h>
12 
13 #include <fstream>
14 #include <map>
15 #include <set>
16 #include <string>
17 
18 #pragma warning(pop)
19 
20 namespace Base
21 {
22 class Persistance;
23 
24 
26 {
27 public:
28  MemoryWriter(const Base::String& FileName, int application_version, int document_version, int acis_document_version);
29  virtual ~MemoryWriter();
30 
31  ConstIterator begin(void) const override { return FileList.begin(); }
32  ConstIterator end(void) const override { return FileList.end(); }
33  void addFile(const Base::String& Name, Base::Persistance* Object) override;
34  void unsetFilenames() override;
35  const std::vector<Base::String>& getFilenames() const override;
36  const char* ind(void) override;
37  void incInd(void) override;
38  void decInd(void) override;
39  bool saveInline() override { return false; };
40  int get_application_version() const override;
41  int get_document_version() const override;
42  int get_acis_document_version() const override;
43  void putNextEntry(const Base::String& entryName) override;
44  void setComment(const std::string& comment) override;
45  void setLevel(int level) override;
46  void close() override;
47  bool good() const override;
48 
49  void clear();
50  bool writeToFile() override;
51 
52  std::ios_base::fmtflags flags() override;
53  std::streamsize precision() override;
54  char fill() override;
55  int width() override;
56  void fill(char) override;
57  void width(int) override;
58  void flags(std::ios_base::fmtflags fl) override;
59  void precision(std::streamsize sz) override;
60  uint64_t size() override;
61 
62  void appendWriter(std::shared_ptr<Base::AbstractWriter> p) override;
63  void setCurrentEntry(const Base::String& entryName) override;
64  void write(const char* s, std::streamsize sz) override;
65  std::string getString();
66  std::string getStringWithSubWriters();
67 
68  void addLargeFileToZip(Base::String entry, Base::String filename) override;
69 
70 private:
71  void appendTo(Base::AbstractWriter& w);
72  int _application_version;
73  int _document_version;
74  int _acis_document_version;
75  Base::String _fileName;
76 
77  std::string _comment;
78  int _level;
79 
80  std::map<Base::String, std::stringstream*> _entries;
81  std::vector<std::shared_ptr<Base::AbstractWriter>> _writer;
82  std::vector<std::pair<Base::String, Base::String>> largeFiles;
83 };
84 
85 } // namespace Base
bool saveInline() override
Definition: MemoryWriter.h:39
#define BASE_EXPORT
Definition: base_defines.h:12
ConstIterator begin(void) const override
Definition: MemoryWriter.h:31
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:29
Core::PropertyText comment
Definition: CoreDocument.h:157
Persistance class and root of the type system.
Definition: Persistance.h:27
Core::PropertyText filename
Definition: CoreDocument.h:151
Definition: Writer.h:27
Definition: AbstractXMLReader.h:8
std::vector< FileEntry >::const_iterator ConstIterator
Definition: Writer.h:47
ConstIterator end(void) const override
Definition: MemoryWriter.h:32
Definition: MemoryWriter.h:25