ITK
6.0.0
Insight Toolkit
ITK
Modules
Core
Common
include
itkStructHashFunction.h
Go to the documentation of this file.
1
/*=========================================================================
2
*
3
* Copyright NumFOCUS
4
*
5
* Licensed under the Apache License, Version 2.0 (the "License");
6
* you may not use this file except in compliance with the License.
7
* You may obtain a copy of the License at
8
*
9
* https://www.apache.org/licenses/LICENSE-2.0.txt
10
*
11
* Unless required by applicable law or agreed to in writing, software
12
* distributed under the License is distributed on an "AS IS" BASIS,
13
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
* See the License for the specific language governing permissions and
15
* limitations under the License.
16
*
17
*=========================================================================*/
18
#ifndef itkStructHashFunction_h
19
#define itkStructHashFunction_h
20
21
#include "
itkIntTypes.h
"
22
#include "
itkMacro.h
"
23
24
namespace
itk
25
{
39
template
<
typename
TInput>
40
class
StructHashFunction
41
{
42
public
:
44
using
Self
=
StructHashFunction
;
45
47
using
InputType
= TInput;
48
49
IdentifierType
50
operator()
(
const
InputType
& key)
const
;
51
};
52
53
template
<
typename
TInput>
54
inline
IdentifierType
55
StructHashFunction<TInput>::operator()
(
const
InputType
& key)
const
56
{
57
auto
len = static_cast<IdentifierType>(
sizeof
(
InputType
));
58
const
auto
* p = reinterpret_cast<const char *>(&key);
59
IdentifierType
hash = 0UL;
60
while
(len--)
61
{
62
hash = hash * 65UL + static_cast<IdentifierType>(*p++);
63
}
64
hash += (hash >> 5);
65
return
hash;
66
}
67
}
// namespace itk
68
69
#endif // ndef itkStructHashFunction_h
itk::StructHashFunction::operator()
IdentifierType operator()(const InputType &key) const
Definition:
itkStructHashFunction.h:55
itkMacro.h
itk::StructHashFunction::InputType
TInput InputType
Definition:
itkStructHashFunction.h:47
itkIntTypes.h
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition:
itkAnatomicalOrientation.h:29
itk::StructHashFunction
Generic hash function for an arbitrary struct (or class).
Definition:
itkStructHashFunction.h:40
itk::IdentifierType
SizeValueType IdentifierType
Definition:
itkIntTypes.h:90
Generated on
unknown
for ITK by
1.8.16