17#ifndef BACKENDS_UBPF_UBPFTYPE_H_
18#define BACKENDS_UBPF_UBPFTYPE_H_
20#include "backends/ebpf/ebpfType.h"
21#include "lib/sourceCodeBuilder.h"
29 static void createFactory(
const P4::TypeMap *typeMap) {
30 EBPF::EBPFTypeFactory::instance =
new UBPFTypeFactory(typeMap);
33 static EBPFTypeFactory *getInstance() {
return EBPF::EBPFTypeFactory::instance; }
104 class UBPFListElement :
public ICastable {
109 UBPFListElement(EBPFType *type,
const cstring name) : type(type), name(name) {}
110 virtual ~UBPFListElement() {}
112 DECLARE_TYPEINFO(UBPFListElement);
115 class Padding :
public UBPFListElement {
117 unsigned widthInBytes;
119 Padding(
const cstring name,
unsigned widthInBytes)
120 : UBPFListElement(
nullptr, name), widthInBytes(widthInBytes) {}
122 DECLARE_TYPEINFO(Padding, UBPFListElement);
128 std::vector<UBPFListElement *> elements;
132 explicit UBPFListType(
const IR::Type_List *lst);
Definition ebpf/codeGen.h:33
Definition ebpfType.h:183
Definition ebpfType.h:197
Definition ebpfType.h:106
Also represents headers and unions.
Definition ebpfType.h:153
Base class for EBPF types.
Definition ebpfType.h:29
Definition ubpfType.h:103
unsigned implementationWidthInBits() const override
Definition ubpfType.h:138
unsigned widthInBits() const override
P4 width.
Definition ubpfType.h:137