#include "ModuleSwitch.h"
#include <iostream>

namespace mdd{
    ModuleSwitch::ModuleSwitch(){
        json default_val;
        default_val["value"] = 42;
        addInput("Switch", default_val);
        addInput("Value", default_val);
        addInput("Default", default_val);
        addOutput("Value", default_val);
        setType("Switch");
    }
    bool ModuleSwitch::update(){
        int index = getInput(0)->getValue()["value"].get<int>();
        if(index == 0){
            index = 1;
        }

        if(index > getInputs().size() - 1){
            index = getInputs().size() - 1;
        }

        json ret = getInput(index)->getValue()["value"];
        if (ret.dump() != getOutput(0)->getValue()["value"].dump()) {
            getOutput(0)->getValueInternal()["value"] = ret ;
            return true;
        }
        else{
            return false;
        }
    }
}