code_size_compare: simplify CodeSizeGeneratorWithSize

Signed-off-by: Yanray Wang <yanray.wang@arm.com>
diff --git a/scripts/code_size_compare.py b/scripts/code_size_compare.py
index 3025183..4ac798a 100755
--- a/scripts/code_size_compare.py
+++ b/scripts/code_size_compare.py
@@ -426,8 +426,8 @@
     """ A generator based on size measurement tool for library/*.o.
 
     This is an abstract class. To use it, derive a class that implements
-    size_generator_write_record and size_generator_write_comparison methods,
-    then call both of them with proper arguments.
+    write_record and write_comparison methods, then call both of them with
+    proper arguments.
     """
     def __init__(self, logger: logging.Logger) -> None:
         """
@@ -435,11 +435,11 @@
         """
         self.logger = logger
 
-    def size_generator_write_record(
+    def write_record(
             self,
             git_rev: str,
-            code_size_text: typing.Dict,
-            output_file: str
+            code_size_text: typing.Dict[str, str],
+            output: typing_util.Writable
     ) -> None:
         """Write size record into a file.
 
@@ -447,28 +447,26 @@
         :param code_size_text:
             string output (utf-8) from measurement tool of code size.
                 - typing.Dict[mod: str]
-        :param output_file: file which the code size record is written to.
+        :param output: output stream which the code size record is written to.
+                       (Note: Normally write code size record into File)
         """
         raise NotImplementedError
 
-    def size_generator_write_comparison(
+    def write_comparison(
             self,
             old_rev: str,
             new_rev: str,
-            output_stream: str,
-            result_options: CodeSizeResultInfo
+            output: typing_util.Writable,
+            with_markdown=False
     ) -> None:
         """Write a comparision result into a stream between two Git revisions.
 
         :param old_rev: old Git revision to compared with.
         :param new_rev: new Git revision to compared with.
-        :param output_stream: stream which the code size record is written to.
-        :param result_options:
-            CodeSizeResultInfo containing options for comparison result.
-                - result_options.with_markdown:  write comparision result in a
-                                                 markdown table. (Default: False)
-                - result_options.stdout: direct comparison result into
-                                         sys.stdout. (Default: False)
+        :param output: output stream which the code size record is written to.
+                       (File / sys.stdout)
+        :param with_markdown:  write comparision result in a markdown table.
+                               (Default: False)
         """
         raise NotImplementedError
 
@@ -558,15 +556,19 @@
             for fname, size_entry in file_size.items():
                 yield mod, fname, size_entry
 
-    def _write_size_record(
+    def write_record(
             self,
             git_rev: str,
+            code_size_text: typing.Dict[str, str],
             output: typing_util.Writable
     ) -> None:
         """Write size information to a file.
 
         Writing Format: file_name text data bss total(dec)
         """
+        for mod, size_text in code_size_text.items():
+            self._set_size_record(git_rev, mod, size_text)
+
         format_string = "{:<30} {:>7} {:>7} {:>7} {:>7}\n"
         output.write(format_string.format("filename",
                                           "text", "data", "bss", "total"))
@@ -575,12 +577,12 @@
                                               size_entry.text, size_entry.data,
                                               size_entry.bss, size_entry.total))
 
-    def _write_comparison(
+    def write_comparison(
             self,
             old_rev: str,
             new_rev: str,
             output: typing_util.Writable,
-            with_markdown: bool
+            with_markdown=False
     ) -> None:
         """Write comparison result into a file.
 
@@ -640,44 +642,6 @@
                              .format(fname,
                                      str(text_vari[0]) + "," + str(data_vari[0])))
 
-    def size_generator_write_record(
-            self,
-            git_rev: str,
-            code_size_text: typing.Dict,
-            output_file: str
-    ) -> None:
-        """Write size record into a specified file based on Git revision and
-        output from `size` tool."""
-        self.logger.debug("Generating code size csv for {}.".format(git_rev))
-
-        for mod, size_text in code_size_text.items():
-            self._set_size_record(git_rev, mod, size_text)
-
-        output = open(output_file, "w")
-        self._write_size_record(git_rev, output)
-
-    def size_generator_write_comparison(
-            self,
-            old_rev: str,
-            new_rev: str,
-            output_stream: str,
-            result_options: CodeSizeResultInfo
-    ) -> None:
-        """Write a comparision result into a stream between two Git revisions.
-
-        By default, it's written into a file called output_stream.
-        Once result_options.stdout is set, it's written into sys.stdout instead.
-        """
-        self.logger.debug("Generating comparison results between {} and {}."
-                          .format(old_rev, new_rev))
-
-        if result_options.stdout:
-            output = sys.stdout
-        else:
-            output = open(output_stream, "w")
-        self._write_comparison(old_rev, new_rev, output,
-                               result_options.with_markdown)
-
 
 class CodeSizeComparison:
     """Compare code size between two Git revisions."""
@@ -790,9 +754,14 @@
             self.code_size_generator.read_size_record(
                 size_dist_info.git_rev, output_file)
         else:
-            self.code_size_generator.size_generator_write_record(
-                size_dist_info.git_rev, self.cal_code_size(size_dist_info),
-                output_file)
+            # measure code size
+            code_size_text = self.cal_code_size(size_dist_info)
+
+            self.logger.debug("Generating code size csv for {}."
+                              .format(size_dist_info.git_rev))
+            output = open(output_file, "w")
+            self.code_size_generator.write_record(
+                size_dist_info.git_rev, code_size_text, output)
 
     def gen_code_size_comparison(self) -> None:
         """Generate results of code size changes between two Git revisions,
@@ -811,10 +780,17 @@
             self.comp_dir,
             self.gen_file_name(self.old_size_dist_info, self.new_size_dist_info))
 
-        self.code_size_generator.size_generator_write_comparison(
+        self.logger.debug("Generating comparison results between {} and {}."
+                          .format(self.old_size_dist_info.git_rev,
+                                  self.new_size_dist_info.git_rev))
+        if self.result_options.stdout:
+            output = sys.stdout
+        else:
+            output = open(output_file, "w")
+        self.code_size_generator.write_comparison(
             self.old_size_dist_info.git_rev,
             self.new_size_dist_info.git_rev,
-            output_file, self.result_options)
+            output, self.result_options.with_markdown)
 
     def get_comparision_results(self) -> None:
         """Compare size of library/*.o between self.old_size_dist_info and