Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/indent indent: split process_comments into separate ...



details:   https://anonhg.NetBSD.org/src/rev/14e5aeda79b0
branches:  trunk
changeset: 1024783:14e5aeda79b0
user:      rillig <rillig%NetBSD.org@localhost>
date:      Thu Nov 04 17:37:03 2021 +0000

description:
indent: split process_comments into separate functions

No functional change.

diffstat:

 usr.bin/indent/pr_comment.c |  82 +++++++++++++++++++++++++++-----------------
 1 files changed, 50 insertions(+), 32 deletions(-)

diffs (129 lines):

diff -r 0df34785d028 -r 14e5aeda79b0 usr.bin/indent/pr_comment.c
--- a/usr.bin/indent/pr_comment.c       Thu Nov 04 17:12:12 2021 +0000
+++ b/usr.bin/indent/pr_comment.c       Thu Nov 04 17:37:03 2021 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: pr_comment.c,v 1.94 2021/11/03 21:47:35 rillig Exp $   */
+/*     $NetBSD: pr_comment.c,v 1.95 2021/11/04 17:37:03 rillig Exp $   */
 
 /*-
  * SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@
 
 #include <sys/cdefs.h>
 #if defined(__NetBSD__)
-__RCSID("$NetBSD: pr_comment.c,v 1.94 2021/11/03 21:47:35 rillig Exp $");
+__RCSID("$NetBSD: pr_comment.c,v 1.95 2021/11/04 17:37:03 rillig Exp $");
 #elif defined(__FreeBSD__)
 __FBSDID("$FreeBSD: head/usr.bin/indent/pr_comment.c 334927 2018-06-10 16:44:18Z pstef $");
 #endif
@@ -99,41 +99,17 @@
     return false;
 }
 
-/*
- * Scan, reformat and output a single comment, which is either a block comment
- * starting with '/' '*' or an end-of-line comment starting with '//'.
- *
- * Try to keep comments from going over the maximum line length.  If a line is
- * too long, move everything starting from the last blank to the next comment
- * line.  Blanks and tabs from the beginning of the input line are removed.
- *
- * ALGORITHM:
- *     1) Decide where the comment should be aligned, and if lines should
- *        be broken.
- *     2) If lines should not be broken and filled, just copy up to end of
- *        comment.
- *     3) If lines should be filled, then scan through the input buffer,
- *        copying characters to com_buf.  Remember where the last blank,
- *        tab, or newline was.  When line is filled, print up to last blank
- *        and continue copying.
- */
-void
-process_comment(void)
+static void
+analyze_comment(int *p_adj_max_line_length, bool *p_break_delim,
+    bool *p_may_wrap)
 {
     int adj_max_line_length;   /* Adjusted max_line_length for comments that
                                 * spill over the right margin */
-    ssize_t last_blank;                /* index of the last blank in com.buf */
     bool break_delim = opt.comment_delimiter_on_blankline;
-    int l_just_saw_decl = ps.just_saw_decl;
     int com_ind;
 
     adj_max_line_length = opt.max_line_length;
-    ps.just_saw_decl = 0;
-    last_blank = -1;           /* no blanks found so far */
     bool may_wrap = true;
-    ps.stats.comments++;
-
-    /* Figure where to align and how to treat the comment */
 
     if (ps.curr_col_1 && !opt.format_col1_comments) {
        may_wrap = false;
@@ -220,7 +196,15 @@
        com_add_delim();
     }
 
-    /* Now copy the comment. */
+    *p_adj_max_line_length = adj_max_line_length;
+    *p_break_delim = break_delim;
+    *p_may_wrap = may_wrap;
+}
+
+static void
+copy_comment(int adj_max_line_length, bool break_delim, bool may_wrap)
+{
+    ssize_t last_blank = -1;   /* index of the last blank in com.buf */
 
     for (;;) {
        switch (*inp.s) {
@@ -306,8 +290,6 @@
                    com_add_char('/');
                }
                com_terminate();
-
-               ps.just_saw_decl = l_just_saw_decl;
                return;
 
            } else              /* handle isolated '*' */
@@ -354,3 +336,39 @@
        }
     }
 }
+
+/*
+ * Scan, reformat and output a single comment, which is either a block comment
+ * starting with '/' '*' or an end-of-line comment starting with '//'.
+ *
+ * Try to keep comments from going over the maximum line length.  If a line is
+ * too long, move everything starting from the last blank to the next comment
+ * line.  Blanks and tabs from the beginning of the input line are removed.
+ *
+ * ALGORITHM:
+ *     1) Decide where the comment should be aligned, and if lines should
+ *        be broken.
+ *     2) If lines should not be broken and filled, just copy up to end of
+ *        comment.
+ *     3) If lines should be filled, then scan through the input buffer,
+ *        copying characters to com_buf.  Remember where the last blank,
+ *        tab, or newline was.  When line is filled, print up to last blank
+ *        and continue copying.
+ */
+void
+process_comment(void)
+{
+    int adj_max_line_length;   /* Adjusted max_line_length for comments that
+                                * spill over the right margin */
+    bool break_delim = opt.comment_delimiter_on_blankline;
+
+    adj_max_line_length = opt.max_line_length;
+    ps.just_saw_decl = 0;
+    bool may_wrap = true;
+    ps.stats.comments++;
+
+    int l_just_saw_decl = ps.just_saw_decl;
+    analyze_comment(&adj_max_line_length, &break_delim, &may_wrap);
+    copy_comment(adj_max_line_length, break_delim, may_wrap);
+    ps.just_saw_decl = l_just_saw_decl;
+}



Home | Main Index | Thread Index | Old Index