#ifndef PRM_CLI_HH
#define PRM_CLI_HH

#include <string>
#include <vector>

#include "ParticleRotor.hh"
#include "Nilsson.hh"
#include "LevelScheme.hh"

namespace PRM {
  class CLI {
  public:
    std::ios_base::fmtflags fFormat;
    std::map<std::string, std::vector<std::string> > fAnswers;

    double fEps2;
    double fGamma;
    
    Nilsson *poscalc;
    Nilsson *negcalc;

    Pairing *paircalc;

    ParticleRotor *partrotorpos;
    ParticleRotor *partrotorneg;

    LevelScheme *levelscheme;    

    CLI();
    void RunCalculation();
    void RunCalculation(std::string filename);
    void Save(std::string filename);
    void Prompt();
    void EpsPlot(double eplo, double ephi, double incr);
    void GamPlot(double gamlo, double gamhi, double incr);
    void HelpMessage();

    double GetDoubleAnswer(std::string question, double def);
    std::vector<double> GetDoublesAnswer(std::string question, std::vector<double> defs, int minlen=1);  
    int GetIntegerAnswer(std::string question, int def);
    std::vector<int> GetIntegersAnswer(std::string question, std::vector<int> defs, int minlen=1);

    std::string GetAnswer();
  };
}

#endif
