This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFC: [1/4] move check_field


This one is trivial.

I noticed check_field is only called from a single place, and I needed
to change it, so first I moved it to symtab.c and made it static.

Tested by rebuilding.

Tom

	* symtab.c (check_field): Now static.  Move from...
	* valops.c (check_field): ... here.  Remove.
	* value.h (check_field): Don't declare.
---
 gdb/symtab.c |   36 ++++++++++++++++++++++++++++++++++++
 gdb/valops.c |   36 ------------------------------------
 gdb/value.h  |    2 --
 3 files changed, 36 insertions(+), 38 deletions(-)

diff --git a/gdb/symtab.c b/gdb/symtab.c
index 05943cf..c1eab45 100644
--- a/gdb/symtab.c
+++ b/gdb/symtab.c
@@ -1277,6 +1277,42 @@ lookup_language_this (const struct language_defn *lang,
   return NULL;
 }
 
+/* Given TYPE, a structure/union,
+   return 1 if the component named NAME from the ultimate target
+   structure/union is defined, otherwise, return 0.  */
+
+static int
+check_field (struct type *type, const char *name)
+{
+  int i;
+
+  /* The type may be a stub.  */
+  CHECK_TYPEDEF (type);
+
+  for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
+    {
+      const char *t_field_name = TYPE_FIELD_NAME (type, i);
+
+      if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
+	return 1;
+    }
+
+  /* C++: If it was not found as a data field, then try to return it
+     as a pointer to a method.  */
+
+  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
+    {
+      if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
+	return 1;
+    }
+
+  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
+    if (check_field (TYPE_BASECLASS (type, i), name))
+      return 1;
+
+  return 0;
+}
+
 /* Behave like lookup_symbol except that NAME is the natural name
    (e.g., demangled name) of the symbol that we're looking for.  */
 
diff --git a/gdb/valops.c b/gdb/valops.c
index 502fb0d..924b56d 100644
--- a/gdb/valops.c
+++ b/gdb/valops.c
@@ -3180,42 +3180,6 @@ destructor_name_p (const char *name, struct type *type)
   return 0;
 }
 
-/* Given TYPE, a structure/union,
-   return 1 if the component named NAME from the ultimate target
-   structure/union is defined, otherwise, return 0.  */
-
-int
-check_field (struct type *type, const char *name)
-{
-  int i;
-
-  /* The type may be a stub.  */
-  CHECK_TYPEDEF (type);
-
-  for (i = TYPE_NFIELDS (type) - 1; i >= TYPE_N_BASECLASSES (type); i--)
-    {
-      const char *t_field_name = TYPE_FIELD_NAME (type, i);
-
-      if (t_field_name && (strcmp_iw (t_field_name, name) == 0))
-	return 1;
-    }
-
-  /* C++: If it was not found as a data field, then try to return it
-     as a pointer to a method.  */
-
-  for (i = TYPE_NFN_FIELDS (type) - 1; i >= 0; --i)
-    {
-      if (strcmp_iw (TYPE_FN_FIELDLIST_NAME (type, i), name) == 0)
-	return 1;
-    }
-
-  for (i = TYPE_N_BASECLASSES (type) - 1; i >= 0; i--)
-    if (check_field (TYPE_BASECLASS (type, i), name))
-      return 1;
-
-  return 0;
-}
-
 /* C++: Given an aggregate type CURTYPE, and a member name NAME,
    return the appropriate member (or the address of the member, if
    WANT_ADDRESS).  This function is used to resolve user expressions
diff --git a/gdb/value.h b/gdb/value.h
index 3685935..7127903 100644
--- a/gdb/value.h
+++ b/gdb/value.h
@@ -912,8 +912,6 @@ extern void print_variable_and_value (const char *name,
 				      struct ui_file *stream,
 				      int indent);
 
-extern int check_field (struct type *, const char *);
-
 extern void typedef_print (struct type *type, struct symbol *news,
 			   struct ui_file *stream);
 
-- 
1.7.7.6


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]