![]() |
P4C
The P4 Compiler
|
Classes | |
struct | Action |
struct | Base |
struct | Const |
struct | HashDist |
struct | Named |
struct | Phv |
struct | RandomGen |
struct | RawAction |
Public Member Functions | |
Operand (const ::Phv::Ref &r) | |
Operand (const Operand &a) | |
Operand (gress_t gress, int stage, const value_t &v) | |
Operand (Operand &&a) | |
Operand (Table *tbl, const Table::Actions::Action *act, const value_t &v) | |
unsigned | bitoffset (int group) |
int | bits (int group, int dest_size=-1) |
bool | check () |
void | dbprint (std::ostream &out) const |
Base * | operator-> () |
Operand & | operator= (const Operand &a) |
Operand & | operator= (Operand &&a) |
bool | operator== (Operand &a) |
int | phvGroup () |
bool | phvRead (std::function< void(const ::Phv::Slice &sl)> fn) |
template<class T> | |
T * | to () |
bool | valid () const |
![]() | |
void | print () const |
Public Attributes | |
struct VLIW::Operand::Base * | op |
Static Public Attributes | |
static const int | ACTIONBUS_OPERAND = 0x20 |
|
inlinevirtual |
Implements P4::IHasDbPrint.
|
static |
A source operand to a VLIW instruction – this can be a variety of things, so we have a pointer to an abstract base class and a number of derived concrete classes for the different kinds of operands. When we parse the operand, the type may be determined, or if it is just a name, we will have to wait to a later pass to resolve what the name refers to. At that point, the ‘Named’ object created in parsing will be replaced with the actual operand type