1 // =================================
 2 // Copyright (c) 2021 Seppo Laakko
 3 // Distributed under the MIT license
 4 // =================================
 5 
 6 #ifndef CMAJOR_BINDER_CONCEPT_REPOSITORY_INCLUDED
 7 #define CMAJOR_BINDER_CONCEPT_REPOSITORY_INCLUDED
 8 #include <cmajor/binder/BoundConstraint.hpp>
 9 #include <cmajor/symbols/ConceptSymbol.hpp>
10 
11 namespace cmajor { namespace binder {
12    
13 using namespace cmajor::symbols;
14 
15 class ConceptRepository 
16 {
17 public:
18     BoundConcept* GetBoundConcept(const BoundConceptKey& key) const;
19     void AddBoundConcept(const BoundConceptKey& keystd::std::unique_ptr<BoundConcept>&&boundConcept);
20 private:
21     std::unordered_map<BoundConceptKeyBoundConcept*BoundConceptKeyHash> boundConceptMap;
22     std::vector<std::std::unique_ptr<BoundConcept>>boundConcepts;
23 };
24 
25 } } // namespace cmajor::binder
26 
27 #endif // CMAJOR_BINDER_CONCEPT_REPOSITORY_INCLUDED