Make fileName a reference in a loop of main.cpp, and use findReferencesById() instead of findById() in ParseComponents.hpp

This commit is contained in:
Username404 2021-08-20 00:07:51 +02:00
parent 2e9e063d71
commit 729e04161f
Signed by: Username404-59
GPG Key ID: 7AB361FBB257A5D1
2 changed files with 6 additions and 6 deletions

View File

@ -64,15 +64,15 @@ public:
IS_PARSECOMPONENT
inline auto findReferencesById() const {
return findById<T>() | views::transform([](T* it) {
return static_cast<T&>(*it);
return ref(static_cast<T&>(*it));
});
}
IS(StandardComponents::NamedIdentifier)
optional<reference_wrapper<T>> findReferenceByName(const string& name) const {
auto identifiers = findById<T>();
for (T* identifier: identifiers) {
if (identifier->getId() == typeid(T) && identifier->name == name) {
return make_optional(ref(*identifier));
auto identifiers = findReferencesById<T>();
for (const auto& identifier: identifiers) {
if (identifier.get().getId() == typeid(T) && identifier.get().name == name) {
return make_optional(identifier);
}
}
return optional<reference_wrapper<T>>();

View File

@ -42,7 +42,7 @@ int main(int argc, char* argv[]) {
const set<string_view> uniqueFiles(files.begin(), files.end());
vector<future<pair<string, optional<Yerbacon::Exception>>>> Units;
const launch& Policy = not parallel ? launch::deferred : launch::async;
for (string_view fileName: uniqueFiles) {
for (const string_view& fileName: uniqueFiles) {
if (fileName != "none") {
Units.push_back(async(Policy, [fileName, &compile]() {
try {