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