1 
2 /* Web Polygraph       http://www.web-polygraph.org/
3  * Copyright 2003-2011 The Measurement Factory
4  * Licensed under the Apache License, Version 2.0 */
5 
6 #ifndef POLYGRAPH__LOGANALYZERS_FORMATTER_H
7 #define POLYGRAPH__LOGANALYZERS_FORMATTER_H
8 
9 #include "xstd/String.h"
10 #include "xstd/h/iosfwd.h"
11 
12 // interface to format data for different mediums such as HTML page(s) or PDF
13 class Formatter {
14 	public:
~Formatter()15 		virtual ~Formatter() {}
16 
17 		virtual void openSection(const String &id, const String &title) = 0;
18 		virtual void closeSection() = 0;
19 
20 		virtual void openTable(const String &id, const String &title) = 0;
21 		virtual void openTableAnonym() = 0; // borderless, anonymous
22 		virtual void closeTable() = 0;
23 
24 		virtual void openTableRecord() = 0;
25 		virtual void closeTableRecord() = 0;
26 
27 		virtual void openTableCell(const String &classId) = 0;
28 		virtual void closeTableCell() = 0;
29 		virtual void addTableCell(const String &cell) = 0;
30 
31 		virtual void addLink(const String &addr, const String &text) = 0;
32 		virtual void addText(const String &text) = 0;
33 		virtual void addInteger(int v, const String &unit, bool addSign = false) = 0;
34 		virtual void addNothing() = 0;
35 
36 		// make formatted contents
37 		virtual void make() = 0;
38 };
39 
40 class WebPageFormatter: public Formatter {
41 	public:
42 		WebPageFormatter(ostream *aPage);
43 
44 		virtual void openSection(const String &id, const String &title);
45 		virtual void closeSection();
46 
47 		virtual void openTable(const String &id, const String &title);
48 		virtual void openTableAnonym(); // borderless, anonymous
49 		virtual void closeTable();
50 
51 		virtual void openTableRecord();
52 		virtual void closeTableRecord();
53 
54 		virtual void openTableCell(const String &classId);
55 		virtual void closeTableCell();
56 		virtual void addTableCell(const String &cell);
57 
58 		virtual void addLink(const String &addr, const String &text);
59 		virtual void addText(const String &text);
60 		virtual void addInteger(int v, const String &unit, bool addSign = false);
61 		virtual void addNothing();
62 
63 		virtual void make();
64 
65 	private:
66 		ostream *thePage;
67 };
68 
69 #endif
70