BIMHome v1.0.0
BIMHome接口文档说明
Writer.h
浏览该文件的文档.
1/************************************************************************
2* @file Writer.h
3*
4* @brief
5*
6* @details
7*
8* @author wukx
9*
10* @version v1.0
11*
12* @date 2016.9.30
13*
14* @license 北京华科软科技有限公司
15*
16*************************************************************************/
17
18#ifndef BIMHOMEBASE_WRITER_H
19#define BIMHOMEBASE_WRITER_H
20
21
22#include <set>
23#include <string>
24#include <sstream>
25#include <vector>
26#include <cassert>
27
28#ifdef _MSC_VER
29#include <zipios++/zipios-config.h>
30#endif
31#include <zipios++/zipfile.h>
32#include <zipios++/zipinputstream.h>
33#include <zipios++/zipoutputstream.h>
34#include <zipios++/meta-iostreams.h>
35
37
38
39
40namespace Base
41{
42
43 class Persistence;
44
50 class BaseExport Writer
51 {
52 public:
58
63 virtual ~Writer();
64
70 void setForceXML(bool on);
71
77 bool isForceXML();
78
84 void setFileVersion(int version);
85
91 int getFileVersion() const;
92
98 void insertAsciiFile(const char* FileName);
99
105 void insertBinFile(const char* FileName);
106
115 std::string addFile(const char* Name, const Base::Persistence* Object, std::string Path = "");
116
121 virtual void writeFiles() = 0;
122
128 const std::vector<std::string>& getFilenames() const;
129
135 void setMode(const std::string& mode);
136
142 void setModes(const std::set<std::string>& modes);
143
150 bool getMode(const std::string& mode) const;
151
157 std::set<std::string> getModes() const;
158
164 void clearMode(const std::string& mode);
165
171
177 void addError(const std::string& error);
178
184 bool hasErrors() const;
185
191
197 std::vector<std::string> getErrors() const;
198
204 const char* ind() const { return indBuf; }
205
210 void incInd();
211
216 void decInd();
217
223 virtual std::ostream& Stream() = 0;
224
230 std::string ObjectName;
231
238 std::string getUniqueFileName(const char* Name);
239
240 protected:
242 {
243 std::string FileName;
244 const Base::Persistence* Object;
245 std::string FilePath;
246 };
247
248 std::vector<FileEntry> FileList;
249 std::vector<std::string> FileNames;
250 std::vector<std::string> Errors;
251 std::set<std::string> Modes;
253 short indent;
254 char indBuf[1024];
256 bool forceXML;
259 private:
260 Writer(const Writer&);
262 };
263
264
270 class BaseExport ZipWriter : public Writer
271 {
272 public:
278 ZipWriter(const char* FileName);
279
285 ZipWriter(std::ostream&);
286
291 virtual ~ZipWriter();
292
297 virtual void writeFiles();
298
304 virtual std::ostream& Stream() { return ZipStream; }
305
311 void setComment(const char* str) { ZipStream.setComment(str); }
312
318 void setLevel(int level) { ZipStream.setLevel(level); }
319
325 void putNextEntry(const char* str) { ZipStream.putNextEntry(str); }
326
332 zipios::ZipOutputStream& getZipStream() { return ZipStream; }
333
334 private:
335 zipios::ZipOutputStream ZipStream;
336 };
337
343 class BaseExport StringWriter : public Writer
344 {
345 public:
351 virtual std::ostream& Stream() { return StrStream; }
352
358 std::string getString() const { return StrStream.str(); }
359
364 virtual void writeFiles() {}
365
366 private:
367 std::stringstream StrStream;
368 };
369
376 class BaseExport FileWriter : public Writer
377 {
378 public:
384 FileWriter(const char* DirName);
385
390 virtual ~FileWriter();
391
397 void putNextEntry(const char* file);
398
403 virtual void writeFiles();
404
410 virtual std::ostream& Stream() { return FileStream; }
411
416 void close() { FileStream.close(); }
417
426 virtual bool shouldWrite(const std::string& name, const Base::Persistence* Object) const;
427
428 protected:
429 std::string DirName;
430 std::ofstream FileStream;
431 };
432
433
434} //namespace Base
435
436
437#endif // BIMHOMEBASE_WRITER_H
virtual std::ostream & Stream()
获取当前的输出流
Definition Writer.h:410
virtual bool shouldWrite(const std::string &name, const Base::Persistence *Object) const
检查是否应该写入对象
std::string DirName
输出目录的路径
Definition Writer.h:429
FileWriter(const char *DirName)
构造函数
void close()
关闭输出流
Definition Writer.h:416
void putNextEntry(const char *file)
添加一个新的文件条目
std::ofstream FileStream
文件输出流对象
Definition Writer.h:430
virtual ~FileWriter()
析构函数
virtual void writeFiles()
写入文件
FileWriter 类,用于将数据写入文件
Definition Writer.h:377
virtual std::ostream & Stream()
获取当前的输出流
Definition Writer.h:351
std::string getString() const
获取字符串流的内容
Definition Writer.h:358
std::stringstream StrStream
字符串流对象
Definition Writer.h:367
virtual void writeFiles()
写入文件(空实现)
Definition Writer.h:364
StringWriter 类,用于将数据写入字符串流
Definition Writer.h:344
std::set< std::string > Modes
模式集合
Definition Writer.h:251
const char * ind() const
获取当前缩进
Definition Writer.h:204
bool getMode(const std::string &mode) const
获取模式
const std::vector< std::string > & getFilenames() const
获取所有注册的文件名
std::vector< std::string > Errors
错误信息列表
Definition Writer.h:250
std::vector< FileEntry > FileList
文件条目列表
Definition Writer.h:248
bool isForceXML()
检查是否启用了仅 XML 模式
void setFileVersion(int version)
设置文件版本
Writer()
默认构造函数
Writer(const Writer &)
私有复制构造函数,禁止复制
std::string ObjectName
获取对象名称
Definition Writer.h:230
void clearModes()
清除所有模式
std::set< std::string > getModes() const
获取所有模式
void clearMode(const std::string &mode)
清除模式
void clearErrors()
清除所有错误信息
short indent
当前缩进级别
Definition Writer.h:253
void insertAsciiFile(const char *FileName)
插入 ASCII 文件到 XML 文件中
virtual void writeFiles()=0
处理文件写入请求
void decInd()
减少缩进
void setMode(const std::string &mode)
设置模式
virtual std::ostream & Stream()=0
获取输出流
std::vector< std::string > FileNames
注册的文件名列表
Definition Writer.h:249
void setModes(const std::set< std::string > &modes)
设置多个模式
void addError(const std::string &error)
添加错误信息
int getFileVersion() const
获取文件版本
void insertBinFile(const char *FileName)
插入二进制文件到 XML 文件中
int fileVersion
文件版本号
Definition Writer.h:257
std::vector< std::string > getErrors() const
获取所有错误信息
std::string getUniqueFileName(const char *Name)
获取唯一的文件名
bool hasErrors() const
检查是否有错误
void setForceXML(bool on)
设置 Writer 为仅 XML 模式(不允许写入文件)
std::string addFile(const char *Name, const Base::Persistence *Object, std::string Path="")
添加文件写入请求
virtual ~Writer()
析构函数
Writer & operator=(const Writer &)
私有赋值操作符,禁止赋值
bool forceXML
是否启用仅 XML 模式
Definition Writer.h:256
void incInd()
增加缩进
Writer 类,用于处理持久化对象的存储和检索
Definition Writer.h:51
virtual std::ostream & Stream()
获取当前的输出流
Definition Writer.h:304
void setComment(const char *str)
设置 ZIP 文件的注释
Definition Writer.h:311
zipios::ZipOutputStream & getZipStream()
获取 ZIP 输出流
Definition Writer.h:332
void setLevel(int level)
设置 ZIP 压缩级别
Definition Writer.h:318
ZipWriter(const char *FileName)
构造函数,通过文件名初始化 ZipWriter
zipios::ZipOutputStream ZipStream
ZIP 输出流对象
Definition Writer.h:335
virtual ~ZipWriter()
析构函数
void putNextEntry(const char *str)
添加一个新的条目到 ZIP 文件
Definition Writer.h:325
ZipWriter(std::ostream &)
构造函数,通过输出流初始化 ZipWriter
virtual void writeFiles()
写入文件到 ZIP 归档
ZipWriter 类,用于处理 ZIP 文件的写入操作
Definition Writer.h:271
Definition BaseFigureFactory.h:24
std::string FileName
文件名
Definition Writer.h:243
std::string FilePath
文件路径
Definition Writer.h:245
const Base::Persistence * Object
指向持久化对象的指针
Definition Writer.h:244
Definition Writer.h:242