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