18 #pragma warning(disable : 4503) // "decorated name length exceeded, name was truncated" 24 AliasEquals(
const std::string &alias) : m_Alias(alias) {}
25 bool operator()(
const std::pair<std::string, std::vector<std::string>> &element)
27 auto iter = std::find(element.second.begin(), element.second.end(), m_Alias);
28 return iter != element.second.end();
44 const std::string &alias,
45 const std::string &className)
50 AliasesMap &aliases = m_Aliases[className];
51 auto iter = aliases.find(propertyName);
53 if (iter != aliases.end())
55 if (std::find(iter->second.begin(), iter->second.end(), alias) == iter->second.end())
56 iter->second.push_back(alias);
60 aliases.insert(std::make_pair(propertyName, std::vector<std::string>(1, alias)));
67 const std::string &className)
69 if (!propertyName.empty())
71 AliasesMap &aliases = m_Aliases[className];
72 AliasesMapConstIterator iter = aliases.find(propertyName);
74 if (iter != aliases.end())
78 return std::vector<std::string>();
85 AliasesMap &aliases = m_Aliases[className];
86 AliasesMapConstIterator iter = std::find_if(aliases.begin(), aliases.end(), AliasEquals(alias));
88 if (iter != aliases.end())
97 const AliasesMap &aliases = m_Aliases[className];
99 return !propertyName.empty() ? aliases.find(propertyName) != aliases.end() :
false;
103 const std::string &alias,
104 const std::string &className)
106 if (!propertyName.empty() && !alias.empty())
108 AliasesMap &aliases = m_Aliases[className];
109 auto iter = aliases.find(propertyName);
111 if (iter != aliases.end())
113 auto aliasIter = std::find(iter->second.begin(), iter->second.end(), alias);
115 if (aliasIter != iter->second.end())
117 iter->second.erase(aliasIter);
119 if (iter->second.empty())
120 aliases.erase(propertyName);
128 if (!propertyName.empty())
130 AliasesMap &aliases = m_Aliases[className];
131 aliases.erase(propertyName);
137 AliasesMap &aliases = m_Aliases[className];
std::string GetPropertyName(const std::string &alias, const std::string &className) override
Get property name that is associated to specific alias.
bool HasAliases(const std::string &propertyName, const std::string &className) override
Check if a specific property has aliases.
bool AddAlias(const std::string &propertyName, const std::string &alias, const std::string &className) override
Add an alias for a specific property.
void RemoveAliases(const std::string &propertyName, const std::string &className) override
Remove all aliases of a specific property.
~PropertyAliases() override
std::vector< std::string > GetAliases(const std::string &propertyName, const std::string &className) override
Get aliases for a specific property.
void RemoveAlias(const std::string &propertyName, const std::string &alias, const std::string &className) override
Remove specific alias of a certain property.
void RemoveAllAliases(const std::string &className) override
Remove all aliases of all properties.