1 //===- HashEntry.tcc ------------------------------------------------------===//
2 //
3 //                     The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 //===--------------------------------------------------------------------===//
11 // template implementation of HashEntry
12 template <typename KeyType, typename ValueType, typename KeyCompare>
HashEntry(const KeyType & pKey)13 HashEntry<KeyType, ValueType, KeyCompare>::HashEntry(const KeyType& pKey)
14     : m_Key(pKey) {
15 }
16 
17 template <typename KeyType, typename ValueType, typename KeyCompare>
~HashEntry()18 HashEntry<KeyType, ValueType, KeyCompare>::~HashEntry() {
19 }
20 
21 template <typename KeyType, typename ValueType, typename KeyCompare>
compare(const KeyType & pKey)22 bool HashEntry<KeyType, ValueType, KeyCompare>::compare(const KeyType& pKey) {
23   static KeyCompare comparator;
24   return comparator(m_Key, pKey);
25 }
26 
27 //===--------------------------------------------------------------------===//
28 // template implementation of EntryFactory
29 template <typename HashEntryTy>
EntryFactory()30 EntryFactory<HashEntryTy>::EntryFactory() {
31 }
32 
33 template <typename HashEntryTy>
~EntryFactory()34 EntryFactory<HashEntryTy>::~EntryFactory() {
35 }
36 
37 template <typename HashEntryTy>
destroy(HashEntryTy * pEntry)38 void EntryFactory<HashEntryTy>::destroy(HashEntryTy* pEntry) {
39   delete pEntry;
40 }
41 
42 template <typename HashEntryTy>
produce(const typename EntryFactory<HashEntryTy>::key_type & pKey)43 HashEntryTy* EntryFactory<HashEntryTy>::produce(
44     const typename EntryFactory<HashEntryTy>::key_type& pKey) {
45   return new HashEntryTy(pKey);
46 }
47