10 #ifndef smtk_attribute_AssociationRuleFactory_h
11 #define smtk_attribute_AssociationRuleFactory_h
13 #include "smtk/CoreExports.h"
15 #include "smtk/common/Factory.h"
17 #include "smtk/attribute/AssociationRule.h"
30 template<
typename Type>
31 void addAlias(
const std::string& alias)
33 addAlias(smtk::common::typeName<Type>(), alias);
40 m_reverseLookup.insert(std::make_pair(
typeName, alias));
46 return m_aliases.find(alias) != m_aliases.end();
50 template<
typename... Args>
51 std::unique_ptr<Rule>
createFromAlias(
const std::string& alias, Args&&... args)
const
53 auto found = m_aliases.find(alias);
54 if (found != m_aliases.end())
56 return createFromName(found->second, std::forward<Args>(args)...);
58 return std::unique_ptr<Rule>();
61 const std::map<std::string, std::string>& aliases()
const {
return m_aliases; }
62 const std::map<std::string, std::string>& reverseLookup()
const {
return m_reverseLookup; }
65 std::map<std::string, std::string> m_aliases;
66 std::map<std::string, std::string> m_reverseLookup;
69 typedef AssociationRuleFactory DissociationRuleFactory;