2  *****************************************************************************
 
    3  * @author     This file is part of libsnark, developed by SCIPR Lab
 
    4  *             and contributors (see AUTHORS).
 
    5  * @copyright  MIT license (see LICENSE file)
 
    6  *****************************************************************************/
 
    7 #ifndef R1CS_PCD_PARAMS_TCC_
 
    8 #define R1CS_PCD_PARAMS_TCC_
 
   13 template<typename FieldT>
 
   14 r1cs_primary_input<FieldT> r1cs_pcd_compliance_predicate_primary_input<
 
   15     FieldT>::as_r1cs_primary_input() const
 
   17     return outgoing_message->as_r1cs_variable_assignment();
 
   20 template<typename FieldT>
 
   21 r1cs_auxiliary_input<FieldT> r1cs_pcd_compliance_predicate_auxiliary_input<
 
   22     FieldT>::as_r1cs_auxiliary_input(const std::vector<size_t> &
 
   23                                          incoming_message_payload_lengths) const
 
   25     const size_t arity = incoming_messages.size();
 
   27     r1cs_auxiliary_input<FieldT> result;
 
   28     result.emplace_back(FieldT(arity));
 
   30     const size_t max_arity = incoming_message_payload_lengths.size();
 
   31     assert(arity <= max_arity);
 
   33     for (size_t i = 0; i < arity; ++i) {
 
   34         const r1cs_variable_assignment<FieldT> msg_as_r1cs_va =
 
   35             incoming_messages[i]->as_r1cs_variable_assignment();
 
   37             msg_as_r1cs_va.size() == (1 + incoming_message_payload_lengths[i]));
 
   39             result.end(), msg_as_r1cs_va.begin(), msg_as_r1cs_va.end());
 
   42     /* pad with dummy messages of appropriate size */
 
   43     for (size_t i = arity; i < max_arity; ++i) {
 
   45             result.size() + (1 + incoming_message_payload_lengths[i]),
 
   49     const r1cs_variable_assignment<FieldT> local_data_as_r1cs_va =
 
   50         local_data->as_r1cs_variable_assignment();
 
   53         local_data_as_r1cs_va.begin(),
 
   54         local_data_as_r1cs_va.end());
 
   55     result.insert(result.end(), witness.begin(), witness.end());
 
   60 } // namespace libsnark
 
   62 #endif // R1CS_PCD_PARAMS_TCC_