Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Keith Seitz <keiths@redhat.com>
To: Yao Qi <yao@codesourcery.com>, gdb-patches@sourceware.org
Subject: Re: [PATCH 08/12] Iterator varobj_items by their availability
Date: Thu, 24 Apr 2014 20:28:00 -0000	[thread overview]
Message-ID: <535973ED.5010302@redhat.com> (raw)
In-Reply-To: <1392367471-13527-9-git-send-email-yao@codesourcery.com>

On 02/14/2014 12:44 AM, Yao Qi wrote:
>   V2:
>   - Fix changelog entry.
>   - Add comments.
>   - Use XNEW.
>   - Fix typo.
>   - Update copyright year for new added file.
>
> gdb:
>
> 2014-02-14  Pedro Alves  <pedro@codesourcery.com>
> 	    Yao Qi  <yao@codesourcery.com>
>
> 	* Makefile.in (SFILES): Add varobj-iter-avail.c.
> 	(COMMON_OBS): Add varobj-iter-avail.o.
> 	* varobj-iter-avail.c: New file.
> 	* varobj-iter.h (avail_varobj_get_iterator): Declare.
> 	* varobj.c (varobj_get_iterator): Add one more argument
> 	'lang_ops'.  All callers updated.
> 	Return iterator for available children.

This looks good to me, but I have one little thing I'd like to ask...

> +static int
> +varobj_value_unavailable (struct value *val)
> +{

[snip]

> +/* Implementation of the `next' method for available-children-only
> +   varobj iterators.  */
> +
> +static varobj_item *
> +avail_varobj_iter_next (struct varobj_iter *self)
> +{
> +  struct avail_varobj_iter *dis = (struct avail_varobj_iter *) self;
> +  int num_children = dis->lang_ops->number_of_children (self->var);
> +  int raw_index = self->next_raw_index;
> +  varobj_item *item = NULL;
> +
> +  for (; raw_index < num_children; raw_index++)
> +    {
> +      struct value *child_value
> +	= dis->lang_ops->value_of_child (self->var, raw_index);
> +
> +      /* The "fake" children will have NULL values.  */
> +      if (child_value == NULL || !varobj_value_unavailable (child_value))
> +	{

Maybe it's just me (and maybe because I am especially slow today), but I 
find the use of double-negatives slow me/my comprehension down. The 
above test reads, "if child_value is NULL or child_value is not 
unavailable..."

What do you think about inverting the name of this function and the test 
like so:

   if (child_value == NULL || varobj_value_available (child_value))
      /* ... */

Then that reads, "if child_value is NULL or the value is available," 
which is immensely easier for me to comprehend. [But maybe I'm the only 
one?]

Keith


  reply	other threads:[~2014-04-24 20:28 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-14  8:46 [RFC 00/12 V2] Visit varobj available children only in MI Yao Qi
2014-02-14  8:46 ` [PATCH 07/12] MI option --available-children-only Yao Qi
2014-04-24 20:02   ` Keith Seitz
2014-02-14  8:46 ` [PATCH 01/12] Use 'struct varobj_item' to represent name and value pair Yao Qi
2014-04-23 18:16   ` Keith Seitz
2014-05-21 17:53   ` Tom Tromey
2014-02-14  8:46 ` [PATCH 05/12] Rename varobj_pretty_printed_p to varobj_is_dynamic_p Yao Qi
2014-04-24 17:39   ` Keith Seitz
2014-05-21 18:02   ` Tom Tromey
2014-02-14  8:46 ` [PATCH 11/12] Test case Yao Qi
2014-04-18 11:45   ` Yao Qi
2014-04-24 20:53     ` Keith Seitz
2014-02-14  8:46 ` [PATCH 08/12] Iterator varobj_items by their availability Yao Qi
2014-04-24 20:28   ` Keith Seitz [this message]
2014-02-14  8:46 ` [PATCH 09/12] Delete varobj's children on traceframe is changed Yao Qi
2014-04-24 20:45   ` Keith Seitz
2014-02-14  8:46 ` [PATCH 10/12] Match dynamic="1" in the output of -var-list-children Yao Qi
2014-04-24 20:50   ` Keith Seitz
2014-02-14  8:46 ` [PATCH 04/12] Remove #if HAVE_PYTHON Yao Qi
2014-04-23 19:25   ` Keith Seitz
2014-05-21 17:52   ` Tom Tromey
2014-02-14  8:46 ` [PATCH 06/12] Use varobj_is_dynamic_p more widely Yao Qi
2014-04-24 18:17   ` Keith Seitz
2014-05-21 18:04   ` Tom Tromey
2014-02-14  8:46 ` [PATCH 02/12] Generalize varobj iterator Yao Qi
2014-04-23 19:24   ` Keith Seitz
2014-05-21 17:51   ` Tom Tromey
2014-05-23  1:23     ` Yao Qi
2014-06-04 20:21       ` Tom Tromey
2014-06-05  5:36         ` Yao Qi
2014-06-05 18:21           ` Tom Tromey
2014-02-14  8:46 ` [PATCH 03/12] Iterate over 'struct varobj_item' instead of PyObject Yao Qi
2014-04-23 19:29   ` Keith Seitz
2014-05-21 18:01   ` Tom Tromey
2014-05-23  1:33     ` Yao Qi
2014-06-04 20:22       ` Tom Tromey
2014-02-14  8:46 ` [PATCH 12/12] NEWS and Doc on --available-children-only Yao Qi
2014-02-14  9:40   ` Eli Zaretskii
2014-02-17  9:46     ` Yao Qi
2014-02-17 15:04       ` Eli Zaretskii
2014-02-18  2:01         ` Yao Qi
2014-02-18  5:11           ` Eli Zaretskii
2014-02-18  7:14             ` Yao Qi
2014-02-18 15:07               ` Eli Zaretskii
     [not found] ` <5327A296.3050605@codesourcery.com>
2014-04-04  2:00   ` [RFC 00/12 V2] Visit varobj available children only in MI Yao Qi
2014-04-17  1:12     ` ping : " Yao Qi
2014-04-21 16:20       ` Joel Brobecker
2014-04-22  2:54         ` Yao Qi
2014-06-12  7:37 ` Yao Qi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=535973ED.5010302@redhat.com \
    --to=keiths@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=yao@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox