Move value_true to value.h

Message ID 20210911181206.2818419-1-tom@tromey.com
State New
Headers show
Series
  • Move value_true to value.h
Related show

Commit Message

Tom Tromey Sept. 11, 2021, 6:12 p.m.
I noticed that value_true is declared in language.h and defined in
language.c.  However, as part of the value API, I think it would be
better in one of those files.  And, because it is very short, I
changed it to be an inline function in value.h.  I've also removed a
comment from the implementation, on the basis that it seems obsolete
-- if the change it suggests was needed, it probably would have been
done by now; and if it is needed in the future, odds are it would be
done differently anyway.

Finally, this patch also changes value_true to return a bool, and
updates some uses.
---
 gdb/ada-lang.c       | 10 +++++-----
 gdb/cli/cli-script.c |  3 +--
 gdb/language.c       | 17 -----------------
 gdb/language.h       |  4 ----
 gdb/value.h          |  7 +++++++
 5 files changed, 13 insertions(+), 28 deletions(-)

-- 
2.31.1

Patch

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index 6680a4fd657..63e2d587440 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -11754,13 +11754,13 @@  re_set_exception (struct breakpoint *b)
    user specified a specific exception, we only want to cause a stop
    if the program thrown that exception.  */
 
-static int
+static bool
 should_stop_exception (const struct bp_location *bl)
 {
   struct ada_catchpoint *c = (struct ada_catchpoint *) bl->owner;
   const struct ada_catchpoint_location *ada_loc
     = (const struct ada_catchpoint_location *) bl;
-  int stop;
+  bool stop;
 
   struct internalvar *var = lookup_internalvar ("_ada_exception");
   if (c->m_kind == ada_catch_assert)
@@ -11788,16 +11788,16 @@  should_stop_exception (const struct bp_location *bl)
 
   /* With no specific exception, should always stop.  */
   if (c->excep_string.empty ())
-    return 1;
+    return true;
 
   if (ada_loc->excep_cond_expr == NULL)
     {
       /* We will have a NULL expression if back when we were creating
 	 the expressions, this location's had failed to parse.  */
-      return 1;
+      return true;
     }
 
-  stop = 1;
+  stop = true;
   try
     {
       struct value *mark;
diff --git a/gdb/cli/cli-script.c b/gdb/cli/cli-script.c
index 98463677902..0aaa59ea65f 100644
--- a/gdb/cli/cli-script.c
+++ b/gdb/cli/cli-script.c
@@ -19,7 +19,6 @@ 
 
 #include "defs.h"
 #include "value.h"
-#include "language.h"		/* For value_true */
 #include <ctype.h>
 
 #include "ui-out.h"
@@ -579,7 +578,7 @@  execute_control_command_1 (struct command_line *cmd, int from_tty)
 	/* Keep iterating so long as the expression is true.  */
 	while (loop == 1)
 	  {
-	    int cond_result;
+	    bool cond_result;
 
 	    QUIT;
 
diff --git a/gdb/language.c b/gdb/language.c
index 45ce2ebcc92..f52956022ac 100644
--- a/gdb/language.c
+++ b/gdb/language.c
@@ -394,23 +394,6 @@  pointer_type (struct type *type)
 {
   return type->code () == TYPE_CODE_PTR || TYPE_IS_REFERENCE (type);
 }
-
-
-/* This page contains functions that return info about
-   (struct value) values used in GDB.  */
-
-/* Returns non-zero if the value VAL represents a true value.  */
-int
-value_true (struct value *val)
-{
-  /* It is possible that we should have some sort of error if a non-boolean
-     value is used in this context.  Possibly dependent on some kind of
-     "boolean-checking" option like range checking.  But it should probably
-     not depend on the language except insofar as is necessary to identify
-     a "boolean" value (i.e. in C using a float, pointer, etc., as a boolean
-     should be an error, probably).  */
-  return !value_logical_not (val);
-}
 
 /* This page contains functions for the printing out of
    error messages that occur during type- and range-
diff --git a/gdb/language.h b/gdb/language.h
index 21ed47b3580..c6bef7494b3 100644
--- a/gdb/language.h
+++ b/gdb/language.h
@@ -774,10 +774,6 @@  extern int pointer_type (struct type *);
 
 extern void range_error (const char *, ...) ATTRIBUTE_PRINTF (1, 2);
 
-/* Data:  Does this value represent "truth" to the current language?  */
-
-extern int value_true (struct value *);
-
 /* Misc:  The string representing a particular enum language.  */
 
 extern enum language language_enum (const char *str);
diff --git a/gdb/value.h b/gdb/value.h
index abbb8d4268a..c5847290564 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -1024,6 +1024,13 @@  extern int value_less (struct value *arg1, struct value *arg2);
 
 extern bool value_logical_not (struct value *arg1);
 
+/* Returns non-zero if the value VAL represents a true value.  */
+static inline bool
+value_true (struct value *val)
+{
+  return !value_logical_not (val);
+}
+
 /* C++ */
 
 extern struct value *value_of_this (const struct language_defn *lang);