Patchwork [5/9] Rename "gsmob" in Guile interface to "gdb object"

login
register
mail settings
Submitter Andy Wingo
Date April 9, 2014, 4:13 p.m.
Message ID <1397060028-18158-6-git-send-email-wingo@igalia.com>
Download mbox | patch
Permalink /patch/461/
State Changes Requested
Headers show

Comments

Andy Wingo - April 9, 2014, 4:13 p.m.
* gdb/guile/scm-gsmob.c:
* gdb/guile/lib/gdb.scm (gdb-object-kind, gdb-object-property)
  (set-gdb-object-property!, gdb-object-has-property?)
  (gdb-object-properties): Rename from gsmob-kind, gsmob-property, etc.
  The fact that these are SMOBs is a C implementation detail that should
  not be exposed to Scheme.

* gdb/doc/guile.texi (GDB Scheme Data Types): Update the manual.

* gdb/testsuite/gdb.guile/scm-breakpoint.exp:
* gdb/testsuite/gdb.guile/scm-gsmob.exp: Adapt to renames.
---
 gdb/doc/guile.texi                         | 37 +++++++++++++++---------------
 gdb/guile/lib/gdb.scm                      | 12 +++++-----
 gdb/guile/scm-gsmob.c                      | 30 ++++++++++++------------
 gdb/testsuite/gdb.guile/scm-breakpoint.exp | 14 +++++------
 gdb/testsuite/gdb.guile/scm-gsmob.exp      | 14 +++++------
 5 files changed, 53 insertions(+), 54 deletions(-)
Doug Evans - April 12, 2014, 6:46 p.m.
Andy Wingo <wingo@igalia.com> writes:

> diff --git a/gdb/doc/guile.texi b/gdb/doc/guile.texi
> index 3f6580e..f7204e9 100644
> --- a/gdb/doc/guile.texi
> +++ b/gdb/doc/guile.texi
> @@ -331,46 +331,45 @@ This is the string passed to @code{--target} when @value{GDBN} was configured.
>  
>  @node GDB Scheme Data Types
>  @subsubsection GDB Scheme Data Types
> -@cindex gdb smobs
> +@cindex gdb objects
>  
> -@value{GDBN} uses Guile's @dfn{smob} (small object)
> -data type for all @value{GDBN} objects
> -(@pxref{Defining New Types (Smobs),,, guile, GNU Guile Reference Manual}).
> -The smobs that @value{GDBN} provides are called @dfn{gsmobs}.
> +The values exposed by @value{GDBN} to Guile are known as
> +@dfn{@value{GDBN} objects}.  There are several kinds of @value{GDBN}
> +object, and each is disjoint from all other types known to Guile.

objects

LGTM otherwise.
Andy Wingo - April 17, 2014, 9:39 a.m.
On Sat 12 Apr 2014 20:46, Doug Evans <xdje42@gmail.com> writes:

> Andy Wingo <wingo@igalia.com> writes:
>
>> diff --git a/gdb/doc/guile.texi b/gdb/doc/guile.texi
>> index 3f6580e..f7204e9 100644
>> --- a/gdb/doc/guile.texi
>> +++ b/gdb/doc/guile.texi
>> @@ -331,46 +331,45 @@ This is the string passed to @code{--target} when @value{GDBN} was configured.
>>  
>>  @node GDB Scheme Data Types
>>  @subsubsection GDB Scheme Data Types
>> -@cindex gdb smobs
>> +@cindex gdb objects
>>  
>> -@value{GDBN} uses Guile's @dfn{smob} (small object)
>> -data type for all @value{GDBN} objects
>> -(@pxref{Defining New Types (Smobs),,, guile, GNU Guile Reference Manual}).
>> -The smobs that @value{GDBN} provides are called @dfn{gsmobs}.
>> +The values exposed by @value{GDBN} to Guile are known as
>> +@dfn{@value{GDBN} objects}.  There are several kinds of @value{GDBN}
>> +object, and each is disjoint from all other types known to Guile.
>
> objects

You sure?  "There are several kinds of GDB object, and..." sounds better
to me than "There are several kinds of GDB objects, and...".  Maybe it
would be better to restructure the sentence; I tried a few other
formulations and all sounded worse.

Andy
Eli Zaretskii - April 17, 2014, 9:46 a.m.
> From: Andy Wingo <wingo@igalia.com>
> Cc: gdb-patches@sourceware.org
> Date: Thu, 17 Apr 2014 11:39:47 +0200
> 
> >> +The values exposed by @value{GDBN} to Guile are known as
> >> +@dfn{@value{GDBN} objects}.  There are several kinds of @value{GDBN}
> >> +object, and each is disjoint from all other types known to Guile.
> >
> > objects
> 
> You sure?

I think Doug is right, although what you wrote is not entirely wrong,
either.

> "There are several kinds of GDB object, and..." sounds better
> to me than "There are several kinds of GDB objects, and...".  Maybe it
> would be better to restructure the sentence; I tried a few other
> formulations and all sounded worse.

How about this:

  @value{GDBN} objects can be of several distinct types; each type is
  different from any other type known to Guile.

Patch

diff --git a/gdb/doc/guile.texi b/gdb/doc/guile.texi
index 3f6580e..f7204e9 100644
--- a/gdb/doc/guile.texi
+++ b/gdb/doc/guile.texi
@@ -331,46 +331,45 @@  This is the string passed to @code{--target} when @value{GDBN} was configured.
 
 @node GDB Scheme Data Types
 @subsubsection GDB Scheme Data Types
-@cindex gdb smobs
+@cindex gdb objects
 
-@value{GDBN} uses Guile's @dfn{smob} (small object)
-data type for all @value{GDBN} objects
-(@pxref{Defining New Types (Smobs),,, guile, GNU Guile Reference Manual}).
-The smobs that @value{GDBN} provides are called @dfn{gsmobs}.
+The values exposed by @value{GDBN} to Guile are known as
+@dfn{@value{GDBN} objects}.  There are several kinds of @value{GDBN}
+object, and each is disjoint from all other types known to Guile.
 
-@deffn {Scheme Procedure} gsmob-kind gsmob
-Return the kind of the gsmob, e.g., @code{<gdb:breakpoint>},
+@deffn {Scheme Procedure} gdb-object-kind object
+Return the kind of the @value{GDBN} object, e.g., @code{<gdb:breakpoint>},
 as a symbol.
 @end deffn
 
-Every @code{gsmob} provides a common set of functions for extending
-them in simple ways.  Each @code{gsmob} has a list of properties,
-initially empty.  These properties are akin to Guile's object properties,
-but are stored with the @code{gsmob}
+Every @value{GDBN} object provides a common set of functions for
+extending them in simple ways.  Each @value{GDBN} object has a list of
+properties, initially empty.  These properties are akin to Guile's
+object properties, but are stored with the @value{GDBN} object
 (@pxref{Object Properties,,, guile, GNU Guile Reference Manual}).
 Property names can be any @code{eq?}-able value, but it is recommended
 that they be symbols.
 
-@deffn {Scheme Procedure} set-gsmob-property! gsmob property-name value
+@deffn {Scheme Procedure} set-gdb-object-property! object property-name value
 Set the value of property @code{property-name} to value @code{value}.
 The result is unspecified.
 @end deffn
 
-@deffn {Scheme Procedure} gsmob-property gsmob property-name
+@deffn {Scheme Procedure} gdb-object-property object property-name
 Return the value of property @code{property-name}.
 If the property isn't present then @code{#f} is returned.
 @end deffn
 
-@deffn {Scheme Procedure} gsmob-has-property? gsmob property-name
-Return @code{#t} if @code{gsmob} has property @code{property-name}.
+@deffn {Scheme Procedure} gdb-object-has-property? object property-name
+Return @code{#t} if @value{GDBN} object has property @code{property-name}.
 Otherwise return @code{#f}.
 @end deffn
 
-@deffn {Scheme Procedure} gsmob-properties gsmob
+@deffn {Scheme Procedure} gdb-object-properties object
 Return an unsorted list of names of properties.
 @end deffn
 
-@value{GDBN} defines the following Scheme smobs:
+@value{GDBN} defines the following object types:
 
 @table @code
 @item <gdb:arch>
@@ -425,8 +424,8 @@  Return an unsorted list of names of properties.
 @xref{Values From Inferior In Guile}.
 @end table
 
-The following gsmobs are managed internally so that the Scheme function
-@code{eq?} may be applied to them.
+The following @value{GDBN} objects are managed internally so that the
+Scheme function @code{eq?} may be applied to them.
 
 @table @code
 @item <gdb:arch>
diff --git a/gdb/guile/lib/gdb.scm b/gdb/guile/lib/gdb.scm
index 37f0934..396ccd2 100644
--- a/gdb/guile/lib/gdb.scm
+++ b/gdb/guile/lib/gdb.scm
@@ -270,13 +270,13 @@ 
  make-pretty-printer-worker
  pretty-printer-worker?
 
- ;; scm-smob.c
+ ;; scm-gsmob.c
 
- gsmob-kind
- gsmob-property
- set-gsmob-property!
- gsmob-has-property?
- gsmob-properties
+ gdb-object-kind
+ gdb-object-property
+ set-gdb-object-property!
+ gdb-object-has-property?
+ gdb-object-properties
 
  <gdb:value>
  <gdb:block>
diff --git a/gdb/guile/scm-gsmob.c b/gdb/guile/scm-gsmob.c
index 4c88ff9..1ca6af3 100644
--- a/gdb/guile/scm-gsmob.c
+++ b/gdb/guile/scm-gsmob.c
@@ -48,7 +48,7 @@ 
 
    Gsmobs (and chained/eqable gsmobs) add an extra field that is used to
    record extra data: "properties".  It is a table of key/value pairs
-   that can be set with set-gsmob-property!, gsmob-property.  */
+   that can be set with set-gdb-object-property!, gdb-object-property.  */
 
 #include "defs.h"
 #include "hashtab.h"
@@ -222,9 +222,9 @@  gsscm_get_gsmob_arg_unsafe (SCM self, int arg_pos, const char *func_name)
   return self;
 }
 
-/* (gsmob-kind gsmob) -> symbol
+/* (gdb-object-kind gsmob) -> symbol
 
-   Note: While one might want to name this gsmob-class-name, it is named
+   Note: While one might want to name this gdb-object-class-name, it is named
    "-kind" because smobs aren't real GOOPS classes.  */
 
 static SCM
@@ -246,7 +246,7 @@  gdbscm_gsmob_kind (SCM self)
   return result;
 }
 
-/* (gsmob-property gsmob property) -> object
+/* (gdb-object-property gsmob property) -> object
    If property isn't present then #f is returned.  */
 
 static SCM
@@ -265,7 +265,7 @@  gdbscm_gsmob_property (SCM self, SCM property)
   return scm_assq_ref (base->properties, property);
 }
 
-/* (set-gsmob-property! gsmob property new-value) -> unspecified */
+/* (set-gdb-object-property! gsmob property new-value) -> unspecified */
 
 static SCM
 gdbscm_set_gsmob_property_x (SCM self, SCM property, SCM new_value)
@@ -306,7 +306,7 @@  gdbscm_set_gsmob_property_x (SCM self, SCM property, SCM new_value)
   return SCM_UNSPECIFIED;
 }
 
-/* (gsmob-has-property? gsmob property) -> boolean */
+/* (gdb-object-has-property? gsmob property) -> boolean */
 
 static SCM
 gdbscm_gsmob_has_property_p (SCM self, SCM property)
@@ -336,7 +336,7 @@  add_property_name (void *closure, SCM handle)
   return SCM_UNSPECIFIED;
 }
 
-/* (gsmob-properties gsmob) -> list
+/* (gdb-object-properties gsmob) -> list
    The list is unsorted.  */
 
 static SCM
@@ -459,23 +459,23 @@  gdbscm_clear_eqable_gsmob_ptr_slot (htab_t htab, eqable_gdb_smob *base)
 
 static const scheme_function gsmob_functions[] =
 {
-  { "gsmob-kind", 1, 0, 0, gdbscm_gsmob_kind,
+  { "gdb-object-kind", 1, 0, 0, gdbscm_gsmob_kind,
     "\
-Return the kind of the smob, e.g., <gdb:breakpoint>, as a symbol." },
+Return the kind of the GDB object, e.g., <gdb:breakpoint>, as a symbol." },
 
-  { "gsmob-property", 2, 0, 0, gdbscm_gsmob_property,
+  { "gdb-object-property", 2, 0, 0, gdbscm_gsmob_property,
     "\
-Return the specified property of the gsmob." },
+Return the specified property of the GDB object." },
 
-  { "set-gsmob-property!", 3, 0, 0, gdbscm_set_gsmob_property_x,
+  { "set-gdb-object-property!", 3, 0, 0, gdbscm_set_gsmob_property_x,
     "\
-Set the specified property of the gsmob." },
+Set the specified property of the GDB object." },
 
-  { "gsmob-has-property?", 2, 0, 0, gdbscm_gsmob_has_property_p,
+  { "gdb-object-has-property?", 2, 0, 0, gdbscm_gsmob_has_property_p,
     "\
 Return #t if the specified property is present." },
 
-  { "gsmob-properties", 1, 0, 0, gdbscm_gsmob_properties,
+  { "gdb-object-properties", 1, 0, 0, gdbscm_gsmob_properties,
     "\
 Return an unsorted list of names of properties." },
 
diff --git a/gdb/testsuite/gdb.guile/scm-breakpoint.exp b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
index b25d4e0..4e78791 100644
--- a/gdb/testsuite/gdb.guile/scm-breakpoint.exp
+++ b/gdb/testsuite/gdb.guile/scm-breakpoint.exp
@@ -310,14 +310,14 @@  proc test_bkpt_eval_funcs { } {
 	    "(define set-bp-data-count! set-car!)" "" \
 	    "(define bp-data-inf-i cdr)" "" \
 	    "(define set-bp-data-inf-i! set-cdr!)" "" \
-	    "(define (bp-eval-count bkpt) (bp-data-count (gsmob-property bkpt 'bp-data)))" "" \
-	    "(define (bp-eval-inf-i bkpt) (bp-data-inf-i (gsmob-property bkpt 'bp-data)))" "" \
+	    "(define (bp-eval-count bkpt) (bp-data-count (gdb-object-property bkpt 'bp-data)))" "" \
+	    "(define (bp-eval-inf-i bkpt) (bp-data-inf-i (gdb-object-property bkpt 'bp-data)))" "" \
 	    "(define (make-bp-eval location)" "" \
 	    "  (let ((bp (create-breakpoint! location)))" "" \
-	    "    (set-gsmob-property! bp 'bp-data (make-bp-data))" "" \
+	    "    (set-gdb-object-property! bp 'bp-data (make-bp-data))" "" \
 	    "    (set-breakpoint-stop! bp" "" \
 	    "       (lambda (bkpt)" "" \
-	    "         (let ((data (gsmob-property bkpt 'bp-data))" "" \
+	    "         (let ((data (gdb-object-property bkpt 'bp-data))" "" \
 	    "               (inf-i (parse-and-eval \"i\")))" "" \
 	    "           (set-bp-data-count! data (+ (bp-data-count data) 1))" "" \
 	    "           (set-bp-data-inf-i! data inf-i)" "" \
@@ -329,10 +329,10 @@  proc test_bkpt_eval_funcs { } {
 	    "guile" "" \
 	    "(define (make-bp-also-eval location)" "" \
 	    "  (let ((bp (create-breakpoint! location)))" "" \
-	    "    (set-gsmob-property! bp 'bp-data (make-bp-data))" "" \
+	    "    (set-gdb-object-property! bp 'bp-data (make-bp-data))" "" \
 	    "    (set-breakpoint-stop! bp" "" \
 	    "       (lambda (bkpt)" "" \
-	    "         (let* ((data (gsmob-property bkpt 'bp-data))" "" \
+	    "         (let* ((data (gdb-object-property bkpt 'bp-data))" "" \
 	    "                (count (+ (bp-data-count data) 1)))" "" \
 	    "           (set-bp-data-count! data count)" "" \
 	    "           (= count 9))))" "" \
@@ -343,7 +343,7 @@  proc test_bkpt_eval_funcs { } {
 	    "guile" "" \
 	    "(define (make-bp-basic location)" "" \
 	    "  (let ((bp (create-breakpoint! location)))" "" \
-	    "    (set-gsmob-property! bp 'bp-data (make-bp-data))" "" \
+	    "    (set-gdb-object-property! bp 'bp-data (make-bp-data))" "" \
 	    "    bp))" "" \
 	    "end" ""
 
diff --git a/gdb/testsuite/gdb.guile/scm-gsmob.exp b/gdb/testsuite/gdb.guile/scm-gsmob.exp
index 470afc4..e33d0e1 100644
--- a/gdb/testsuite/gdb.guile/scm-gsmob.exp
+++ b/gdb/testsuite/gdb.guile/scm-gsmob.exp
@@ -45,17 +45,17 @@  proc prop_name { i } {
 # Set and ref the properties in separate loops to verify previously set
 # properties are not lost when we set a new property or switch to htabs.
 for {set i 0} {$i <= $SMOB_PROP_HTAB_THRESHOLD} {incr i} {
-    gdb_test "gu (print (gsmob-has-property? arch '[prop_name $i]))" \
+    gdb_test "gu (print (gdb-object-has-property? arch '[prop_name $i]))" \
 	"= #f" "property prop$i not present before set"
-    gdb_test_no_output "gu (set-gsmob-property! arch '[prop_name $i] $i)" \
+    gdb_test_no_output "gu (set-gdb-object-property! arch '[prop_name $i] $i)" \
 	"set prop $i"
-    gdb_test "gu (print (gsmob-has-property? arch '[prop_name $i]))" \
+    gdb_test "gu (print (gdb-object-has-property? arch '[prop_name $i]))" \
 	"= #t" "property prop$i present after set"
 }
 for {set i 0} {$i <= $SMOB_PROP_HTAB_THRESHOLD} {incr i} {
-    gdb_test "gu (print (gsmob-has-property? arch '[prop_name $i]))" \
+    gdb_test "gu (print (gdb-object-has-property? arch '[prop_name $i]))" \
 	"= #t" "property prop$i present after all set"
-    gdb_test "gu (print (gsmob-property arch '[prop_name $i]))" \
+    gdb_test "gu (print (gdb-object-property arch '[prop_name $i]))" \
 	"= $i" "ref prop $i"
 }
 
@@ -66,5 +66,5 @@  for {set i 0} {$i <= $SMOB_PROP_HTAB_THRESHOLD} {incr i} {
 }
 set prop_list [lsort $prop_list]
 verbose -log "prop_list: $prop_list"
-gdb_test "gu (print (sort (gsmob-properties arch) (lambda (a b) (string<? (symbol->string a) (symbol->string b)))))" \
-    "= \\($prop_list\\)" "gsmob-properties"
+gdb_test "gu (print (sort (gdb-object-properties arch) (lambda (a b) (string<? (symbol->string a) (symbol->string b)))))" \
+    "= \\($prop_list\\)" "gdb-object-properties"