/* * PrivateOutput.cpp * */ #include "PrivateOutput.h" #include "Processor.h" template PrivateOutput::PrivateOutput(SubProcessor& proc) : proc(proc), MC(proc.MC.get_alphai()) { MC.init_open(proc.P); MC.set_prep(proc.DataF); } template PrivateOutput::~PrivateOutput() { MC.Check(proc.P); } template void PrivateOutput::prepare_sending(const T& source, int player) { assert (player < proc.P.num_players()); open_type mask; T res; proc.DataF.get_input(res, mask, player); res += source; if (player == proc.P.my_num()) masks.push_back(mask); MC.prepare_open(res); } template void PrivateOutput::exchange() { MC.exchange(proc.P); } template typename T::clear PrivateOutput::finalize(int player) { auto res = MC.finalize_open(); if (player == proc.P.my_num()) { res -= masks.front(); masks.pop_front(); } return res; }