From: Laszlo Ersek <lersek@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, gaowanlong@cn.fujitsu.com
Subject: Re: [Qemu-devel] [RFC 2/6] OptsVisitor: introduce list modes for interval flattening
Date: Thu, 18 Jul 2013 17:57:10 +0200 [thread overview]
Message-ID: <51E81056.8000004@redhat.com> (raw)
In-Reply-To: <51E8022A.7090008@redhat.com>
On 07/18/13 16:56, Paolo Bonzini wrote:
> Il 18/07/2013 15:59, Laszlo Ersek ha scritto:
>> The new modes are equal-rank, exclusive sub-modes of LM_IN_PROGRESS. Teach
>> opts_next_list(), opts_type_int() and opts_type_uint64() to handle them.
>
> Perhaps you could use a bitmap then:
>
> LM_NONE = 0
> LM_STARTED = 1
> LM_IN_PROGRESS = 2
> LM_SIGNED_INTERVAL = LM_IN_PROGRESS | 4
> LM_UNSIGNED_INTERVAL = LM_IN_PROGRESS | 8
>
> I think the only change would be that this hunk:
>
>> @@ -211,7 +238,10 @@ opts_end_list(Visitor *v, Error **errp)
>> {
>> OptsVisitor *ov = DO_UPCAST(OptsVisitor, visitor, v);
>>
>> - assert(ov->list_mode == LM_STARTED || ov->list_mode == LM_IN_PROGRESS);
>> + assert(ov->list_mode == LM_STARTED ||
>> + ov->list_mode == LM_IN_PROGRESS ||
>> + ov->list_mode == LM_SIGNED_INTERVAL ||
>> + ov->list_mode == LM_UNSIGNED_INTERVAL);
>> ov->repeated_opts = NULL;
>> ov->list_mode = LM_NONE;
>> }
>
> could be changed to
>
> assert(ov->list_mode == LM_STARTED ||
> (ov->list_mode & LM_IN_PROGRESS));
If you don't insist (please don't :)), I wouldn't like to do this.
(a) I wanted to represent and query each individual mode explicitly
(helps with code search),
(b) the "sub-mode" nature is a theoretical thing. It only applies to the
two interval modes. This small orthogonality is limited, it doesn't
cause "combinatorial explosion" (I didn't have to double the states or
such). Most importantly, I specifically wanted one state in general to
exclude any other state. Bitmaps beget thinking about the meaning of
arbitrary variations, like 1|4, 0|2 etc; I intended to prevent such
thoughts right in the type.
Thanks
Laszlo
next prev parent reply other threads:[~2013-07-18 16:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-18 13:59 [Qemu-devel] [RFC 0/6] OptsVisitor: support / flatten integer ranges for repeating options Laszlo Ersek
2013-07-18 13:59 ` [Qemu-devel] [RFC 1/6] OptsVisitor: introduce basic list modes Laszlo Ersek
2013-07-18 14:53 ` Paolo Bonzini
2013-07-18 15:45 ` Laszlo Ersek
2013-07-18 13:59 ` [Qemu-devel] [RFC 2/6] OptsVisitor: introduce list modes for interval flattening Laszlo Ersek
2013-07-18 14:56 ` Paolo Bonzini
2013-07-18 15:57 ` Laszlo Ersek [this message]
2013-07-18 16:03 ` Paolo Bonzini
2013-07-18 16:14 ` Laszlo Ersek
2013-07-18 13:59 ` [Qemu-devel] [RFC 3/6] OptsVisitor: opts_type_int(): recognize intervals when LM_IN_PROGRESS Laszlo Ersek
2013-07-18 13:59 ` [Qemu-devel] [RFC 4/6] OptsVisitor: rebase opts_type_uint64() to parse_uint_full() Laszlo Ersek
2013-07-18 13:59 ` [Qemu-devel] [RFC 5/6] OptsVisitor: opts_type_uint64(): recognize intervals when LM_IN_PROGRESS Laszlo Ersek
2013-07-18 13:59 ` [Qemu-devel] [RFC 6/6] OptsVisitor: don't try to flatten overlong integer ranges Laszlo Ersek
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=51E81056.8000004@redhat.com \
--to=lersek@redhat.com \
--cc=gaowanlong@cn.fujitsu.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/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;
as well as URLs for NNTP newsgroup(s).