FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cpython/Include/pyhash.h at main · https-github-com-nzysoft/cpython · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
https-github-com-nzysoft
/
cpython
Public
forked from
python/cpython
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
cpython
/
Include
/
pyhash.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
66 lines (58 loc) · 1.78 KB
Breadcrumbs
cpython
/
Include
/
pyhash.h
Copy path
File metadata and controls
66 lines (58 loc) · 1.78 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
#ifndef
Py_HASH_H
#define
Py_HASH_H
#ifdef
__cplusplus
extern
"C"
{
#endif
#ifndef
Py_LIMITED_API
/* hash function definition */
typedef
struct
{
Py_hash_t
(
*
const
hash
)(
const
void
*
,
Py_ssize_t
);
const
char
*
name
;
const
int
hash_bits
;
const
int
seed_bits
;
}
PyHash_FuncDef
;
PyAPI_FUNC
(
PyHash_FuncDef
*
)
PyHash_GetFuncDef
(
void
);
#endif
/* Cutoff for small string DJBX33A optimization in range [1, cutoff).
*
* About 50% of the strings in a typical Python application are smaller than
* 6 to 7 chars. However DJBX33A is vulnerable to hash collision attacks.
* NEVER use DJBX33A for long strings!
*
* A Py_HASH_CUTOFF of 0 disables small string optimization. 32 bit platforms
* should use a smaller cutoff because it is easier to create colliding
* strings. A cutoff of 7 on 64bit platforms and 5 on 32bit platforms should
* provide a decent safety margin.
*/
#ifndef
Py_HASH_CUTOFF
# define
Py_HASH_CUTOFF
0
#elif
(
Py_HASH_CUTOFF
>
7
||
Py_HASH_CUTOFF
<
0
)
# error
Py_HASH_CUTOFF must in range 0...7.
#endif
/* Py_HASH_CUTOFF */
/* Hash algorithm selection
*
* The values for Py_HASH_* are hard-coded in the
* configure script.
*
* - FNV and SIPHASH* are available on all platforms and architectures.
* - With EXTERNAL embedders can provide an alternative implementation with::
*
* PyHash_FuncDef PyHash_Func = {...};
*
* XXX: Figure out __declspec() for extern PyHash_FuncDef.
*/
#define
Py_HASH_EXTERNAL
0
#define
Py_HASH_SIPHASH24
1
#define
Py_HASH_FNV
2
#define
Py_HASH_SIPHASH13
3
#ifndef
Py_HASH_ALGORITHM
# ifndef
HAVE_ALIGNED_REQUIRED
# define
Py_HASH_ALGORITHM
Py_HASH_SIPHASH13
# else
# define
Py_HASH_ALGORITHM
Py_HASH_FNV
# endif
/* uint64_t && uint32_t && aligned */
#endif
/* Py_HASH_ALGORITHM */
#ifdef
__cplusplus
}
#endif
#endif
// !Py_HASH_H
Back
|
FazBrowse Home
|
New Git URL