38 std::vector<Alias> unique;
39 unique.reserve(aliases.size());
40 for (
auto&
alias : aliases) {
41 const auto alreadyPresent = std::any_of(unique.begin(), unique.end(), [&](
const Alias& existing) { return existing.value() == alias.value(); });
42 if (!alreadyPresent && !
alias.value().empty()) unique.push_back(std::move(
alias));
44 aliases = std::move(unique);
std::string canonicalAliasValue(std::string value)
Canonicalizes an alias string for comparison.
void recordAliasHit(std::vector< Alias > &aliases, const std::string &value, const std::string ×tamp={})
Records or updates a hit for an alias value.
std::string trimCopy(std::string value)
Trims leading and trailing whitespace from text.
void normalizeAliases(std::vector< Alias > &aliases)
Normalizes and deduplicates a list of aliases.
bool containsAliasValue(const std::vector< Alias > &aliases, const std::string &value)
Checks whether an alias list already contains a value.
void removeAliasValue(std::vector< Alias > &aliases, const std::string &value)
Removes aliases with a given value.
void normalizeAlias(Alias &alias)
Normalizes a single alias in place.
void normalizeAliasUsage(Alias &alias)
Normalizes alias usage metadata in place.