285368f68792c0621f9cf76dba9c151412ab62fe
[platform/upstream/coreclr.git] / src / binder / inc / assemblyhashtraits.hpp
1 // Licensed to the .NET Foundation under one or more agreements.
2 // The .NET Foundation licenses this file to you under the MIT license.
3 // See the LICENSE file in the project root for more information.
4 // ============================================================
5 //
6 // AssemblyHashTraits.hpp
7 //
8
9
10 //
11 // Defines the AssemblyHashTraits template class
12 //
13 // ============================================================
14
15 #ifndef __BINDER__ASSEMBLY_HASH_TRAITS_HPP__
16 #define __BINDER__ASSEMBLY_HASH_TRAITS_HPP__
17
18 #include "bindertypes.hpp"
19 #include "assemblyentry.hpp"
20 #include "shash.h"
21
22 namespace BINDER_SPACE
23 {
24     template<typename HashEntry, DWORD dwAssemblyNameFlags>
25     class AssemblyHashTraits : public NoRemoveSHashTraits<DefaultSHashTraits<HashEntry> >
26     {
27     public:
28         typedef typename NoRemoveSHashTraits<DefaultSHashTraits<HashEntry> >::element_t element_t;
29         typedef typename NoRemoveSHashTraits<DefaultSHashTraits<HashEntry> >::count_t count_t;
30
31         typedef AssemblyName* key_t;
32
33         // GetKey, Equals and Hash can throw due to SString
34         static const bool s_NoThrow = false;
35
36         static key_t GetKey(element_t pAssemblyEntry)
37         {
38             return pAssemblyEntry->GetAssemblyName();
39         }
40         static BOOL Equals(key_t pAssemblyName1, key_t pAssemblyName2)
41         {
42             return pAssemblyName1->Equals(pAssemblyName2, dwAssemblyNameFlags);
43         }
44         static count_t Hash(key_t pAssemblyName)
45         {
46             return pAssemblyName->Hash(dwAssemblyNameFlags);
47         }
48         static const element_t Null()
49         {
50             return NULL;
51         }
52         static bool IsNull(const element_t &assemblyEntry)
53         {
54             return (assemblyEntry == NULL);
55         }
56     };
57 };
58
59 #endif