aboutsummaryrefslogtreecommitdiff
path: root/src/ui/macro_expander.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/macro_expander.cpp')
-rw-r--r--src/ui/macro_expander.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/ui/macro_expander.cpp b/src/ui/macro_expander.cpp
index f4588c3..a2ca62c 100644
--- a/src/ui/macro_expander.cpp
+++ b/src/ui/macro_expander.cpp
@@ -3,6 +3,7 @@
#include <algorithm>
#include <cctype>
#include <fstream>
+#include <iterator>
namespace Hsdbg
{
@@ -111,15 +112,17 @@ namespace Hsdbg
"^=", "++", "--", ".*",
};
- for (const std::string_view op : multis)
+ const auto multi = std::ranges::find_if(multis, [&](std::string_view op)
{
- if (text.compare(at, op.size(), op) == 0)
- {
- at += op.size();
- token.kind = PpKind::Punct;
- token.text = std::string(op);
- return token;
- }
+ return text.compare(at, op.size(), op) == 0;
+ });
+
+ if (multi != std::end(multis))
+ {
+ at += multi->size();
+ token.kind = PpKind::Punct;
+ token.text = std::string(*multi);
+ return token;
}
token.kind = PpKind::Punct;
@@ -508,8 +511,11 @@ namespace Hsdbg
ArgList expanded_args;
expanded_args.reserve(args.size());
- for (const std::vector<PpToken>& arg : args)
- expanded_args.push_back(expand_full(table, arg));
+ std::ranges::transform(args, std::back_inserter(expanded_args),
+ [&](const std::vector<PpToken>& arg)
+ {
+ return expand_full(table, arg);
+ });
std::vector<PpToken> repl = substitute(*def, args, expanded_args);