From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54059) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uzpdd-0005mL-Oq for qemu-devel@nongnu.org; Thu, 18 Jul 2013 10:57:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uzpdc-0001mO-La for qemu-devel@nongnu.org; Thu, 18 Jul 2013 10:57:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:52115) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uzpdc-0001lS-Dj for qemu-devel@nongnu.org; Thu, 18 Jul 2013 10:57:00 -0400 Message-ID: <51E8022A.7090008@redhat.com> Date: Thu, 18 Jul 2013 16:56:42 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1374155964-11278-1-git-send-email-lersek@redhat.com> <1374155964-11278-3-git-send-email-lersek@redhat.com> In-Reply-To: <1374155964-11278-3-git-send-email-lersek@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [RFC 2/6] OptsVisitor: introduce list modes for interval flattening List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laszlo Ersek Cc: qemu-devel@nongnu.org, gaowanlong@cn.fujitsu.com 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)); Paolo