All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [Powertop] [RFC][PATCH] Small rework on report formatter side
@ 2012-10-10 23:03 Sergey Senozhatsky
  0 siblings, 0 replies; 5+ messages in thread
From: Sergey Senozhatsky @ 2012-10-10 23:03 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 21709 bytes --]

On (10/10/12 11:13), Sergey Senozhatsky wrote:
> 
> Hello,
> 
> below is initial version of rework I was talking about. Igor did most part of it (introduced 
> report_formatter_base class), so mine are just minor tweaks. I'm glad still no one mentioned
> templates, just kidding.
> 
> one thing I don't really like so far is
> 
>         else if (type == REPORT_OFF)
>                formatter = new report_formatter();
> 
> which is just cryptic and thus look wrong.
> perhaps we need something like `new report_formatter_basic()' here (which will require header
> file rename).
> 
> please review and comment.
> 
> ------------------------------------------------------------------------
> 
>     Small rework on report formatter side:
>     
>     - make report_formatter a basic class (previously was interface). hence we can
>     remove empty report_formatter interface implementation.
>     
>     - drop report-formatter-null class
>     
>     - in report maker now we create report_formatter instance for REPORT_OFF mode
>     
>     - rename report_formatter_base to report_formatter_string_base, so class name tells
>     a bit more, later we can create report_formatter_xml_base/report_formatter_json_base/etc.
> 
> 
> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
> 


plus:

-- renamed report_formatter to basic_report_formatter, so now

         else if (type == REPORT_OFF)
                formatter = new basic_report_formatter();

look a bit better (yeah, we have basic_report_formatter and report_formatter_string_base. ugly!!!)


-- removed some empty function from CSV/HTML classes. like

	void report_formatter_csv::add_empty_cell()
	{
		/* Do nothing special */
	}

we don't really need such functions in derived classes, they're already doing nothing in base class.


---
 src/Makefile.am                      |   1 -
 src/report/basic-report-formatter.h  |  65 +++++++++++++
 src/report/report-formatter-base.cpp |  14 +--
 src/report/report-formatter-base.h   |   4 +-
 src/report/report-formatter-csv.cpp  |  42 --------
 src/report/report-formatter-csv.h    |  10 +-
 src/report/report-formatter-html.h   |   2 +-
 src/report/report-formatter-null.cpp | 179 -----------------------------------
 src/report/report-formatter-null.h   |  66 -------------
 src/report/report-formatter.h        |  65 -------------
 src/report/report-maker.cpp          |   3 +-
 src/report/report-maker.h            |   4 +-
 12 files changed, 79 insertions(+), 376 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index ccf3f0c..1a64622 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -34,7 +34,6 @@ powertop_SOURCES = parameters/persistent.cpp parameters/learn.cpp parameters/par
 		report/report-formatter-base.cpp report/report-formatter-base.h \
 		report/report-formatter-csv.cpp report/report-formatter-csv.h \
 		report/report-formatter-html.cpp report/report-formatter-html.h \
-		report/report-formatter-null.cpp report/report-formatter-null.h \
 		main.cpp css.h powertop.css cpu/intel_gpu.cpp
 
 
diff --git a/src/report/basic-report-formatter.h b/src/report/basic-report-formatter.h
new file mode 100644
index 0000000..5134bf5
--- /dev/null
+++ b/src/report/basic-report-formatter.h
@@ -0,0 +1,65 @@
+/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
+ *	http://www.samsung.com/
+ *
+ * This file is part of PowerTOP
+ *
+ * This program file is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program in a file named COPYING; if not, write to the
+ * Free Software Foundation, Inc,
+ * 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ * or just google for it.
+ *
+ * report_formatter interface.
+ * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
+ * 2012.10 */
+
+#ifndef _REPORT_FORMATTER_H_
+#define _REPORT_FORMATTER_H_
+
+#include "report-maker.h"
+
+class basic_report_formatter
+{
+public:
+	virtual ~basic_report_formatter() {}
+
+	virtual void finish_report() {};
+	virtual const char *get_result() {return "Basic report_formatter::get_resul call\n";};
+	virtual void clear_result() {};
+
+	virtual void add(const char *str) {};
+	virtual void addv(const char *fmt, va_list ap) {};
+
+	virtual void add_header(const char *header, int level) {};
+
+	virtual void begin_section(section_type stype) {};
+	virtual void end_section() {};
+
+	virtual void begin_table(table_type ttype) {};
+	virtual void end_table() {};
+
+	virtual void begin_row(row_type rtype) {};
+	virtual void end_row() {};
+
+	virtual void begin_cell(cell_type ctype) {};
+	virtual void end_cell() {};
+	virtual void add_empty_cell() {};
+
+	virtual void begin_paragraph() {};
+	virtual void end_paragraph() {};
+
+	/* For quad-colouring CPU tables in HTML */
+	virtual void set_cpu_number(int nr) {};
+};
+
+#endif /* _REPORT_FORMATTER_H_ */
diff --git a/src/report/report-formatter-base.cpp b/src/report/report-formatter-base.cpp
index 4b448be..c6d5d9d 100644
--- a/src/report/report-formatter-base.cpp
+++ b/src/report/report-formatter-base.cpp
@@ -36,7 +36,7 @@
 /* ************************************************************************ */
 
 const char *
-report_formatter_base::get_result()
+report_formatter_string_base::get_result()
 {
 	return result.c_str();
 }
@@ -44,7 +44,7 @@ report_formatter_base::get_result()
 /* ************************************************************************ */
 
 void
-report_formatter_base::clear_result()
+report_formatter_string_base::clear_result()
 {
 	result.clear();
 }
@@ -52,7 +52,7 @@ report_formatter_base::clear_result()
 /* ************************************************************************ */
 
 void
-report_formatter_base::add(const char *str)
+report_formatter_string_base::add(const char *str)
 {
 	assert(str);
 
@@ -62,7 +62,7 @@ report_formatter_base::add(const char *str)
 /* ************************************************************************ */
 
 void
-report_formatter_base::add_exact(const char *str)
+report_formatter_string_base::add_exact(const char *str)
 {
 	assert(str);
 
@@ -74,7 +74,7 @@ report_formatter_base::add_exact(const char *str)
 #define LINE_SIZE 8192
 
 void
-report_formatter_base::addv(const char *fmt, va_list ap)
+report_formatter_string_base::addv(const char *fmt, va_list ap)
 {
 	char str[LINE_SIZE];
 
@@ -87,7 +87,7 @@ report_formatter_base::addv(const char *fmt, va_list ap)
 /* ************************************************************************ */
 
 void
-report_formatter_base::addf(const char *fmt, ...)
+report_formatter_string_base::addf(const char *fmt, ...)
 {
 	va_list ap;
 
@@ -101,7 +101,7 @@ report_formatter_base::addf(const char *fmt, ...)
 /* ************************************************************************ */
 
 void
-report_formatter_base::addf_exact(const char *fmt, ...)
+report_formatter_string_base::addf_exact(const char *fmt, ...)
 {
 	char str[LINE_SIZE];
 	va_list ap;
diff --git a/src/report/report-formatter-base.h b/src/report/report-formatter-base.h
index 7063174..61cf1ba 100644
--- a/src/report/report-formatter-base.h
+++ b/src/report/report-formatter-base.h
@@ -26,9 +26,9 @@
 #ifndef _REPORT_FORMATTER_BASE_H_
 #define _REPORT_FORMATTER_BASE_H_
 
-#include "report-formatter.h"
+#include "basic-report-formatter.h"
 
-class report_formatter_base: public report_formatter
+class report_formatter_string_base: public basic_report_formatter
 {
 public:
 	virtual const char *get_result();
diff --git a/src/report/report-formatter-csv.cpp b/src/report/report-formatter-csv.cpp
index 9b154b5..893c92a 100644
--- a/src/report/report-formatter-csv.cpp
+++ b/src/report/report-formatter-csv.cpp
@@ -45,14 +45,6 @@ report_formatter_csv::report_formatter_csv()
 /* ************************************************************************ */
 
 void
-report_formatter_csv::finish_report()
-{
-	/* Do nothing special */
-}
-
-/* ************************************************************************ */
-
-void
 report_formatter_csv::add_doc_header()
 {
 	add_header(report_csv_header, 1);
@@ -72,24 +64,6 @@ report_formatter_csv::add_header(const char *header, int level)
 	add_exact("\n");
 }
 
-/* ************************************************************************ */
-
-void
-report_formatter_csv::begin_section(section_type stype)
-{
-	/* Do nothing special */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_csv::end_section()
-{
-	/* Do nothing special */
-}
-
-/* ************************************************************************ */
-
 void
 report_formatter_csv::begin_table(table_type ttype)
 {
@@ -163,14 +137,6 @@ report_formatter_csv::end_cell()
 /* ************************************************************************ */
 
 void
-report_formatter_csv::add_empty_cell()
-{
-	/* Do nothing special */
-}
-
-/* ************************************************************************ */
-
-void
 report_formatter_csv::begin_paragraph()
 {
 	text_start = result.length();
@@ -213,11 +179,3 @@ report_formatter_csv::escape_string(const char *str)
 
 	return res;
 }
-
-/* ************************************************************************ */
-
-void
-report_formatter_csv::set_cpu_number(int nr UNUSED)
-{
-	/* Do nothing */
-}
diff --git a/src/report/report-formatter-csv.h b/src/report/report-formatter-csv.h
index fbec0c9..8db9839 100644
--- a/src/report/report-formatter-csv.h
+++ b/src/report/report-formatter-csv.h
@@ -44,18 +44,13 @@
 
 /* ************************************************************************ */
 
-class report_formatter_csv: public report_formatter_base
+class report_formatter_csv: public report_formatter_string_base
 {
 public:
 	report_formatter_csv();
 
-	void finish_report();
-
 	void add_header(const char *header, int level);
 
-	void begin_section(section_type stype);
-	void end_section();
-
 	void begin_table(table_type ttype);
 	void end_table();
 
@@ -64,13 +59,10 @@ public:
 
 	void begin_cell(cell_type ctype);
 	void end_cell();
-	void add_empty_cell();
 
 	void begin_paragraph();
 	void end_paragraph();
 
-	void set_cpu_number(int nr);
-
 private:
 	void add_doc_header();
 
diff --git a/src/report/report-formatter-html.h b/src/report/report-formatter-html.h
index 1c3eb4a..4d00efe 100644
--- a/src/report/report-formatter-html.h
+++ b/src/report/report-formatter-html.h
@@ -55,7 +55,7 @@ struct html_cell {
 
 /* ************************************************************************ */
 
-class report_formatter_html: public report_formatter_base
+class report_formatter_html: public report_formatter_string_base
 {
 public:
 	report_formatter_html();
diff --git a/src/report/report-formatter-null.cpp b/src/report/report-formatter-null.cpp
deleted file mode 100644
index 22da7a0..0000000
--- a/src/report/report-formatter-null.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *	http://www.samsung.com/
- *
- * This file is part of PowerTOP
- *
- * This program file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program in a file named COPYING; if not, write to the
- * Free Software Foundation, Inc,
- * 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- * or just google for it.
- *
- * Null report generator.
- * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
- * 2012.10 */
-
-#include <stdarg.h>
-
-#include "report-formatter-null.h"
-
-/* ************************************************************************ */
-
-report_formatter_null::report_formatter_null()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::finish_report()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-const char *
-report_formatter_null::get_result()
-{
-	return "";
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::clear_result()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::add(const char *str UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::addv(const char *fmt UNUSED, va_list ap UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::add_header(const char *header UNUSED, int level UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_section(section_type stype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_section()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_table(table_type ttype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_table()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_row(row_type rtype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_row()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_cell(cell_type ctype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_cell()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::add_empty_cell()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_paragraph()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_paragraph()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::set_cpu_number(int nr UNUSED)
-{
-	/* Do nothing */
-}
diff --git a/src/report/report-formatter-null.h b/src/report/report-formatter-null.h
deleted file mode 100644
index 51493ee..0000000
--- a/src/report/report-formatter-null.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *	http://www.samsung.com/
- *
- * This file is part of PowerTOP
- *
- * This program file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program in a file named COPYING; if not, write to the
- * Free Software Foundation, Inc,
- * 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- * or just google for it.
- *
- * Null report generator.
- * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
- * 2012.10 */
-
-#ifndef _REPORT_FORMATTER_NULL_H_
-#define _REPORT_FORMATTER_NULL_H_
-
-#include "report-formatter.h"
-
-/* ************************************************************************ */
-
-class report_formatter_null: public report_formatter
-{
-public:
-	report_formatter_null();
-
-	void finish_report();
-	const char *get_result();
-	void clear_result();
-
-	void add(const char *str);
-	void addv(const char *fmt, va_list ap);
-
-	void add_header(const char *header, int level);
-
-	void begin_section(section_type stype);
-	void end_section();
-
-	void begin_table(table_type ttype);
-	void end_table();
-
-	void begin_row(row_type rtype);
-	void end_row();
-
-	void begin_cell(cell_type ctype);
-	void end_cell();
-	void add_empty_cell();
-
-	void begin_paragraph();
-	void end_paragraph();
-
-	void set_cpu_number(int nr);
-};
-
-#endif /* _REPORT_FORMATTER_NULL_H_ */
diff --git a/src/report/report-formatter.h b/src/report/report-formatter.h
deleted file mode 100644
index cec0796..0000000
--- a/src/report/report-formatter.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *	http://www.samsung.com/
- *
- * This file is part of PowerTOP
- *
- * This program file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program in a file named COPYING; if not, write to the
- * Free Software Foundation, Inc,
- * 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- * or just google for it.
- *
- * report_formatter interface.
- * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
- * 2012.10 */
-
-#ifndef _REPORT_FORMATTER_H_
-#define _REPORT_FORMATTER_H_
-
-#include "report-maker.h"
-
-class report_formatter /* Interface */
-{
-public:
-	virtual ~report_formatter() {}
-
-	virtual void finish_report() = 0;
-	virtual const char *get_result() = 0;
-	virtual void clear_result() = 0;
-
-	virtual void add(const char *str) = 0;
-	virtual void addv(const char *fmt, va_list ap) = 0;
-
-	virtual void add_header(const char *header, int level) = 0;
-
-	virtual void begin_section(section_type stype) = 0;
-	virtual void end_section() = 0;
-
-	virtual void begin_table(table_type ttype) = 0;
-	virtual void end_table() = 0;
-
-	virtual void begin_row(row_type rtype) = 0;
-	virtual void end_row() = 0;
-
-	virtual void begin_cell(cell_type ctype) = 0;
-	virtual void end_cell() = 0;
-	virtual void add_empty_cell() = 0;
-
-	virtual void begin_paragraph() = 0;
-	virtual void end_paragraph() = 0;
-
-	/* For quad-colouring CPU tables in HTML */
-	virtual void set_cpu_number(int nr) = 0;
-};
-
-#endif /* _REPORT_FORMATTER_H_ */
diff --git a/src/report/report-maker.cpp b/src/report/report-maker.cpp
index 4a68a8c..6d0989a 100644
--- a/src/report/report-maker.cpp
+++ b/src/report/report-maker.cpp
@@ -31,7 +31,6 @@
 #include "report-maker.h"
 #include "report-formatter-csv.h"
 #include "report-formatter-html.h"
-#include "report-formatter-null.h"
 
 /* ************************************************************************ */
 
@@ -114,7 +113,7 @@ report_maker::setup_report_formatter()
 	else if (type == REPORT_CSV)
 		formatter = new report_formatter_csv();
 	else if (type == REPORT_OFF)
-		formatter = new report_formatter_null();
+		formatter = new basic_report_formatter();
 	else
 		assert(false);
 }
diff --git a/src/report/report-maker.h b/src/report/report-maker.h
index 75e0d06..df8d20c 100644
--- a/src/report/report-maker.h
+++ b/src/report/report-maker.h
@@ -162,7 +162,7 @@ enum cell_type {
 
 /* ************************************************************************ */
 
-class report_formatter;
+class basic_report_formatter;
 
 class report_maker
 {
@@ -202,7 +202,7 @@ private:
 	void end_paragraph();
 
 	report_type type;
-	report_formatter *formatter;
+	basic_report_formatter *formatter;
 	bool cell_opened, row_opened, table_opened, section_opened,
 	     paragraph_opened;
 };



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Powertop] [RFC][PATCH] Small rework on report formatter side
@ 2012-10-13 13:31 Sergey Senozhatsky
  0 siblings, 0 replies; 5+ messages in thread
From: Sergey Senozhatsky @ 2012-10-13 13:31 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 590 bytes --]

On (10/12/12 17:46), Igor Zhbanov wrote:
> He Sergey,
> 
> Sergey Senozhatsky wrote:
> 
> 
> 1)
> - "Basic report_formatter::get_resul call\n"
> + "basic_report_formatter::get_result call\n"
>

oops.

[..] 
> >+	virtual void end_paragraph() {};
> >+
> >+	/* For quad-colouring CPU tables in HTML */
> >+	virtual void set_cpu_number(int nr) {};
> >+};
> 
> 2) You don't need semicolon after closing bracket in class member inline definition in C++.
> 

ok.
AFAIK, it has been merged already, so I'll prepare fixes later (I'm in airport currently). 
Thanks!

	-ss

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Powertop] [RFC][PATCH] Small rework on report formatter side
@ 2012-10-12 13:46 Igor Zhbanov
  0 siblings, 0 replies; 5+ messages in thread
From: Igor Zhbanov @ 2012-10-12 13:46 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 2278 bytes --]

He Sergey,

Sergey Senozhatsky wrote:

...

> ---
>   src/Makefile.am                      |   1 -
>   src/report/basic-report-formatter.h  |  65 +++++++++++++
>   src/report/report-formatter-base.cpp |  14 +--
>   src/report/report-formatter-base.h   |   4 +-
>   src/report/report-formatter-csv.cpp  |  42 --------
>   src/report/report-formatter-csv.h    |  10 +-
>   src/report/report-formatter-html.h   |   2 +-
>   src/report/report-formatter-null.cpp | 179 -----------------------------------
>   src/report/report-formatter-null.h   |  66 -------------
>   src/report/report-formatter.h        |  65 -------------
>   src/report/report-maker.cpp          |   3 +-
>   src/report/report-maker.h            |   4 +-
>   12 files changed, 79 insertions(+), 376 deletions(-)
...
> +class basic_report_formatter
> +{
> +public:
> +	virtual ~basic_report_formatter() {}
> +
> +	virtual void finish_report() {};
> +	virtual const char *get_result() {return "Basic report_formatter::get_resul call\n";};

1)
- "Basic report_formatter::get_resul call\n"
+ "basic_report_formatter::get_result call\n"

> +	virtual void clear_result() {};
> +
> +	virtual void add(const char *str) {};
> +	virtual void addv(const char *fmt, va_list ap) {};
> +
> +	virtual void add_header(const char *header, int level) {};
> +
> +	virtual void begin_section(section_type stype) {};
> +	virtual void end_section() {};
> +
> +	virtual void begin_table(table_type ttype) {};
> +	virtual void end_table() {};
> +
> +	virtual void begin_row(row_type rtype) {};
> +	virtual void end_row() {};
> +
> +	virtual void begin_cell(cell_type ctype) {};
> +	virtual void end_cell() {};
> +	virtual void add_empty_cell() {};
> +
> +	virtual void begin_paragraph() {};
> +	virtual void end_paragraph() {};
> +
> +	/* For quad-colouring CPU tables in HTML */
> +	virtual void set_cpu_number(int nr) {};
> +};

2) You don't need semicolon after closing bracket in class member inline definition in C++.

-- 
Best regards,
Igor Zhbanov,
Expert Software Engineer,
phone: +7 (495) 797 25 00 ext 3806
e-mail: i.zhbanov(a)samsung.com

ASWG, Moscow R&D center, Samsung Electronics
12 Dvintsev street, building 1
127018, Moscow, Russian Federation


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Powertop] [RFC][PATCH] Small rework on report formatter side
@ 2012-10-11 21:55 Chris Ferron
  0 siblings, 0 replies; 5+ messages in thread
From: Chris Ferron @ 2012-10-11 21:55 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 23527 bytes --]

On 10/10/2012 04:03 PM, Sergey Senozhatsky wrote:
> On (10/10/12 11:13), Sergey Senozhatsky wrote:
>> Hello,
>>
>> below is initial version of rework I was talking about. Igor did most part of it (introduced
>> report_formatter_base class), so mine are just minor tweaks. I'm glad still no one mentioned
>> templates, just kidding.
>>
>> one thing I don't really like so far is
>>
>>          else if (type == REPORT_OFF)
>>                 formatter = new report_formatter();
>>
>> which is just cryptic and thus look wrong.
>> perhaps we need something like `new report_formatter_basic()' here (which will require header
>> file rename).
>>
>> please review and comment.
>>
>> ------------------------------------------------------------------------
>>
>>      Small rework on report formatter side:
>>      
>>      - make report_formatter a basic class (previously was interface). hence we can
>>      remove empty report_formatter interface implementation.
>>      
>>      - drop report-formatter-null class
>>      
>>      - in report maker now we create report_formatter instance for REPORT_OFF mode
>>      
>>      - rename report_formatter_base to report_formatter_string_base, so class name tells
>>      a bit more, later we can create report_formatter_xml_base/report_formatter_json_base/etc.
>>
>>
>> Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
>>
>
> plus:
>
> -- renamed report_formatter to basic_report_formatter, so now
>
>           else if (type == REPORT_OFF)
>                  formatter = new basic_report_formatter();
>
> look a bit better (yeah, we have basic_report_formatter and report_formatter_string_base. ugly!!!)
>
>
> -- removed some empty function from CSV/HTML classes. like
>
> 	void report_formatter_csv::add_empty_cell()
> 	{
> 		/* Do nothing special */
> 	}
>
> we don't really need such functions in derived classes, they're already doing nothing in base class.
>
>
> ---
>   src/Makefile.am                      |   1 -
>   src/report/basic-report-formatter.h  |  65 +++++++++++++
>   src/report/report-formatter-base.cpp |  14 +--
>   src/report/report-formatter-base.h   |   4 +-
>   src/report/report-formatter-csv.cpp  |  42 --------
>   src/report/report-formatter-csv.h    |  10 +-
>   src/report/report-formatter-html.h   |   2 +-
>   src/report/report-formatter-null.cpp | 179 -----------------------------------
>   src/report/report-formatter-null.h   |  66 -------------
>   src/report/report-formatter.h        |  65 -------------
>   src/report/report-maker.cpp          |   3 +-
>   src/report/report-maker.h            |   4 +-
>   12 files changed, 79 insertions(+), 376 deletions(-)
>
> diff --git a/src/Makefile.am b/src/Makefile.am
> index ccf3f0c..1a64622 100644
> --- a/src/Makefile.am
> +++ b/src/Makefile.am
> @@ -34,7 +34,6 @@ powertop_SOURCES = parameters/persistent.cpp parameters/learn.cpp parameters/par
>   		report/report-formatter-base.cpp report/report-formatter-base.h \
>   		report/report-formatter-csv.cpp report/report-formatter-csv.h \
>   		report/report-formatter-html.cpp report/report-formatter-html.h \
> -		report/report-formatter-null.cpp report/report-formatter-null.h \
>   		main.cpp css.h powertop.css cpu/intel_gpu.cpp
>   
>   
> diff --git a/src/report/basic-report-formatter.h b/src/report/basic-report-formatter.h
> new file mode 100644
> index 0000000..5134bf5
> --- /dev/null
> +++ b/src/report/basic-report-formatter.h
> @@ -0,0 +1,65 @@
> +/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
> + *	http://www.samsung.com/
> + *
> + * This file is part of PowerTOP
> + *
> + * This program file is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU General Public License as published by the
> + * Free Software Foundation; version 2 of the License.
> + *
> + * This program is distributed in the hope that it will be useful, but WITHOUT
> + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> + * for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program in a file named COPYING; if not, write to the
> + * Free Software Foundation, Inc,
> + * 51 Franklin Street, Fifth Floor,
> + * Boston, MA 02110-1301 USA
> + * or just google for it.
> + *
> + * report_formatter interface.
> + * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
> + * 2012.10 */
> +
> +#ifndef _REPORT_FORMATTER_H_
> +#define _REPORT_FORMATTER_H_
> +
> +#include "report-maker.h"
> +
> +class basic_report_formatter
> +{
> +public:
> +	virtual ~basic_report_formatter() {}
> +
> +	virtual void finish_report() {};
> +	virtual const char *get_result() {return "Basic report_formatter::get_resul call\n";};
> +	virtual void clear_result() {};
> +
> +	virtual void add(const char *str) {};
> +	virtual void addv(const char *fmt, va_list ap) {};
> +
> +	virtual void add_header(const char *header, int level) {};
> +
> +	virtual void begin_section(section_type stype) {};
> +	virtual void end_section() {};
> +
> +	virtual void begin_table(table_type ttype) {};
> +	virtual void end_table() {};
> +
> +	virtual void begin_row(row_type rtype) {};
> +	virtual void end_row() {};
> +
> +	virtual void begin_cell(cell_type ctype) {};
> +	virtual void end_cell() {};
> +	virtual void add_empty_cell() {};
> +
> +	virtual void begin_paragraph() {};
> +	virtual void end_paragraph() {};
> +
> +	/* For quad-colouring CPU tables in HTML */
> +	virtual void set_cpu_number(int nr) {};
> +};
> +
> +#endif /* _REPORT_FORMATTER_H_ */
> diff --git a/src/report/report-formatter-base.cpp b/src/report/report-formatter-base.cpp
> index 4b448be..c6d5d9d 100644
> --- a/src/report/report-formatter-base.cpp
> +++ b/src/report/report-formatter-base.cpp
> @@ -36,7 +36,7 @@
>   /* ************************************************************************ */
>   
>   const char *
> -report_formatter_base::get_result()
> +report_formatter_string_base::get_result()
>   {
>   	return result.c_str();
>   }
> @@ -44,7 +44,7 @@ report_formatter_base::get_result()
>   /* ************************************************************************ */
>   
>   void
> -report_formatter_base::clear_result()
> +report_formatter_string_base::clear_result()
>   {
>   	result.clear();
>   }
> @@ -52,7 +52,7 @@ report_formatter_base::clear_result()
>   /* ************************************************************************ */
>   
>   void
> -report_formatter_base::add(const char *str)
> +report_formatter_string_base::add(const char *str)
>   {
>   	assert(str);
>   
> @@ -62,7 +62,7 @@ report_formatter_base::add(const char *str)
>   /* ************************************************************************ */
>   
>   void
> -report_formatter_base::add_exact(const char *str)
> +report_formatter_string_base::add_exact(const char *str)
>   {
>   	assert(str);
>   
> @@ -74,7 +74,7 @@ report_formatter_base::add_exact(const char *str)
>   #define LINE_SIZE 8192
>   
>   void
> -report_formatter_base::addv(const char *fmt, va_list ap)
> +report_formatter_string_base::addv(const char *fmt, va_list ap)
>   {
>   	char str[LINE_SIZE];
>   
> @@ -87,7 +87,7 @@ report_formatter_base::addv(const char *fmt, va_list ap)
>   /* ************************************************************************ */
>   
>   void
> -report_formatter_base::addf(const char *fmt, ...)
> +report_formatter_string_base::addf(const char *fmt, ...)
>   {
>   	va_list ap;
>   
> @@ -101,7 +101,7 @@ report_formatter_base::addf(const char *fmt, ...)
>   /* ************************************************************************ */
>   
>   void
> -report_formatter_base::addf_exact(const char *fmt, ...)
> +report_formatter_string_base::addf_exact(const char *fmt, ...)
>   {
>   	char str[LINE_SIZE];
>   	va_list ap;
> diff --git a/src/report/report-formatter-base.h b/src/report/report-formatter-base.h
> index 7063174..61cf1ba 100644
> --- a/src/report/report-formatter-base.h
> +++ b/src/report/report-formatter-base.h
> @@ -26,9 +26,9 @@
>   #ifndef _REPORT_FORMATTER_BASE_H_
>   #define _REPORT_FORMATTER_BASE_H_
>   
> -#include "report-formatter.h"
> +#include "basic-report-formatter.h"
>   
> -class report_formatter_base: public report_formatter
> +class report_formatter_string_base: public basic_report_formatter
>   {
>   public:
>   	virtual const char *get_result();
> diff --git a/src/report/report-formatter-csv.cpp b/src/report/report-formatter-csv.cpp
> index 9b154b5..893c92a 100644
> --- a/src/report/report-formatter-csv.cpp
> +++ b/src/report/report-formatter-csv.cpp
> @@ -45,14 +45,6 @@ report_formatter_csv::report_formatter_csv()
>   /* ************************************************************************ */
>   
>   void
> -report_formatter_csv::finish_report()
> -{
> -	/* Do nothing special */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
>   report_formatter_csv::add_doc_header()
>   {
>   	add_header(report_csv_header, 1);
> @@ -72,24 +64,6 @@ report_formatter_csv::add_header(const char *header, int level)
>   	add_exact("\n");
>   }
>   
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_csv::begin_section(section_type stype)
> -{
> -	/* Do nothing special */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_csv::end_section()
> -{
> -	/* Do nothing special */
> -}
> -
> -/* ************************************************************************ */
> -
>   void
>   report_formatter_csv::begin_table(table_type ttype)
>   {
> @@ -163,14 +137,6 @@ report_formatter_csv::end_cell()
>   /* ************************************************************************ */
>   
>   void
> -report_formatter_csv::add_empty_cell()
> -{
> -	/* Do nothing special */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
>   report_formatter_csv::begin_paragraph()
>   {
>   	text_start = result.length();
> @@ -213,11 +179,3 @@ report_formatter_csv::escape_string(const char *str)
>   
>   	return res;
>   }
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_csv::set_cpu_number(int nr UNUSED)
> -{
> -	/* Do nothing */
> -}
> diff --git a/src/report/report-formatter-csv.h b/src/report/report-formatter-csv.h
> index fbec0c9..8db9839 100644
> --- a/src/report/report-formatter-csv.h
> +++ b/src/report/report-formatter-csv.h
> @@ -44,18 +44,13 @@
>   
>   /* ************************************************************************ */
>   
> -class report_formatter_csv: public report_formatter_base
> +class report_formatter_csv: public report_formatter_string_base
>   {
>   public:
>   	report_formatter_csv();
>   
> -	void finish_report();
> -
>   	void add_header(const char *header, int level);
>   
> -	void begin_section(section_type stype);
> -	void end_section();
> -
>   	void begin_table(table_type ttype);
>   	void end_table();
>   
> @@ -64,13 +59,10 @@ public:
>   
>   	void begin_cell(cell_type ctype);
>   	void end_cell();
> -	void add_empty_cell();
>   
>   	void begin_paragraph();
>   	void end_paragraph();
>   
> -	void set_cpu_number(int nr);
> -
>   private:
>   	void add_doc_header();
>   
> diff --git a/src/report/report-formatter-html.h b/src/report/report-formatter-html.h
> index 1c3eb4a..4d00efe 100644
> --- a/src/report/report-formatter-html.h
> +++ b/src/report/report-formatter-html.h
> @@ -55,7 +55,7 @@ struct html_cell {
>   
>   /* ************************************************************************ */
>   
> -class report_formatter_html: public report_formatter_base
> +class report_formatter_html: public report_formatter_string_base
>   {
>   public:
>   	report_formatter_html();
> diff --git a/src/report/report-formatter-null.cpp b/src/report/report-formatter-null.cpp
> deleted file mode 100644
> index 22da7a0..0000000
> --- a/src/report/report-formatter-null.cpp
> +++ /dev/null
> @@ -1,179 +0,0 @@
> -/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
> - *	http://www.samsung.com/
> - *
> - * This file is part of PowerTOP
> - *
> - * This program file is free software; you can redistribute it and/or modify it
> - * under the terms of the GNU General Public License as published by the
> - * Free Software Foundation; version 2 of the License.
> - *
> - * This program is distributed in the hope that it will be useful, but WITHOUT
> - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> - * for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program in a file named COPYING; if not, write to the
> - * Free Software Foundation, Inc,
> - * 51 Franklin Street, Fifth Floor,
> - * Boston, MA 02110-1301 USA
> - * or just google for it.
> - *
> - * Null report generator.
> - * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
> - * 2012.10 */
> -
> -#include <stdarg.h>
> -
> -#include "report-formatter-null.h"
> -
> -/* ************************************************************************ */
> -
> -report_formatter_null::report_formatter_null()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::finish_report()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -const char *
> -report_formatter_null::get_result()
> -{
> -	return "";
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::clear_result()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::add(const char *str UNUSED)
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::addv(const char *fmt UNUSED, va_list ap UNUSED)
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::add_header(const char *header UNUSED, int level UNUSED)
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::begin_section(section_type stype UNUSED)
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::end_section()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::begin_table(table_type ttype UNUSED)
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::end_table()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::begin_row(row_type rtype UNUSED)
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::end_row()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::begin_cell(cell_type ctype UNUSED)
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::end_cell()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::add_empty_cell()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::begin_paragraph()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::end_paragraph()
> -{
> -	/* Do nothing */
> -}
> -
> -/* ************************************************************************ */
> -
> -void
> -report_formatter_null::set_cpu_number(int nr UNUSED)
> -{
> -	/* Do nothing */
> -}
> diff --git a/src/report/report-formatter-null.h b/src/report/report-formatter-null.h
> deleted file mode 100644
> index 51493ee..0000000
> --- a/src/report/report-formatter-null.h
> +++ /dev/null
> @@ -1,66 +0,0 @@
> -/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
> - *	http://www.samsung.com/
> - *
> - * This file is part of PowerTOP
> - *
> - * This program file is free software; you can redistribute it and/or modify it
> - * under the terms of the GNU General Public License as published by the
> - * Free Software Foundation; version 2 of the License.
> - *
> - * This program is distributed in the hope that it will be useful, but WITHOUT
> - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> - * for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program in a file named COPYING; if not, write to the
> - * Free Software Foundation, Inc,
> - * 51 Franklin Street, Fifth Floor,
> - * Boston, MA 02110-1301 USA
> - * or just google for it.
> - *
> - * Null report generator.
> - * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
> - * 2012.10 */
> -
> -#ifndef _REPORT_FORMATTER_NULL_H_
> -#define _REPORT_FORMATTER_NULL_H_
> -
> -#include "report-formatter.h"
> -
> -/* ************************************************************************ */
> -
> -class report_formatter_null: public report_formatter
> -{
> -public:
> -	report_formatter_null();
> -
> -	void finish_report();
> -	const char *get_result();
> -	void clear_result();
> -
> -	void add(const char *str);
> -	void addv(const char *fmt, va_list ap);
> -
> -	void add_header(const char *header, int level);
> -
> -	void begin_section(section_type stype);
> -	void end_section();
> -
> -	void begin_table(table_type ttype);
> -	void end_table();
> -
> -	void begin_row(row_type rtype);
> -	void end_row();
> -
> -	void begin_cell(cell_type ctype);
> -	void end_cell();
> -	void add_empty_cell();
> -
> -	void begin_paragraph();
> -	void end_paragraph();
> -
> -	void set_cpu_number(int nr);
> -};
> -
> -#endif /* _REPORT_FORMATTER_NULL_H_ */
> diff --git a/src/report/report-formatter.h b/src/report/report-formatter.h
> deleted file mode 100644
> index cec0796..0000000
> --- a/src/report/report-formatter.h
> +++ /dev/null
> @@ -1,65 +0,0 @@
> -/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
> - *	http://www.samsung.com/
> - *
> - * This file is part of PowerTOP
> - *
> - * This program file is free software; you can redistribute it and/or modify it
> - * under the terms of the GNU General Public License as published by the
> - * Free Software Foundation; version 2 of the License.
> - *
> - * This program is distributed in the hope that it will be useful, but WITHOUT
> - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
> - * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> - * for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program in a file named COPYING; if not, write to the
> - * Free Software Foundation, Inc,
> - * 51 Franklin Street, Fifth Floor,
> - * Boston, MA 02110-1301 USA
> - * or just google for it.
> - *
> - * report_formatter interface.
> - * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
> - * 2012.10 */
> -
> -#ifndef _REPORT_FORMATTER_H_
> -#define _REPORT_FORMATTER_H_
> -
> -#include "report-maker.h"
> -
> -class report_formatter /* Interface */
> -{
> -public:
> -	virtual ~report_formatter() {}
> -
> -	virtual void finish_report() = 0;
> -	virtual const char *get_result() = 0;
> -	virtual void clear_result() = 0;
> -
> -	virtual void add(const char *str) = 0;
> -	virtual void addv(const char *fmt, va_list ap) = 0;
> -
> -	virtual void add_header(const char *header, int level) = 0;
> -
> -	virtual void begin_section(section_type stype) = 0;
> -	virtual void end_section() = 0;
> -
> -	virtual void begin_table(table_type ttype) = 0;
> -	virtual void end_table() = 0;
> -
> -	virtual void begin_row(row_type rtype) = 0;
> -	virtual void end_row() = 0;
> -
> -	virtual void begin_cell(cell_type ctype) = 0;
> -	virtual void end_cell() = 0;
> -	virtual void add_empty_cell() = 0;
> -
> -	virtual void begin_paragraph() = 0;
> -	virtual void end_paragraph() = 0;
> -
> -	/* For quad-colouring CPU tables in HTML */
> -	virtual void set_cpu_number(int nr) = 0;
> -};
> -
> -#endif /* _REPORT_FORMATTER_H_ */
> diff --git a/src/report/report-maker.cpp b/src/report/report-maker.cpp
> index 4a68a8c..6d0989a 100644
> --- a/src/report/report-maker.cpp
> +++ b/src/report/report-maker.cpp
> @@ -31,7 +31,6 @@
>   #include "report-maker.h"
>   #include "report-formatter-csv.h"
>   #include "report-formatter-html.h"
> -#include "report-formatter-null.h"
>   
>   /* ************************************************************************ */
>   
> @@ -114,7 +113,7 @@ report_maker::setup_report_formatter()
>   	else if (type == REPORT_CSV)
>   		formatter = new report_formatter_csv();
>   	else if (type == REPORT_OFF)
> -		formatter = new report_formatter_null();
> +		formatter = new basic_report_formatter();
>   	else
>   		assert(false);
>   }
> diff --git a/src/report/report-maker.h b/src/report/report-maker.h
> index 75e0d06..df8d20c 100644
> --- a/src/report/report-maker.h
> +++ b/src/report/report-maker.h
> @@ -162,7 +162,7 @@ enum cell_type {
>   
>   /* ************************************************************************ */
>   
> -class report_formatter;
> +class basic_report_formatter;
>   
>   class report_maker
>   {
> @@ -202,7 +202,7 @@ private:
>   	void end_paragraph();
>   
>   	report_type type;
> -	report_formatter *formatter;
> +	basic_report_formatter *formatter;
>   	bool cell_opened, row_opened, table_opened, section_opened,
>   	     paragraph_opened;
>   };
>
>
> _______________________________________________
> PowerTop mailing list
> PowerTop(a)lists.01.org
> https://lists.01.org/mailman/listinfo/powertop
I like it
Your patch has been merged.
Thank You,
-C


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Powertop] [RFC][PATCH] Small rework on report formatter side
@ 2012-10-10 18:13 Sergey Senozhatsky
  0 siblings, 0 replies; 5+ messages in thread
From: Sergey Senozhatsky @ 2012-10-10 18:13 UTC (permalink / raw)
  To: powertop

[-- Attachment #1: Type: text/plain, Size: 15248 bytes --]

Hello,

below is initial version of rework I was talking about. Igor did most part of it (introduced 
report_formatter_base class), so mine are just minor tweaks. I'm glad still no one mentioned
templates, just kidding.

one thing I don't really like so far is

        else if (type == REPORT_OFF)
               formatter = new report_formatter();

which is just cryptic and thus look wrong.
perhaps we need something like `new report_formatter_basic()' here (which will require header
file rename).

please review and comment.

------------------------------------------------------------------------

    Small rework on report formatter side:
    
    - make report_formatter a basic class (previously was interface). hence we can
    remove empty report_formatter interface implementation.
    
    - drop report-formatter-null class
    
    - in report maker now we create report_formatter instance for REPORT_OFF mode
    
    - rename report_formatter_base to report_formatter_string_base, so class name tells
    a bit more, later we can create report_formatter_xml_base/report_formatter_json_base/etc.


Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>

---
 src/Makefile.am                      |   1 -
 src/report/report-formatter-base.cpp |  14 +--
 src/report/report-formatter-base.h   |   2 +-
 src/report/report-formatter-csv.h    |   2 +-
 src/report/report-formatter-html.h   |   2 +-
 src/report/report-formatter-null.cpp | 179 -----------------------------------
 src/report/report-formatter-null.h   |  66 -------------
 src/report/report-formatter.h        |  38 ++++----
 src/report/report-maker.cpp          |   3 +-
 9 files changed, 30 insertions(+), 277 deletions(-)

diff --git a/src/Makefile.am b/src/Makefile.am
index ccf3f0c..1a64622 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -34,7 +34,6 @@ powertop_SOURCES = parameters/persistent.cpp parameters/learn.cpp parameters/par
 		report/report-formatter-base.cpp report/report-formatter-base.h \
 		report/report-formatter-csv.cpp report/report-formatter-csv.h \
 		report/report-formatter-html.cpp report/report-formatter-html.h \
-		report/report-formatter-null.cpp report/report-formatter-null.h \
 		main.cpp css.h powertop.css cpu/intel_gpu.cpp
 
 
diff --git a/src/report/report-formatter-base.cpp b/src/report/report-formatter-base.cpp
index 4b448be..c6d5d9d 100644
--- a/src/report/report-formatter-base.cpp
+++ b/src/report/report-formatter-base.cpp
@@ -36,7 +36,7 @@
 /* ************************************************************************ */
 
 const char *
-report_formatter_base::get_result()
+report_formatter_string_base::get_result()
 {
 	return result.c_str();
 }
@@ -44,7 +44,7 @@ report_formatter_base::get_result()
 /* ************************************************************************ */
 
 void
-report_formatter_base::clear_result()
+report_formatter_string_base::clear_result()
 {
 	result.clear();
 }
@@ -52,7 +52,7 @@ report_formatter_base::clear_result()
 /* ************************************************************************ */
 
 void
-report_formatter_base::add(const char *str)
+report_formatter_string_base::add(const char *str)
 {
 	assert(str);
 
@@ -62,7 +62,7 @@ report_formatter_base::add(const char *str)
 /* ************************************************************************ */
 
 void
-report_formatter_base::add_exact(const char *str)
+report_formatter_string_base::add_exact(const char *str)
 {
 	assert(str);
 
@@ -74,7 +74,7 @@ report_formatter_base::add_exact(const char *str)
 #define LINE_SIZE 8192
 
 void
-report_formatter_base::addv(const char *fmt, va_list ap)
+report_formatter_string_base::addv(const char *fmt, va_list ap)
 {
 	char str[LINE_SIZE];
 
@@ -87,7 +87,7 @@ report_formatter_base::addv(const char *fmt, va_list ap)
 /* ************************************************************************ */
 
 void
-report_formatter_base::addf(const char *fmt, ...)
+report_formatter_string_base::addf(const char *fmt, ...)
 {
 	va_list ap;
 
@@ -101,7 +101,7 @@ report_formatter_base::addf(const char *fmt, ...)
 /* ************************************************************************ */
 
 void
-report_formatter_base::addf_exact(const char *fmt, ...)
+report_formatter_string_base::addf_exact(const char *fmt, ...)
 {
 	char str[LINE_SIZE];
 	va_list ap;
diff --git a/src/report/report-formatter-base.h b/src/report/report-formatter-base.h
index 7063174..e35a2ff 100644
--- a/src/report/report-formatter-base.h
+++ b/src/report/report-formatter-base.h
@@ -28,7 +28,7 @@
 
 #include "report-formatter.h"
 
-class report_formatter_base: public report_formatter
+class report_formatter_string_base: public report_formatter
 {
 public:
 	virtual const char *get_result();
diff --git a/src/report/report-formatter-csv.h b/src/report/report-formatter-csv.h
index fbec0c9..8dd2976 100644
--- a/src/report/report-formatter-csv.h
+++ b/src/report/report-formatter-csv.h
@@ -44,7 +44,7 @@
 
 /* ************************************************************************ */
 
-class report_formatter_csv: public report_formatter_base
+class report_formatter_csv: public report_formatter_string_base
 {
 public:
 	report_formatter_csv();
diff --git a/src/report/report-formatter-html.h b/src/report/report-formatter-html.h
index 1c3eb4a..4d00efe 100644
--- a/src/report/report-formatter-html.h
+++ b/src/report/report-formatter-html.h
@@ -55,7 +55,7 @@ struct html_cell {
 
 /* ************************************************************************ */
 
-class report_formatter_html: public report_formatter_base
+class report_formatter_html: public report_formatter_string_base
 {
 public:
 	report_formatter_html();
diff --git a/src/report/report-formatter-null.cpp b/src/report/report-formatter-null.cpp
deleted file mode 100644
index 22da7a0..0000000
--- a/src/report/report-formatter-null.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *	http://www.samsung.com/
- *
- * This file is part of PowerTOP
- *
- * This program file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program in a file named COPYING; if not, write to the
- * Free Software Foundation, Inc,
- * 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- * or just google for it.
- *
- * Null report generator.
- * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
- * 2012.10 */
-
-#include <stdarg.h>
-
-#include "report-formatter-null.h"
-
-/* ************************************************************************ */
-
-report_formatter_null::report_formatter_null()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::finish_report()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-const char *
-report_formatter_null::get_result()
-{
-	return "";
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::clear_result()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::add(const char *str UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::addv(const char *fmt UNUSED, va_list ap UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::add_header(const char *header UNUSED, int level UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_section(section_type stype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_section()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_table(table_type ttype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_table()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_row(row_type rtype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_row()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_cell(cell_type ctype UNUSED)
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_cell()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::add_empty_cell()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::begin_paragraph()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::end_paragraph()
-{
-	/* Do nothing */
-}
-
-/* ************************************************************************ */
-
-void
-report_formatter_null::set_cpu_number(int nr UNUSED)
-{
-	/* Do nothing */
-}
diff --git a/src/report/report-formatter-null.h b/src/report/report-formatter-null.h
deleted file mode 100644
index 51493ee..0000000
--- a/src/report/report-formatter-null.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/* Copyright (c) 2012 Samsung Electronics Co., Ltd.
- *	http://www.samsung.com/
- *
- * This file is part of PowerTOP
- *
- * This program file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program in a file named COPYING; if not, write to the
- * Free Software Foundation, Inc,
- * 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301 USA
- * or just google for it.
- *
- * Null report generator.
- * Written by Igor Zhbanov <i.zhbanov(a)samsung.com>
- * 2012.10 */
-
-#ifndef _REPORT_FORMATTER_NULL_H_
-#define _REPORT_FORMATTER_NULL_H_
-
-#include "report-formatter.h"
-
-/* ************************************************************************ */
-
-class report_formatter_null: public report_formatter
-{
-public:
-	report_formatter_null();
-
-	void finish_report();
-	const char *get_result();
-	void clear_result();
-
-	void add(const char *str);
-	void addv(const char *fmt, va_list ap);
-
-	void add_header(const char *header, int level);
-
-	void begin_section(section_type stype);
-	void end_section();
-
-	void begin_table(table_type ttype);
-	void end_table();
-
-	void begin_row(row_type rtype);
-	void end_row();
-
-	void begin_cell(cell_type ctype);
-	void end_cell();
-	void add_empty_cell();
-
-	void begin_paragraph();
-	void end_paragraph();
-
-	void set_cpu_number(int nr);
-};
-
-#endif /* _REPORT_FORMATTER_NULL_H_ */
diff --git a/src/report/report-formatter.h b/src/report/report-formatter.h
index cec0796..7f9f544 100644
--- a/src/report/report-formatter.h
+++ b/src/report/report-formatter.h
@@ -28,38 +28,38 @@
 
 #include "report-maker.h"
 
-class report_formatter /* Interface */
+class report_formatter
 {
 public:
 	virtual ~report_formatter() {}
 
-	virtual void finish_report() = 0;
-	virtual const char *get_result() = 0;
-	virtual void clear_result() = 0;
+	virtual void finish_report() {};
+	virtual const char *get_result() {return "Basic report_formatter::get_resul call\n";};
+	virtual void clear_result() {};
 
-	virtual void add(const char *str) = 0;
-	virtual void addv(const char *fmt, va_list ap) = 0;
+	virtual void add(const char *str) {};
+	virtual void addv(const char *fmt, va_list ap) {};
 
-	virtual void add_header(const char *header, int level) = 0;
+	virtual void add_header(const char *header, int level) {};
 
-	virtual void begin_section(section_type stype) = 0;
-	virtual void end_section() = 0;
+	virtual void begin_section(section_type stype) {};
+	virtual void end_section() {};
 
-	virtual void begin_table(table_type ttype) = 0;
-	virtual void end_table() = 0;
+	virtual void begin_table(table_type ttype) {};
+	virtual void end_table() {};
 
-	virtual void begin_row(row_type rtype) = 0;
-	virtual void end_row() = 0;
+	virtual void begin_row(row_type rtype) {};
+	virtual void end_row() {};
 
-	virtual void begin_cell(cell_type ctype) = 0;
-	virtual void end_cell() = 0;
-	virtual void add_empty_cell() = 0;
+	virtual void begin_cell(cell_type ctype) {};
+	virtual void end_cell() {};
+	virtual void add_empty_cell() {};
 
-	virtual void begin_paragraph() = 0;
-	virtual void end_paragraph() = 0;
+	virtual void begin_paragraph() {};
+	virtual void end_paragraph() {};
 
 	/* For quad-colouring CPU tables in HTML */
-	virtual void set_cpu_number(int nr) = 0;
+	virtual void set_cpu_number(int nr) {};
 };
 
 #endif /* _REPORT_FORMATTER_H_ */
diff --git a/src/report/report-maker.cpp b/src/report/report-maker.cpp
index 4a68a8c..eef0fb1 100644
--- a/src/report/report-maker.cpp
+++ b/src/report/report-maker.cpp
@@ -31,7 +31,6 @@
 #include "report-maker.h"
 #include "report-formatter-csv.h"
 #include "report-formatter-html.h"
-#include "report-formatter-null.h"
 
 /* ************************************************************************ */
 
@@ -114,7 +113,7 @@ report_maker::setup_report_formatter()
 	else if (type == REPORT_CSV)
 		formatter = new report_formatter_csv();
 	else if (type == REPORT_OFF)
-		formatter = new report_formatter_null();
+		formatter = new report_formatter();
 	else
 		assert(false);
 }



^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-10-13 13:31 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-10-10 23:03 [Powertop] [RFC][PATCH] Small rework on report formatter side Sergey Senozhatsky
  -- strict thread matches above, loose matches on Subject: below --
2012-10-13 13:31 Sergey Senozhatsky
2012-10-12 13:46 Igor Zhbanov
2012-10-11 21:55 Chris Ferron
2012-10-10 18:13 Sergey Senozhatsky

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.