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
22namespace 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 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
60