#ifndef _CLI_OPTION_H_
#define _CLI_OPTION_H_

#include <ast/Ast.h>
#include <ast/statements/SingleStatement.h>
#include <ast/statements/ContainerStatement.h>
#include <ast/statements/ContainerFileStatement.h>
#include <ast/statements/FileStatement.h>

namespace cli {

class Option {
public:
	virtual ~Option ( ) noexcept {
	}

	virtual void eval ( SingleStatement & statement ) const = 0;
	virtual void eval ( ContainerStatement & statement ) const = 0;
	virtual void eval ( ContainerFileStatement & statement ) const = 0;
	virtual void eval ( FileStatement & statement ) const = 0;
};

} /* namespace cli */

#endif /* _CLI_OPTION_H_ */