Move value_true to value.h
authorTom Tromey <tom@tromey.com>
Fri, 27 Aug 2021 00:17:40 +0000 (18:17 -0600)
committerTom Tromey <tom@tromey.com>
Fri, 24 Sep 2021 17:58:04 +0000 (11:58 -0600)
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 and value_logical_not to
return a bool, and updates some uses.

gdb/ada-lang.c
gdb/cli/cli-script.c
gdb/eval.c
gdb/language.c
gdb/language.h
gdb/opencl-lang.c
gdb/valarith.c
gdb/value.h

index 487d92be5c9240bb879d2572b89ebb7aaa224e6d..a00fa1411564e0f05d099a28f59726b2ec7ba5ea 100644 (file)
@@ -11765,13 +11765,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)
@@ -11799,16 +11799,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;
index 984636779023ac92abc5b87323281b8620beeac7..0aaa59ea65f229979180bac0d31aa69b0f9a2674 100644 (file)
@@ -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;
 
index 1c5c8cf38afec30f61e4af3ac5f6a5eae2a4e4b9..bfab6d8094a14d4a2d0eedc9e86f7f902f3c8e13 100644 (file)
@@ -2204,7 +2204,7 @@ logical_and_operation::evaluate (struct type *expect_type,
     }
   else
     {
-      int tem = value_logical_not (arg1);
+      bool tem = value_logical_not (arg1);
       if (!tem)
        {
          arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
@@ -2233,7 +2233,7 @@ logical_or_operation::evaluate (struct type *expect_type,
     }
   else
     {
-      int tem = value_logical_not (arg1);
+      bool tem = value_logical_not (arg1);
       if (tem)
        {
          arg2 = std::get<1> (m_storage)->evaluate (nullptr, exp, noside);
index 0354fb81865d1d01576da246687ab7fce671445a..cb28e638fc4fc9360b86e0f09f3830dfcaed2e4b 100644 (file)
@@ -387,23 +387,6 @@ language_info ()
   show_language_command (NULL, 1, NULL, NULL);
 }
 \f
-
-/* 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);
-}
-\f
 /* This page contains functions for the printing out of
    error messages that occur during type- and range-
    checking.  */
index 63d64b5b9dafbe8cef281ea6e67e0f34df80fe13..cec3ab03ed65f1b855fa9311516b580bfe9ad0a1 100644 (file)
@@ -778,10 +778,6 @@ extern enum language set_language (enum language);
 
 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);
index 136969ead7664928efa72a7ec621a414b9fe09d3..b877de400d7b9a1c5e6c0d6fbb067581232cf237 100644 (file)
@@ -748,7 +748,7 @@ opencl_logical_binop_operation::evaluate (struct type *expect_type,
       /* For scalar built-in types, only evaluate the right
         hand operand if the left hand operand compares
         unequal(&&)/equal(||) to 0.  */
-      int tmp = value_logical_not (arg1);
+      bool tmp = value_logical_not (arg1);
 
       if (op == BINOP_LOGICAL_OR)
        tmp = !tmp;
index 9ebad648b27bd6f7a23973c26a53b829452d0877..07472ef7c8a046edac2014928bb02ec14cb51ad9 100644 (file)
@@ -1653,9 +1653,9 @@ value_binop (struct value *arg1, struct value *arg2, enum exp_opcode op)
   return val;
 }
 \f
-/* Simulate the C operator ! -- return 1 if ARG1 contains zero.  */
+/* See value.h.  */
 
-int
+bool
 value_logical_not (struct value *arg1)
 {
   int len;
index e1c6aabfa294fc1556936ca2e92c1434ea46cc78..3f00444e7e3b227c6be1174fd0ea1414012100dd 100644 (file)
@@ -1022,7 +1022,15 @@ extern int value_equal_contents (struct value *arg1, struct value *arg2);
 
 extern int value_less (struct value *arg1, struct value *arg2);
 
-extern int value_logical_not (struct value *arg1);
+/* Simulate the C operator ! -- return true if ARG1 contains zero.  */
+extern bool value_logical_not (struct value *arg1);
+
+/* Returns true if the value VAL represents a true value.  */
+static inline bool
+value_true (struct value *val)
+{
+  return !value_logical_not (val);
+}
 
 /* C++ */