[P4-dev] typedef, P4-16 & p4c compiler

Andy Fingerhut andy.fingerhut at gmail.com
Fri Jun 9 06:03:56 EDT 2017


Then I would like to echo Mihai's request that you post some sample code
that helps explain what you are trying to achieve, because it isn't clear
to me.

Do you perhaps want to have some headers in your program defined using
'header <name>', and another collection of headers defined using '<foo>
<name>' where <foo> is a different string than "header"?

If so, why?

Are you hoping to prevent assignments between variables of type 'header
bar' and '<foo> bar2'?  I am pretty sure the P4-16 spec already disallows
assignments between headers of different types.

If you are hoping for some kind of run-time type identification behavior in
P4, I am not aware of anything in the language that implements such a
feature.

Andy

On Fri, Jun 9, 2017 at 2:54 AM, <hemant at mnkcg.com> wrote:

> I do know the header is a keyword in P4-16, but so are int and long in C.
> The C preprocessor totally allows, for example, a “typedef int distance;”.
>   The issue is because the header may be like a struct in C.   My use case
> is typedef a new type from a header and then use the new type as several
> headers with different set of bits.
>
>
>
> Hemant
>
>
>
> *From:* Andy Fingerhut [mailto:andy.fingerhut at gmail.com]
> *Sent:* Thursday, June 08, 2017 8:52 PM
> *To:* hemant at mnkcg.com
> *Cc:* Mihai Budiu <mbudiu at vmware.com>; p4-dev <p4-dev at lists.p4.org>
> *Subject:* Re: [P4-dev] typedef, P4-16 & p4c compiler
>
>
>
> I believe the string "header" is a keyword in P4-16, and probably cannot
> be the name of a type.
>
>
>
> You can define a header type with name "ipv4_t", and then typedef another
> type name to be the same as that one like so:
>
>
>
> header ipv4_t {
>
>     // your fields here
>
> }
>
> typedef ipv4_t another_type_name_t;
>
>
>
> then use 'another_type_name_t' any place that you would otherwise use
> 'ipv4_t'.
>
>
>
> Andy
>
>
>
> On Thu, Jun 8, 2017 at 1:42 PM, <hemant at mnkcg.com> wrote:
>
> typedef header foo_t;
>
>
>
> *From:* Mihai Budiu [mailto:mbudiu at vmware.com]
> *Sent:* Thursday, June 08, 2017 4:40 PM
> *To:* hemant at mnkcg.com; 'p4-dev' <p4-dev at lists.p4.org>
> *Subject:* RE: typedef, P4-16 & p4c compiler
>
>
>
> Can you post a code fragment (even if it does not work) showing what you
> want to achieve?
>
>
>
> Mihai
>
>
>
> *From: *hemant at mnkcg.com
> *Sent: *Thursday, June 8, 2017 1:19 PM
> *To: *'p4-dev' <p4-dev at lists.p4.org>
> *Cc: *Mihai Budiu <mbudiu at vmware.com>
> *Subject: *typedef, P4-16 & p4c compiler
>
>
>
> If C preprocessing is supported in P4, including P4-16, is the P4-16
> “header” possible to be typedefed?  I am not sure what the type is because
> the header is in the P4 library.  If a C preprocessor allows any C type
> such as “int” to be typdefed, why not the P4-16 header?
>
>
>
> Thanks,
>
>
>
> Hemant
>
>
> _______________________________________________
> P4-dev mailing list
> P4-dev at lists.p4.org
> http://lists.p4.org/mailman/listinfo/p4-dev_lists.p4.org
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.p4.org/pipermail/p4-dev_lists.p4.org/attachments/20170609/83ef5105/attachment-0002.html>


More information about the P4-dev mailing list