Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
smart_ptr_keys.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: GPL-2.0-or-later
5
#ifndef INKSCAPE_UTIL_SMART_PTR_KEYS_H
6
#define INKSCAPE_UTIL_SMART_PTR_KEYS_H
7
8
#include <functional>
// for std::hash
9
10
template
<
typename
T>
11
struct
TransparentPtrHash
12
{
13
using
is_transparent
= void;
14
15
template
<
typename
U>
16
size_t
operator()
(U
const
&u)
const
17
{
18
return
std::hash<T const *>{}(&*u);
19
}
20
};
21
22
template
<
typename
T>
23
struct
TransparentPtrLess
24
{
25
using
is_transparent
= void;
26
27
template
<
typename
U,
typename
V>
28
bool
operator()
(U
const
&u, V
const
&v)
const
29
{
30
using
Tp = T
const
*;
31
return
Tp{&*u} < Tp{&*v};
32
}
33
};
34
35
template
<
typename
T>
36
struct
TransparentPtrEqual
37
{
38
using
is_transparent
= void;
39
40
template
<
typename
U,
typename
V>
41
bool
operator()
(U
const
&u, V
const
&v)
const
42
{
43
using
Tp = T
const
*;
44
return
Tp{&*u} == Tp{&*v};
45
}
46
};
47
48
#endif
// INKSCAPE_UTIL_SMART_PTR_KEYS_H
TransparentPtrEqual
Definition
smart_ptr_keys.h:37
TransparentPtrEqual::is_transparent
void is_transparent
Definition
smart_ptr_keys.h:38
TransparentPtrEqual::operator()
bool operator()(U const &u, V const &v) const
Definition
smart_ptr_keys.h:41
TransparentPtrHash
Definition
smart_ptr_keys.h:12
TransparentPtrHash::operator()
size_t operator()(U const &u) const
Definition
smart_ptr_keys.h:16
TransparentPtrHash::is_transparent
void is_transparent
Definition
smart_ptr_keys.h:13
TransparentPtrLess
Definition
smart_ptr_keys.h:24
TransparentPtrLess::operator()
bool operator()(U const &u, V const &v) const
Definition
smart_ptr_keys.h:28
TransparentPtrLess::is_transparent
void is_transparent
Definition
smart_ptr_keys.h:25
src
util
smart_ptr_keys.h
Generated on Sun Jul 13 2025 04:02:23 for Inkscape by
1.9.8