/* XmlDisplayer.hpp */

#ifndef XmlDisplayer_hpp
#define XmlDisplayer_hpp

#include <vector>

#include "Visitor.hpp"

class Rule;

class XmlDisplayer : public Visitor
{
public:
  XmlDisplayer() : terminal(true) {}

  void* visit(const Rule_Clock* rule);
  void* visit(const Rule_Hours* rule);
  void* visit(const Rule_Minutes* rule);
  void* visit(const Rule_Seconds* rule);
  void* visit(const Rule_Separator* rule);

  void* visit(const Terminal_StringValue* value);
  void* visit(const Terminal_NumericValue* value);

private:
  bool terminal;

  void* visitRules(const std::vector<const Rule*>& rules);
};

#endif

/* eof */