#ifndef I_NAMED_DISCRETE_DATA_HPP
#define I_NAMED_DISCRETE_DATA_HPP

#include <string>

class INamedDiscreteData
{
 public:
  enum class Type
  {
    item_array,
    item_value,
    discrete_function
  };

  virtual Type type() const = 0;

  virtual const std::string& name() const = 0;

  INamedDiscreteData(const INamedDiscreteData&) = default;
  INamedDiscreteData(INamedDiscreteData&&)      = default;

  INamedDiscreteData() = default;

  virtual ~INamedDiscreteData() = default;
};

#endif   // I_NAMED_DISCRETE_DATA_HPP