return false;
}
- FillRequiredTypes();
+ SubstitutionBits bits;
+ FillRequiredTypes(&bits);
+ bits.FillVector(&required_types_);
return true;
}
return false;
}
- FillRequiredTypes();
+ SubstitutionBits bits;
+ FillRequiredTypes(&bits);
+ bits.FillVector(&required_types_);
return true;
}
return result;
}
-void SubstitutionList::FillRequiredTypes() {
- bool required_type_bits[SUBSTITUTION_NUM_TYPES];
- memset(&required_type_bits, 0, SUBSTITUTION_NUM_TYPES);
+void SubstitutionList::FillRequiredTypes(SubstitutionBits* bits) const {
for (size_t i = 0; i < list_.size(); i++)
- list_[i].FillRequiredTypes(required_type_bits);
-
- for (size_t i = SUBSTITUTION_FIRST_PATTERN; i < SUBSTITUTION_NUM_TYPES; i++) {
- if (required_type_bits[i])
- required_types_.push_back(static_cast<SubstitutionType>(i));
- }
+ list_[i].FillRequiredTypes(bits);
}