<?php

namespace KupShop\FeedGeneratorBundle\Configuration;

use KupShop\FeedGeneratorBundle\Configuration\Nodes\AttributeNode;
use KupShop\FeedGeneratorBundle\Configuration\Nodes\ConditionNode;
use KupShop\FeedGeneratorBundle\Configuration\Nodes\CycleNode;
use KupShop\FeedGeneratorBundle\Configuration\Nodes\DescriptionNode;
use KupShop\FeedGeneratorBundle\Configuration\Nodes\ElementNode;
use KupShop\FeedGeneratorBundle\Configuration\Nodes\ExpressionNode;
use KupShop\FeedGeneratorBundle\Configuration\Nodes\MultilineNode;
use KupShop\FeedGeneratorBundle\Configuration\Nodes\ValueNode;

interface IConfigurationVisitor
{
    public function visitAttribute(AttributeNode $node, &$handle);

    public function visitCondition(ConditionNode $node, &$handle);

    public function visitConfiguration(Configuration $configuration, &$handle = null);

    public function visitCycle(CycleNode $node, &$handle);

    public function visitElement(ElementNode $node, &$handle);

    public function visitExpression(ExpressionNode $node, &$handle);

    public function visitMultiline(MultilineNode $node, &$handle);

    public function visitValue(ValueNode $node, &$handle);

    public function visitDescription(DescriptionNode $node, &$handle);
}
