From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0301143C12; Thu, 7 Mar 2024 18:43:03 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C98E142D7A; Thu, 7 Mar 2024 18:43:02 +0100 (CET) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 24D25410D5 for ; Thu, 7 Mar 2024 18:43:01 +0100 (CET) Received: by linux.microsoft.com (Postfix, from userid 1086) id 77FB020B74C0; Thu, 7 Mar 2024 09:43:00 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 77FB020B74C0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1709833380; bh=iS/33HmmW9NmsfEVSBFEvNhtXPdEWMRT6CE3BLvarK8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=qZu5EpH1trUDWeiMIkHuiToC+QhPq75228ZjD5HAiBBaqHTICtlK7nN5AGnrCR3Q/ 7nLYzsdpkXGWKvl/019miex+btbWbf1FOEU/LjbzhkKYQe7TRYxJL7mUKUyh0QEqi5 aK+KSBfdZ9Kxzmk3hne2D3iZBlWURcKpDOKmuGlw= Date: Thu, 7 Mar 2024 09:43:00 -0800 From: Tyler Retzlaff To: Chengwen Feng Cc: thomas@monjalon.net, dev@dpdk.org, david.marchand@redhat.com Subject: Re: [PATCH v2 3/5] argparse: replace flag enum with marco Message-ID: <20240307174300.GA14353@linuxonhyperv3.guj3yctzbm1etfxqx2vob5hsef.xx.internal.cloudapp.net> References: <20240220131502.47510-1-fengchengwen@huawei.com> <20240307130742.5578-1-fengchengwen@huawei.com> <20240307130742.5578-4-fengchengwen@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240307130742.5578-4-fengchengwen@huawei.com> User-Agent: Mutt/1.5.21 (2010-09-15) X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On Thu, Mar 07, 2024 at 01:07:40PM +0000, Chengwen Feng wrote: > The enum rte_argparse_flag's value is u64, but an enum in C is > represented as an int. This commit replace these enum values with > macro. > > Fixes: e3e579f5bab5 ("argparse: introduce argparse library") > Fixes: 5357c248c960 ("argparse: parse unsigned integers") > > Signed-off-by: Chengwen Feng > --- > lib/argparse/rte_argparse.h | 78 ++++++++++++++++--------------------- > 1 file changed, 33 insertions(+), 45 deletions(-) > > diff --git a/lib/argparse/rte_argparse.h b/lib/argparse/rte_argparse.h > index 47e231bef9..a6a7790cb4 100644 > --- a/lib/argparse/rte_argparse.h > +++ b/lib/argparse/rte_argparse.h > @@ -37,52 +37,40 @@ > extern "C" { > #endif > > +/**@{@name Flag definition (in bitmask form) for an argument > + * > + * @note Bits[0~1] represent the argument whether has value, > + * bits[2~9] represent the value type which used when autosave. > + * > + * @see struct rte_argparse_arg::flags > + */ > +/** The argument has no value. */ > +#define RTE_ARGPARSE_ARG_NO_VALUE RTE_SHIFT_VAL64(1, 0) > +/** The argument must have a value. */ > +#define RTE_ARGPARSE_ARG_REQUIRED_VALUE RTE_SHIFT_VAL64(2, 0) > +/** The argument has optional value. */ > +#define RTE_ARGPARSE_ARG_OPTIONAL_VALUE RTE_SHIFT_VAL64(3, 0) > +/** The argument's value is int type. */ > +#define RTE_ARGPARSE_ARG_VALUE_INT RTE_SHIFT_VAL64(1, 2) > +/** The argument's value is uint8 type. */ > +#define RTE_ARGPARSE_ARG_VALUE_U8 RTE_SHIFT_VAL64(2, 2) > +/** The argument's value is uint16 type. */ > +#define RTE_ARGPARSE_ARG_VALUE_U16 RTE_SHIFT_VAL64(3, 2) > +/** The argument's value is uint32 type. */ > +#define RTE_ARGPARSE_ARG_VALUE_U32 RTE_SHIFT_VAL64(4, 2) > +/** The argument's value is uint64 type. */ > +#define RTE_ARGPARSE_ARG_VALUE_U64 RTE_SHIFT_VAL64(5, 2) > +/** Max value type. */ > +#define RTE_ARGPARSE_ARG_VALUE_MAX RTE_SHIFT_VAL64(6, 2) it was good to get rid of the enum but will the above macros expand to signed or unsigned integer given the type of field could we make sure they expand unsigned? > /** > - * Flag definition (in bitmask form) for an argument. > + * Flag for that argument support occur multiple times. > + * This flag can be set only when the argument is optional. > + * When this flag is set, the callback type must be used for parsing. > */ > -enum rte_argparse_flag { > - /* > - * Bits 0-1: represent the argument whether has value. > - */ > - > - /** The argument has no value. */ > - RTE_ARGPARSE_ARG_NO_VALUE = RTE_SHIFT_VAL64(1, 0), > - /** The argument must have a value. */ > - RTE_ARGPARSE_ARG_REQUIRED_VALUE = RTE_SHIFT_VAL64(2, 0), > - /** The argument has optional value. */ > - RTE_ARGPARSE_ARG_OPTIONAL_VALUE = RTE_SHIFT_VAL64(3, 0), > - > - > - /* > - * Bits 2-9: represent the value type which used when autosave > - */ > - > - /** The argument's value is int type. */ > - RTE_ARGPARSE_ARG_VALUE_INT = RTE_SHIFT_VAL64(1, 2), > - /** The argument's value is uint8 type. */ > - RTE_ARGPARSE_ARG_VALUE_U8 = RTE_SHIFT_VAL64(2, 2), > - /** The argument's value is uint16 type. */ > - RTE_ARGPARSE_ARG_VALUE_U16 = RTE_SHIFT_VAL64(3, 2), > - /** The argument's value is uint32 type. */ > - RTE_ARGPARSE_ARG_VALUE_U32 = RTE_SHIFT_VAL64(4, 2), > - /** The argument's value is uint64 type. */ > - RTE_ARGPARSE_ARG_VALUE_U64 = RTE_SHIFT_VAL64(5, 2), > - /** Max value type. */ > - RTE_ARGPARSE_ARG_VALUE_MAX = RTE_SHIFT_VAL64(6, 2), > - > - > - /** > - * Bit 10: flag for that argument support occur multiple times. > - * This flag can be set only when the argument is optional. > - * When this flag is set, the callback type must be used for parsing. > - */ > - RTE_ARGPARSE_ARG_SUPPORT_MULTI = RTE_BIT64(10), > - > - /** > - * Bits 48-63: reserved for this library implementation usage. > - */ > - RTE_ARGPARSE_ARG_RESERVED_FIELD = RTE_GENMASK64(63, 48), > -}; > +#define RTE_ARGPARSE_ARG_SUPPORT_MULTI RTE_BIT64(10) > +/** Reserved for this library implementation usage. */ > +#define RTE_ARGPARSE_ARG_RESERVED_FIELD RTE_GENMASK64(63, 48) > +/**@}*/ > > /** > * A structure used to hold argument's configuration. > @@ -126,7 +114,7 @@ struct rte_argparse_arg { > */ > void *val_set; > > - /** @see rte_argparse_flag */ > + /** Flag definition (RTE_ARGPARSE_ARG_*) for the argument. */ > uint64_t flags; > }; > > -- > 2.17.1