Skip to content
Snippets Groups Projects
enumparser.hh 940 B
Newer Older
podlesny's avatar
.  
podlesny committed
#ifndef SRC_DATA_STRUCTURES_ENUMPARSER_HH
#define SRC_DATA_STRUCTURES_ENUMPARSER_HH
Elias Pipping's avatar
Elias Pipping committed

// Copyright Carsten Graeser 2012

#include <type_traits>
Elias Pipping's avatar
Elias Pipping committed

#include <dune/solvers/solvers/solver.hh>

#include "enums.hh"

template <class Enum> struct StringToEnum : public Dune::NotImplemented {};

template <> struct StringToEnum<Config::FrictionModel> {
  static Config::FrictionModel convert(std::string const &s);
};

template <> struct StringToEnum<Config::stateModel> {
  static Config::stateModel convert(std::string const &s);
};

template <> struct StringToEnum<Config::scheme> {
  static Config::scheme convert(std::string const &s);
};

template <> struct StringToEnum<Config::PatchType> {
  static Config::PatchType convert(std::string const &s);
};

Elias Pipping's avatar
Elias Pipping committed
template <class Enum>
typename std::enable_if<
    !std::is_base_of<Dune::NotImplemented, StringToEnum<Enum>>::value,
Elias Pipping's avatar
Elias Pipping committed
    std::istream &>::type
operator>>(std::istream &lhs, Enum &e);
#endif