gbranden pushed a commit to branch master
in repository groff.

commit 98cdb206dc6c72799984af9e464dd3548c080af3
Author: G. Branden Robinson <[email protected]>
AuthorDate: Mon Apr 27 15:12:53 2026 -0500

    [troff]: Stop reporting read-only regs' formats.
    
    Stop reporting number format for read-only registers.
    
    * src/roff/troff/reg.h (class reg, class general_reg): Define new public
      member function `has_format()` returning `bool`.
    
    * src/roff/troff/reg.cpp (reg::has_format): Return `false`.
    
      (general_reg::has_format): Return `true`.
    
      (dump_register): Report register format only if register's
      `has_format()` member function returns `true`.
---
 ChangeLog              | 11 +++++++++++
 src/roff/troff/reg.cpp | 20 ++++++++++++++++----
 src/roff/troff/reg.h   |  2 ++
 3 files changed, 29 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index df2328a21..ff24d3eba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2026-04-27  G. Branden Robinson <[email protected]>
+
+       [troff]: Stop reporting number format for read-only registers.
+
+       * src/roff/troff/reg.h (class reg, class general_reg): Define
+       new public member function `has_format()` returning `bool`.
+       * src/roff/troff/reg.cpp (reg::has_format): Return `false`.
+       (general_reg::has_format): Return `true`.
+       (dump_register): Report register format only if register's
+       `has_format()` member function returns `true`.
+
 2026-04-27  G. Branden Robinson <[email protected]>
 
        * src/roff/troff/input.cpp (init_input_requests): Make `.O`
diff --git a/src/roff/troff/reg.cpp b/src/roff/troff/reg.cpp
index 88e571c7a..561039ae1 100644
--- a/src/roff/troff/reg.cpp
+++ b/src/roff/troff/reg.cpp
@@ -88,6 +88,11 @@ bool reg::can_autoincrement() const
   return false;
 }
 
+bool reg::has_format() const
+{
+  return false;
+}
+
 general_reg::general_reg() : format('1'), width(0), inc(0)
 {
 }
@@ -280,6 +285,11 @@ bool general_reg::can_autoincrement() const
   return true;
 }
 
+bool general_reg::has_format() const
+{
+  return true;
+}
+
 void general_reg::alter_format(char f, int w)
 {
   format = f;
@@ -577,10 +587,12 @@ static void dump_register(symbol *id, reg *r)
       (void) snprintf(inc, sz, "%+d", r->get_increment());
       errprint("\t%1", inc);
     }
-    const char *f = r->get_format();
-    assert(f != 0 /* nullptr */);
-    if (f != 0 /* nullptr*/)
-      errprint("\t%1", f);
+    if (r->has_format()) {
+      const char *f = r->get_format();
+      assert(f != 0 /* nullptr */);
+      if (f != 0 /* nullptr*/)
+       errprint("\t%1", f);
+    }
   }
   else {
     const char *s = r->get_string();
diff --git a/src/roff/troff/reg.h b/src/roff/troff/reg.h
index b004b45d0..26e96cc56 100644
--- a/src/roff/troff/reg.h
+++ b/src/roff/troff/reg.h
@@ -29,6 +29,7 @@ public:
   virtual const char *get_format();
   virtual void set_value(units);
   virtual bool can_autoincrement() const;
+  virtual bool has_format() const;
 };
 
 // TODO: Use template to parameterize class in the pointed-to data type?
@@ -60,6 +61,7 @@ public:
   void set_increment(units);
   int get_increment() const;
   bool can_autoincrement() const;
+  bool has_format() const;
   const char *get_format();
   void add_value(units);
 

_______________________________________________
groff-commit mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/groff-commit

Reply via email to