#ifndef OPTIMIZATION_STAGE_H
#define OPTIMIZATION_STAGE_H

#ifndef PROTOCOL_STAGE_FRAME_H
#include "Protocol_stage_frame.h"
#endif

#ifndef MONITOR_H
#include "Monitor.h"
#endif

#include "Create.h"

namespace MM
{

class Optimization_stage : public Protocol_stage_frame
{
public:        
    explicit                Optimization_stage (Protocol &protocol, Text const & init);

    //Text                    title () const {return "Optimization";}

//    virtual Text            option     (Text const & key) const
    virtual Text            option     (Text const & ) const
    {
        return "";//fix
    }
    void                    execute (){}
    void                    stop    (){}

//    void                    at_every_iteration (Command *adoptee){}//fix
    void                    at_every_iteration (Command *){}//fix

//    virtual void            set_option (Text const & key, Text const & value)
    virtual void            set_option (Text const & , Text const & )
    {
        /*if (key=="time")
            time_ = value.to_double();
        else
            FLAW (Text("'") + key + "' - unknown key.");//*/
    }

//    virtual void            get_option (int i, Text & key, Text & value) const
    virtual void            get_option (int , Text & , Text & ) const
    {
/*        if (i != 0)
            FLAW (Text(i) + " is out of range. Options count is " 
                          + option_count() + "."); //*/
    }
    
    virtual int             option_count () const {return 0;}

//    Monitor &               monitor (int i)         {return nil <Monitor>();}
//    Monitor const &         monitor (int i)  const  {return nil <Monitor>();}
    Monitor &               monitor (int )         {return nil <Monitor>();}
    Monitor const &         monitor (int )  const  {return nil <Monitor>();}
    int                     monitor_count () const  {return 0;}

    void                    update (){;}
    void                    edit () {;}
};

}//MM

#endif //OPTIMIZATION_STAGE_H
