/
dataoutput.h
139 lines (129 loc) · 3.89 KB
/
dataoutput.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#ifndef INCLUDED_DATAOUTPUT_H
#define INCLUDED_DATAOUTPUT_H
#include <stdio.h>
#include <stdint.h>
#include <string>
#include <vector>
#ifdef USE_XLSXIO
#include <xlsxio_write.h>
#endif
#ifdef USE_XLSXIO
#define DATAOUTPUT_FORMAT_HELP_LIST "TSV/TXT/HTML/XML/XLSX"
#else
#define DATAOUTPUT_FORMAT_HELP_LIST "TSV/TXT/HTML/XML"
#endif
class DataOutputBase* CreateDataOutput (const char* dstformat, const char* dstfilename);
class DataOutputBase
{
public:
virtual ~DataOutputBase ();
virtual void AddColumn (const char* name, int width = 0) = 0;
virtual void AddRow () = 0;
virtual void AddData (int value) = 0;
virtual void AddData (int64_t value) = 0;
virtual void AddData (double value) = 0;
virtual void AddData (const char* value) = 0;
};
class DataOutputTSV : public DataOutputBase
{
protected:
FILE* dst;
bool owndst;
int col;
public:
DataOutputTSV ();
DataOutputTSV (const char* filename);
virtual ~DataOutputTSV ();
static const char* GetDefaultExtension () { return ".tsv"; }
virtual void AddColumn (const char* name, int width = 0);
virtual void AddRow ();
virtual void AddData (int value);
virtual void AddData (int64_t value);
virtual void AddData (double value);
virtual void AddData (const char* value);
};
class DataOutputTXT : public DataOutputBase
{
protected:
FILE* dst;
bool owndst;
int col;
std::vector<unsigned int> colwidths;
public:
DataOutputTXT ();
DataOutputTXT (const char* filename);
virtual ~DataOutputTXT ();
static const char* GetDefaultExtension () { return ".txt"; }
virtual void AddColumn (const char* name, int width = 0);
virtual void AddRow ();
virtual void AddData (int value);
virtual void AddData (int64_t value);
virtual void AddData (double value);
virtual void AddData (const char* value);
};
class DataOutputHTML : public DataOutputBase
{
protected:
FILE* dst;
bool owndst;
std::string tablename;
int col;
std::vector<unsigned int> colwidths;
std::vector<std::string> colnames;
bool headersent;
void SendHeaderIfNeeded ();
public:
DataOutputHTML ();
DataOutputHTML (const char* filename, const char* title = NULL);
virtual ~DataOutputHTML ();
static const char* GetDefaultExtension () { return ".html"; }
virtual void AddColumn (const char* name, int width = 0);
virtual void AddRow ();
virtual void AddData (int value);
virtual void AddData (int64_t value);
virtual void AddData (double value);
virtual void AddData (const char* value);
};
class DataOutputXML : public DataOutputBase
{
protected:
FILE* dst;
bool owndst;
std::string tablename;
int col;
bool headersent;
std::vector<unsigned int> colwidths;
std::vector<std::string> colnames;
static std::string ConvertToXMLData (std::string str);
void SendHeaderIfNeeded ();
public:
DataOutputXML ();
DataOutputXML (const char* filename, const char* worksheetname = NULL);
virtual ~DataOutputXML ();
static const char* GetDefaultExtension () { return ".xml"; }
virtual void AddColumn (const char* name, int width = 0);
virtual void AddRow ();
virtual void AddData (int value);
virtual void AddData (int64_t value);
virtual void AddData (double value);
virtual void AddData (const char* value);
};
#ifdef USE_XLSXIO
class DataOutputXLSX : public DataOutputBase
{
protected:
xlsxiowriter dst;
public:
DataOutputXLSX (const char* filename);
DataOutputXLSX (const char* filename, const char* sheetname);
virtual ~DataOutputXLSX ();
static const char* GetDefaultExtension () { return ".xlsx"; }
virtual void AddColumn (const char* name, int width = 0);
virtual void AddRow ();
virtual void AddData (int value);
virtual void AddData (int64_t value);
virtual void AddData (double value);
virtual void AddData (const char* value);
};
#endif
#endif //INCLUDED_DATAOUTPUT_H