/* Clock2Xml.hpp */

#ifndef Clock2Xml_hpp
#define Clock2Xml_hpp

#include <vector>

#include "Visitor.hpp"

class Rule;

class Clock2Xml : public Visitor
{
public:
  Clock2Xml() : 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 */