-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathStlHelper.h
More file actions
113 lines (90 loc) · 3.51 KB
/
Copy pathStlHelper.h
File metadata and controls
113 lines (90 loc) · 3.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#pragma once
NS_BEGIN
//#################################################################################################
template<typename T>
class CNumberHashTraits final
{
public:
CNumberHashTraits &operator=(const CNumberHashTraits &src) = delete;
T operator()(const T n) const noexcept
{
return n;
}
};
//#################################################################################################
class CStr8HashTraits final
{
public:
CStr8HashTraits &operator=(const CStr8HashTraits &src) = delete;
uint64_t operator()(const CStr8 &str) const;
};
//#################################################################################################
class CStrWHashTraits final
{
public:
CStrWHashTraits &operator=(const CStrWHashTraits &src) = delete;
uint64_t operator()(const CStrW &str) const;
};
//#################################################################################################
class CStr8IgnoreCaseTraits final
{
public:
CStr8IgnoreCaseTraits &operator=(const CStr8IgnoreCaseTraits &src) = delete;
uint64_t operator()(const CStr8 &str) const;
bool operator()(const CStr8 &str1, const CStr8 &str2) const;
};
//#################################################################################################
class CStrWIgnoreCaseTraits final
{
public:
CStrWIgnoreCaseTraits &operator=(const CStrWIgnoreCaseTraits &src) = delete;
uint64_t operator()(const CStrW &str) const;
bool operator()(const CStrW &str1, const CStrW &str2) const;
};
//#################################################################################################
class CFilePathSegment8HashTraits final
{
public:
CFilePathSegment8HashTraits &operator=(const CFilePathSegment8HashTraits &src) = delete;
uint64_t operator()(const CFilePathSegment8 &path) const;
};
//#################################################################################################
class CFilePathSegmentWHashTraits final
{
public:
CFilePathSegmentWHashTraits &operator=(const CFilePathSegmentWHashTraits &src) = delete;
uint64_t operator()(const CFilePathSegmentW &path) const;
};
//#################################################################################################
class CFilePath8HashTraits final
{
public:
CFilePath8HashTraits &operator=(const CFilePath8HashTraits &src) = delete;
uint64_t operator()(const CFilePath8 &path) const;
};
//#################################################################################################
class CFilePathWHashTraits final
{
public:
CFilePathWHashTraits &operator=(const CFilePathWHashTraits &src) = delete;
uint64_t operator()(const CFilePathW &path) const;
};
#ifdef _WIN32
//#################################################################################################
class CUuidHashTraits final
{ // You cannot use uuid_t in STL containers on MacOS because it is defined as a raw character array which is not copyable
public:
CUuidHashTraits &operator=(const CUuidHashTraits &src) = delete;
uint64_t operator()(const uuid_t &id) const;
};
using CStrHashTraits = CStrWHashTraits;
using CStrIgnoreCaseTraits = CStrWIgnoreCaseTraits;
using CFilePathSegmentHashTraits = CFilePathSegmentWHashTraits;
using CFilePathHashTraits = CFilePathWHashTraits;
#else
using CStrHashTraits = CStr8HashTraits;
using CStrIgnoreCaseTraits = CStr8IgnoreCaseTraits;
using CFilePathSegmentHashTraits = CFilePathSegment8HashTraits;
using CFilePathHashTraits = CFilePath8HashTraits;
#endif
NS_END