Skip to content

Commit

Permalink
use separate function to print zeroes, use arrays for printing instea…
Browse files Browse the repository at this point in the history
…d of vectorss #569
  • Loading branch information
CblPOK-git committed Mar 18, 2024
1 parent 66cb8d6 commit ffcd335
Showing 1 changed file with 27 additions and 16 deletions.
43 changes: 27 additions & 16 deletions bin/assigner/src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,13 +166,25 @@ void print_size_t(
) {
using TTypeBase = nil::marshalling::field_type<Endianness>;
auto integer_container = nil::marshalling::types::integral<TTypeBase, std::size_t>(input);
std::vector<std::uint8_t> char_vector;
char_vector.resize(integer_container.length(), 0x00);
auto write_iter = char_vector.begin();
nil::marshalling::status_type status = integer_container.write(write_iter, char_vector.size());
out.write(reinterpret_cast<char*>(char_vector.data()), char_vector.size());
std::array<std::uint8_t, integer_container.length()> char_array{};
auto write_iter = char_array.begin();
ASSERT(integer_container.write(write_iter, char_array.size()) == nil::marshalling::status_type::success);
out.write(reinterpret_cast<char*>(char_array.data()), char_array.size());
}

template<typename Endianness, typename ArithmetizationType>
inline void print_zero_field(
std::ostream &out
) {
using TTypeBase = nil::marshalling::field_type<Endianness>;
using AssignmentTableType = assignment_proxy<ArithmetizationType>;
using field_element = nil::crypto3::marshalling::types::field_element<
TTypeBase, typename AssignmentTableType::field_type::value_type>;
std::array<std::uint8_t, field_element().length()> array{};
out.write(reinterpret_cast<char*>(array.data()), array.size());
}


template<typename Endianness, typename ArithmetizationType>
void print_field(
const typename assignment_proxy<ArithmetizationType>::field_type::value_type &input,
Expand All @@ -181,11 +193,10 @@ void print_field(
using TTypeBase = nil::marshalling::field_type<Endianness>;
using AssignmentTableType = assignment_proxy<ArithmetizationType>;
auto field_container = nil::crypto3::marshalling::types::field_element<TTypeBase, typename AssignmentTableType::field_type::value_type>(input);
std::vector<std::uint8_t> char_vector;
char_vector.resize(field_container.length(), 0x00);
auto write_iter = char_vector.begin();
nil::marshalling::status_type status = field_container.write(write_iter, char_vector.size());
out.write(reinterpret_cast<char*>(char_vector.data()), char_vector.size());
std::array<std::uint8_t, field_container.length()> char_array{};
auto write_iter = char_array.begin();
ASSERT(field_container.write(write_iter, char_array.size()) == nil::marshalling::status_type::success);
out.write(reinterpret_cast<char*>(char_array.data()), char_array.size());
}

template<typename Endianness, typename ArithmetizationType, typename ContainerType>
Expand All @@ -198,7 +209,7 @@ void print_vector_value(
if (i < table_col.size()) {
print_field<Endianness, ArithmetizationType>(table_col[i], out);
} else {
print_field<Endianness, ArithmetizationType>(0, out);
print_zero_field<Endianness, ArithmetizationType>(out);
}
}
}
Expand Down Expand Up @@ -315,7 +326,7 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
}
ASSERT(offset < padded_rows_amount);
while(offset < padded_rows_amount) {
print_field<Endianness, ArithmetizationType>(0, out);
print_zero_field<Endianness, ArithmetizationType>(out);
offset++;
}
witness_idx += padded_rows_amount;
Expand Down Expand Up @@ -345,7 +356,7 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
}
ASSERT(offset < padded_rows_amount);
while(offset < padded_rows_amount) {
print_field<Endianness, ArithmetizationType>(0, out);
print_zero_field<Endianness, ArithmetizationType>(out);
offset++;
}

Expand All @@ -368,15 +379,15 @@ void print_assignment_table(const assignment_proxy<ArithmetizationType> &table_p
if (selector_rows.find(j) != selector_rows.end()) {
print_field<Endianness, ArithmetizationType>(table_proxy.selector(i, j), out);
} else {
print_field<Endianness, ArithmetizationType>(0, out);
print_zero_field<Endianness, ArithmetizationType>(out);
}
offset++;
}
}
ASSERT(offset < padded_rows_amount);
while(offset < padded_rows_amount) {
print_field<Endianness, ArithmetizationType>(0, out);
offset++;
print_zero_field<Endianness, ArithmetizationType>(out);
offset++;
}

selector_idx += padded_rows_amount;
Expand Down

0 comments on commit ffcd335

Please sign in to comment.