AFI
Advanced Forwarding Interface
 All Classes Functions Variables Typedefs Enumerations Enumerator Friends Groups
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Friends | List of all members
AftNode Class Reference

Base class for all Aft nodes. More...

#include <AftNode.h>

Inheritance diagram for AftNode:
AftContinue AftCounter AftDecap AftDeleteNode AftDiscard AftEncap AftFilter AftFilterTemplate AftIndexedList AftIndirect AftList AftLoadBalance AftLookup AftMatch AftPlaceholder AftPolicer AftPort AftReceive AftSandboxLink AftSwitch AftTable AftTree AftVariable AftWrite

Public Member Functions

 AftNode (const AftNode &node)
 Copy constructor for a basic node. More...
 
 AftNode (const AftNodeToken newToken=AFT_NODE_TOKEN_NONE, const AftNodeToken newNext=AFT_NODE_TOKEN_NONE, const std::string newName="")
 Construct an entry for a basic node. More...
 
 operator const AftNodeToken () const
 
const AftNodeToken nodeToken () const
 
const std::string nodeName () const
 
const AftTypeIndex nodeTypeIndex () const
 
void setNodeNext (AftNodeToken newNext)
 Set the (optional) next node. More...
 
const AftNodeToken nodeNext () const
 
void setNodeParameters (const AftParameters::Ptr &newParams)
 Set the optional parameters of the node. More...
 
const AftParameters::Ptr nodeParameters () const
 
template<class T >
std::shared_ptr< T > nodeParameter (const std::string &name)
 Convenience parameter access template. Use this to access node parameters. More...
 
void setNodeParameter (const std::string &name, const AftDataPtr &data)
 Convenience parameter setter. Use this to set node parameters. More...
 
virtual const std::string nodeType () const
 
virtual const bool nodeIsContainer () const
 @ returns true if node can take entries
 
virtual const bool nodeIsDelete () const
 @ returns true if node is a delete
 
virtual const bool nodeIsValid (const AftValidatorPtr &validator, std::ostream &os)
 @ returns true if node is valid
 
virtual void nextNodes (AftTokenVector &nextTokens)
 
virtual std::ostream & description (std::ostream &os) const
 Append a description of the node to an output stream. More...
 

Static Public Member Functions

template<class T >
static std::shared_ptr< T > downcast (const AftNodePtr &node)
 Convenience downcast template. Use this instead of manual casting if required. More...
 

Protected Member Functions

void setNodeName (std::string newName)
 Set the name of the node. More...
 
void setNodeToken (AftNodeToken newToken)
 Set the token value of the node. More...
 
void setNodeTypeIndex (AftTypeIndex newTypeIndex)
 Set the sandbox node type index. More...
 

Protected Attributes

friend AftInsert
 AftInsert accesses the setNodeName and setNodeToken methods.
 
friend AftSandbox
 AftSandbox accesses the setNodeName and setNodeToken methods.
 
friend AfiNodeRpc
 AfiNodeRpc accesses the setNodeName and setNodeToken methods.
 
AftNodeToken _nodeToken
 Unique token value for node.
 
AftNodeToken _nodeNext
 Optional value of next node.
 
std::string _nodeName
 Optional name of node.
 
AftParameters::Ptr _nodeParams
 Optional node parameters.
 
AftTypeIndex _nodeTypeIndex
 Scalar index type for node.
 

Friends

std::ostream & operator<< (std::ostream &os, const AftNode &node)
 Define << class operator to append description to an output stream. More...
 

Detailed Description

Base class for all Aft nodes.

This is the base class for all Aft nodes and forms the basic footprint of fundamental class methods that all nodes must support. We never create AftNode objects directly. The class is instantiated by inheriting from it in specific node classes and constructed via the derived classes own constructor.

Constructor & Destructor Documentation

AftNode::AftNode ( const AftNode node)
inline

Copy constructor for a basic node.

Parameters
[in]nodeNode to copy
AftNode::AftNode ( const AftNodeToken  newToken = AFT_NODE_TOKEN_NONE,
const AftNodeToken  newNext = AFT_NODE_TOKEN_NONE,
const std::string  newName = "" 
)
inline

Construct an entry for a basic node.

Parameters
[in]newTokenUnique token for node
[in]newNextOptional Next token for node
[in]newNameOptional searchable name for node

Member Function Documentation

virtual std::ostream& AftNode::description ( std::ostream &  os) const
inlinevirtual

Append a description of the node to an output stream.

Parameters
[in]osReference to output stream to append description to
Returns
Reference to output stream with text description of node appended

Reimplemented in AftPlaceholder, AftSandboxLink, AftVariable, AftWrite, AftEncap, AftDecap, AftIndirect, AftLookup, AftTable, AftTree, AftContinue, AftReceive, AftDiscard, AftPolicer, AftLoadBalance, AftIndexedList, AftList, and AftPort.

template<class T >
static std::shared_ptr<T> AftNode::downcast ( const AftNodePtr node)
inlinestatic

Convenience downcast template. Use this instead of manual casting if required.

Parameters
[in]nodeNode to downcast
virtual void AftNode::nextNodes ( AftTokenVector nextTokens)
inlinevirtual
Returns
Appends valid next tokens to token vector

Reimplemented in AftEncap, AftTable, AftTree, AftSwitch, AftList, and AftFilter.

const std::string AftNode::nodeName ( ) const
inline
Returns
Searchable name for node
const AftNodeToken AftNode::nodeNext ( ) const
inline
Returns
Unique token for node
template<class T >
std::shared_ptr<T> AftNode::nodeParameter ( const std::string &  name)
inline

Convenience parameter access template. Use this to access node parameters.

Parameters
[in]nameParameter name to look for
Returns
Pointer to AftData if parameter is found
const AftParameters::Ptr AftNode::nodeParameters ( ) const
inline
Returns
Optional parameters for node
const AftNodeToken AftNode::nodeToken ( ) const
inline
Returns
Unique token for node
virtual const std::string AftNode::nodeType ( ) const
inlinevirtual
const AftTypeIndex AftNode::nodeTypeIndex ( ) const
inline
Returns
Type index for node
AftNode::operator const AftNodeToken ( ) const
inline
Returns
Unique token for node
void AftNode::setNodeName ( std::string  newName)
inlineprotected

Set the name of the node.

Parameters
[in]newNameName of the node
void AftNode::setNodeNext ( AftNodeToken  newNext)
inline

Set the (optional) next node.

Parameters
[in]newNextNodeToken for the next node
void AftNode::setNodeParameter ( const std::string &  name,
const AftDataPtr data 
)
inline

Convenience parameter setter. Use this to set node parameters.

Parameters
[in]nameParameter name to set
[in]dataReference to data to associate with name
void AftNode::setNodeParameters ( const AftParameters::Ptr newParams)
inline

Set the optional parameters of the node.

Parameters
[in]newParamsPointer to parameters for node
void AftNode::setNodeToken ( AftNodeToken  newToken)
inlineprotected

Set the token value of the node.

Parameters
[in]newTokenValue of the token
void AftNode::setNodeTypeIndex ( AftTypeIndex  newTypeIndex)
inlineprotected

Set the sandbox node type index.

Parameters
[in]newTypeIndexNode type index

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const AftNode node 
)
friend

Define << class operator to append description to an output stream.

Parameters
[in]osReference to output stream to append to
[in]nodeReference to node to append description of to stream

The documentation for this class was generated from the following file: