Make fileName a reference in a loop of main.cpp, and use findReferencesById() instead of findById() in ParseComponents.hpp
This commit is contained in:
parent
2e9e063d71
commit
729e04161f
@ -64,15 +64,15 @@ public:
|
|||||||
IS_PARSECOMPONENT
|
IS_PARSECOMPONENT
|
||||||
inline auto findReferencesById() const {
|
inline auto findReferencesById() const {
|
||||||
return findById<T>() | views::transform([](T* it) {
|
return findById<T>() | views::transform([](T* it) {
|
||||||
return static_cast<T&>(*it);
|
return ref(static_cast<T&>(*it));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
IS(StandardComponents::NamedIdentifier)
|
IS(StandardComponents::NamedIdentifier)
|
||||||
optional<reference_wrapper<T>> findReferenceByName(const string& name) const {
|
optional<reference_wrapper<T>> findReferenceByName(const string& name) const {
|
||||||
auto identifiers = findById<T>();
|
auto identifiers = findReferencesById<T>();
|
||||||
for (T* identifier: identifiers) {
|
for (const auto& identifier: identifiers) {
|
||||||
if (identifier->getId() == typeid(T) && identifier->name == name) {
|
if (identifier.get().getId() == typeid(T) && identifier.get().name == name) {
|
||||||
return make_optional(ref(*identifier));
|
return make_optional(identifier);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return optional<reference_wrapper<T>>();
|
return optional<reference_wrapper<T>>();
|
||||||
|
@ -42,7 +42,7 @@ int main(int argc, char* argv[]) {
|
|||||||
const set<string_view> uniqueFiles(files.begin(), files.end());
|
const set<string_view> uniqueFiles(files.begin(), files.end());
|
||||||
vector<future<pair<string, optional<Yerbacon::Exception>>>> Units;
|
vector<future<pair<string, optional<Yerbacon::Exception>>>> Units;
|
||||||
const launch& Policy = not parallel ? launch::deferred : launch::async;
|
const launch& Policy = not parallel ? launch::deferred : launch::async;
|
||||||
for (string_view fileName: uniqueFiles) {
|
for (const string_view& fileName: uniqueFiles) {
|
||||||
if (fileName != "none") {
|
if (fileName != "none") {
|
||||||
Units.push_back(async(Policy, [fileName, &compile]() {
|
Units.push_back(async(Policy, [fileName, &compile]() {
|
||||||
try {
|
try {
|
||||||
|
Loading…
Reference in New Issue
Block a user