From: Chris Ferron <chris.e.ferron at linux.intel.com>
To: powertop@lists.01.org
Subject: Re: [Powertop] [RFC][PATCH] Small rework on report formatter side
Date: Thu, 11 Oct 2012 14:55:55 -0700 [thread overview]
Message-ID: <5077406B.4070602@linux.intel.com> (raw)
In-Reply-To: 20121010230322.GD4628@swordfish.datadirect.datadirectnet.com
[-- 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
next reply other threads:[~2012-10-11 21:55 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-11 21:55 Chris Ferron [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-10-13 13:31 [Powertop] [RFC][PATCH] Small rework on report formatter side Sergey Senozhatsky
2012-10-12 13:46 Igor Zhbanov
2012-10-10 23:03 Sergey Senozhatsky
2012-10-10 18:13 Sergey Senozhatsky
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5077406B.4070602@linux.intel.com \
--to=powertop@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.