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
next prev parent 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