#include "ZGo.h"



//---- ZGoRealFreezer

ZGoRealFreezer::ZGoRealFreezer(ZGo *zgo, ZGoPARAMS *input, ZGoPARAMS *output)
{
  this->zgo = zgo;
  this->input = input->setInput(this);
  this->output = output->setOutput(this);

  this->fnType = new ZGoNAME(zgo, "ZGoSine");

  //  Parameters

  in = (ZGoREAL *)input->get("in");
  flag = (ZGoBOOL *)input->get("flag");

  init_in = (ZGoREAL *)input->get("init_in");

  out = (ZGoREAL *)output->get("out");
}

void ZGoRealFreezer::process()
{
  static float value = 0;

  static init = false;
  if(!init)
  {
    init = true;
    if(init_in)
    {
      init_in->process();
      value = init_in->value;
    }
  }

  flag->process();

  if(flag->value)
  {
    in->process();
    value = in->value;
  }

  out->value = value;
}
