}
std::vector<SelfOther>
-SelfOther::indexes (Builder builder, int limit)
+SelfOther::indexes (Builder builder, const std::vector<TupleField> &fields)
{
std::vector<SelfOther> vec;
- for (int i = 0; i < limit; i++)
- {
- vec.emplace_back (SelfOther::index (builder, i));
- }
+ for (size_t i = 0; i < fields.size (); i++)
+ vec.emplace_back (SelfOther::index (builder, i));
return vec;
}
{
std::vector<SelfOther> vec;
- for (auto &field : fields)
+ for (const auto &field : fields)
vec.emplace_back (
SelfOther::field (builder, field.get_field_name ().as_string ()));
/* Create a <self.i> and an <other.i> expression */
static SelfOther index (Builder builder, int idx);
- static std::vector<SelfOther> indexes (Builder builder, int limit);
+ static std::vector<SelfOther> indexes (Builder builder,
+ const std::vector<TupleField> &fields);
/* Create a <self.field> and an <other.field> expression */
static SelfOther field (Builder builder, const std::string &field_name);
DerivePartialEq::visit_tuple (TupleStruct &item)
{
auto type_name = item.get_struct_name ().as_string ();
- auto fields = std::vector<SelfOther> ();
-
- for (size_t idx = 0; idx < item.get_fields ().size (); idx++)
- fields.emplace_back (SelfOther::index (builder, idx));
+ auto fields = SelfOther::indexes (builder, item.get_fields ());
auto fn = eq_fn (build_eq_expression (std::move (fields)), type_name);
DerivePartialEq::visit_struct (StructStruct &item)
{
auto type_name = item.get_struct_name ().as_string ();
- auto fields = std::vector<SelfOther> ();
-
- for (auto &field : item.get_fields ())
- fields.emplace_back (
- SelfOther::field (builder, field.get_field_name ().as_string ()));
+ auto fields = SelfOther::fields (builder, item.get_fields ());
auto fn = eq_fn (build_eq_expression (std::move (fields)), type_name);