groff-commit
[Top][All Lists]
Advanced

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

[groff] 08/21: [troff]: Add `readonly_boolean_register` class.


From: G. Branden Robinson
Subject: [groff] 08/21: [troff]: Add `readonly_boolean_register` class.
Date: Sat, 16 Sep 2023 18:39:38 -0400 (EDT)

gbranden pushed a commit to branch master
in repository groff.

commit 6d47271fa9871e30250cf480b9771038b31ef18d
Author: G. Branden Robinson <g.branden.robinson@gmail.com>
AuthorDate: Thu Sep 14 23:16:03 2023 -0500

    [troff]: Add `readonly_boolean_register` class.
    
    [troff]: Add class for Boolean-valued read-only registers.
    Their values have been stored variously in `readonly_register`,
    which has full `int` range, and in normal string registers, as
    with `.A`.
    
    * src/roff/troff/reg.h (class readonly_boolean_register): Add.
    * src/roff/troff/input.cpp
      (readonly_boolean_register::readonly_boolean_register)
      (readonly_boolean_register::get_string): Define.
---
 ChangeLog                | 12 ++++++++++++
 src/roff/troff/input.cpp |  9 +++++++++
 src/roff/troff/reg.h     |  9 +++++++++
 3 files changed, 30 insertions(+)

diff --git a/ChangeLog b/ChangeLog
index e4a67966e..4ec010a9a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2023-09-14  G. Branden Robinson <g.branden.robinson@gmail.com>
+
+       [troff]: Add class for Boolean-valued read-only registers.
+       Their values have been stored variously in `readonly_register`,
+       which has full `int` range, and in normal string registers, as
+       with `.A`.
+
+       * src/roff/troff/reg.h (class readonly_boolean_register): Add.
+       * src/roff/troff/input.cpp
+       (readonly_boolean_register::readonly_boolean_register)
+       (readonly_boolean_register::get_string): Define.
+
 2023-09-14  G. Branden Robinson <g.branden.robinson@gmail.com>
 
        * src/roff/troff/input.cpp: Trivially refactor.  Rename some
diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp
index dfbe9c6c8..47daf483d 100644
--- a/src/roff/troff/input.cpp
+++ b/src/roff/troff/input.cpp
@@ -7683,6 +7683,15 @@ const char *readonly_register::get_string()
   return i_to_a(*p);
 }
 
+readonly_boolean_register::readonly_boolean_register(bool *q): p(q)
+{
+}
+
+const char *readonly_boolean_register::get_string()
+{
+  return i_to_a(*p);
+}
+
 void abort_request()
 {
   int c;
diff --git a/src/roff/troff/reg.h b/src/roff/troff/reg.h
index 1ee3a4ee0..415c4160f 100644
--- a/src/roff/troff/reg.h
+++ b/src/roff/troff/reg.h
@@ -29,6 +29,8 @@ public:
   virtual void set_value(units);
 };
 
+// TODO: Use template to parameterize class in the pointed-to data type?
+
 class readonly_register : public reg {
   int *p;
 public:
@@ -36,6 +38,13 @@ public:
   const char *get_string();
 };
 
+class readonly_boolean_register : public reg {
+  bool *p;
+public:
+  readonly_boolean_register(bool *);
+  const char *get_string();
+};
+
 class general_reg : public reg {
   char format;
   int width;



reply via email to

[Prev in Thread] Current Thread [Next in Thread]