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

hemant at mnkcg.com hemant at mnkcg.com
Fri Jun 9 05:54:22 EDT 2017


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 <mailto:hemant at mnkcg.com> > wrote:

typedef header foo_t;

 

From: Mihai Budiu [mailto:mbudiu at vmware.com <mailto:mbudiu at vmware.com> ] 
Sent: Thursday, June 08, 2017 4:40 PM
To: hemant at mnkcg.com <mailto:hemant at mnkcg.com> ; 'p4-dev' <p4-dev at lists.p4.org <mailto: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 <mailto:hemant at mnkcg.com> 
Sent: Thursday, June 8, 2017 1:19 PM
To: 'p4-dev' <mailto:p4-dev at lists.p4.org> 
Cc: Mihai Budiu <mailto: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 <mailto: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/36604eaf/attachment-0002.html>


More information about the P4-dev mailing list