class INode;
}
+//Forward declare operations as we don't need anything but references
+namespace ops
+{
+ class ConcatOp;
+ class Conv2DOp;
+ class DepthwiseConv2DOp;
+ class SoftmaxOp;
+ class PoolOp;
+ class FullyConnectedOp;
+ class CappedReluOp;
+ class BiasAddOp;
+ class VariableOp;
+ class ReluOp;
+}
+
class Visitor {
public:
- // Operation-specific methods like:
- // virtual void visit(INode* node, OpDescriptionSubclass& op) = 0;
+ virtual void visit(ADT::INode *node, ops::ConcatOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::Conv2DOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::DepthwiseConv2DOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::SoftmaxOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::PoolOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::FullyConnectedOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::CappedReluOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::BiasAddOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::VariableOp &op) = 0;
+ virtual void visit(ADT::INode *node, ops::ReluOp &op) = 0;
- virtual void visit(ADT::INode *node) = 0;
virtual ~Visitor() = default;
};