CFx SDK Documentation
2026 SP0
Loading...
Searching...
No Matches
SDK
CFx
dd_inc
OdString_Hasher.h
Go to the documentation of this file.
1
2
// Copyright (C) 2002-2024, Open Design Alliance (the "Alliance").
3
// All rights reserved.
4
//
5
// This software and its documentation and related materials are owned by
6
// the Alliance. The software may only be incorporated into application
7
// programs owned by members of the Alliance, subject to a signed
8
// Membership Agreement and Supplemental Software License Agreement with the
9
// Alliance. The structure and organization of this software are the valuable
10
// trade secrets of the Alliance and its suppliers. The software is also
11
// protected by copyright law and international treaty provisions. Application
12
// programs incorporating this software must include the following statement
13
// with their copyright notices:
14
//
15
// This application incorporates Open Design Alliance software pursuant to a license
16
// agreement with Open Design Alliance.
17
// Open Design Alliance Copyright (C) 2002-2024 by Open Design Alliance.
18
// All rights reserved.
19
//
20
// By use of this software, its documentation or related materials, you
21
// acknowledge and accept the above terms.
23
24
25
#include "
TD_PackPush.h
"
26
27
#ifndef __OdString_Hasher_H__
28
#define __OdString_Hasher_H__
29
30
template
<
int
sizeof_
size_t
= sizeof(
size_t
)>
31
struct
OdString_Hasher
{
32
size_t
operator()
(
const
OdString
& key)
const
;
// "unresolved external symbol" means: Unsupported hash size: sizeof(size_t) != 4 && sizeof(size_t) != 8
33
};
34
40
template
<>
41
struct
OdString_Hasher
<4> {
42
size_t
operator()
(
const
OdString
& key)
const
{
43
OdUInt32
h = 0, g;
44
const
OdChar
* pos = key.
c_str
();
45
46
while
(*pos != 0) {
47
h = (h << 4) + *pos++;
48
if
((g = (h & 0xf00000000)) != 0)
49
h ^= g >> 24;
50
h &= ~g;
51
}
52
return
h;
53
}
54
};
55
61
template
<>
62
struct
OdString_Hasher
<8> {
63
size_t
operator()
(
const
OdString
& key)
const
{
64
OdUInt64
h = 0, g;
65
const
OdChar
* pos = key.
c_str
();
66
67
while
(*pos != 0) {
68
h = (h << 4) + *pos++;
69
if
((g = (h & 0xf000000000000000)) != 0)
70
h ^= g >> 56;
71
h &= ~g;
72
}
73
return
static_cast<
size_t
>
(h);
74
}
75
};
76
78
79
#include "
TD_PackPop.h
"
80
81
#endif
// #ifndef __OdString_Hasher_H__
82
83
OdUInt32
unsigned int OdUInt32
Definition
OdPlatformSettings.h:768
OdChar
wchar_t OdChar
Definition
OdPlatformSettings.h:714
TD_PackPop.h
TD_PackPush.h
OdString
Definition
OdString.h:97
OdString::c_str
const OdChar * c_str() const
Definition
OdString.h:205
OdUInt64
Definition
Int64.h:137
OdString_Hasher< 4 >::operator()
size_t operator()(const OdString &key) const
Definition
OdString_Hasher.h:42
OdString_Hasher< 8 >::operator()
size_t operator()(const OdString &key) const
Definition
OdString_Hasher.h:63
OdString_Hasher
Definition
OdString_Hasher.h:31
OdString_Hasher::operator()
size_t operator()(const OdString &key) const
Generated on Tue Apr 15 2025 11:30:04