/src/cpython/Include/cpython/pyhash.h
Line | Count | Source |
1 | | #ifndef Py_CPYTHON_HASH_H |
2 | | # error "this header file must not be included directly" |
3 | | #endif |
4 | | |
5 | | /* Prime multiplier used in string and various other hashes. */ |
6 | 1.88M | #define PyHASH_MULTIPLIER 1000003UL /* 0xf4243 */ |
7 | | |
8 | | /* Parameters used for the numeric hash implementation. See notes for |
9 | | _Py_HashDouble in Python/pyhash.c. Numeric hashes are based on |
10 | | reduction modulo the prime 2**PyHASH_BITS - 1. */ |
11 | | |
12 | | #if SIZEOF_VOID_P >= 8 |
13 | 28.4M | # define PyHASH_BITS 61 |
14 | | #else |
15 | | # define PyHASH_BITS 31 |
16 | | #endif |
17 | | |
18 | 15.3M | #define PyHASH_MODULUS (((size_t)1 << PyHASH_BITS) - 1) |
19 | 0 | #define PyHASH_INF 314159 |
20 | 3 | #define PyHASH_IMAG PyHASH_MULTIPLIER |
21 | | |
22 | | /* Aliases kept for backward compatibility with Python 3.12 */ |
23 | | #define _PyHASH_MULTIPLIER PyHASH_MULTIPLIER |
24 | | #define _PyHASH_BITS PyHASH_BITS |
25 | | #define _PyHASH_MODULUS PyHASH_MODULUS |
26 | | #define _PyHASH_INF PyHASH_INF |
27 | | #define _PyHASH_IMAG PyHASH_IMAG |
28 | | |
29 | | /* Helpers for hash functions */ |
30 | | PyAPI_FUNC(Py_hash_t) _Py_HashDouble(PyObject *, double); |
31 | | |
32 | | |
33 | | /* hash function definition */ |
34 | | typedef struct { |
35 | | Py_hash_t (*const hash)(const void *, Py_ssize_t); |
36 | | const char *name; |
37 | | const int hash_bits; |
38 | | const int seed_bits; |
39 | | } PyHash_FuncDef; |
40 | | |
41 | | PyAPI_FUNC(PyHash_FuncDef*) PyHash_GetFuncDef(void); |
42 | | |
43 | | PyAPI_FUNC(Py_hash_t) Py_HashPointer(const void *ptr); |
44 | | |
45 | | // Deprecated alias kept for backward compatibility |
46 | | Py_DEPRECATED(3.14) static inline Py_hash_t |
47 | | _Py_HashPointer(const void *ptr) |
48 | 0 | { |
49 | 0 | return Py_HashPointer(ptr); |
50 | 0 | } Unexecuted instantiation: bytesobject.c:_Py_HashPointer Unexecuted instantiation: call.c:_Py_HashPointer Unexecuted instantiation: exceptions.c:_Py_HashPointer Unexecuted instantiation: genericaliasobject.c:_Py_HashPointer Unexecuted instantiation: floatobject.c:_Py_HashPointer Unexecuted instantiation: listobject.c:_Py_HashPointer Unexecuted instantiation: longobject.c:_Py_HashPointer Unexecuted instantiation: dictobject.c:_Py_HashPointer Unexecuted instantiation: memoryobject.c:_Py_HashPointer Unexecuted instantiation: moduleobject.c:_Py_HashPointer Unexecuted instantiation: object.c:_Py_HashPointer Unexecuted instantiation: obmalloc.c:_Py_HashPointer Unexecuted instantiation: picklebufobject.c:_Py_HashPointer Unexecuted instantiation: rangeobject.c:_Py_HashPointer Unexecuted instantiation: setobject.c:_Py_HashPointer Unexecuted instantiation: sliceobject.c:_Py_HashPointer Unexecuted instantiation: structseq.c:_Py_HashPointer Unexecuted instantiation: templateobject.c:_Py_HashPointer Unexecuted instantiation: tupleobject.c:_Py_HashPointer Unexecuted instantiation: typeobject.c:_Py_HashPointer Unexecuted instantiation: typevarobject.c:_Py_HashPointer Unexecuted instantiation: unicode_format.c:_Py_HashPointer Unexecuted instantiation: unicode_formatter.c:_Py_HashPointer Unexecuted instantiation: unicode_writer.c:_Py_HashPointer Unexecuted instantiation: unicodectype.c:_Py_HashPointer Unexecuted instantiation: unicodeobject.c:_Py_HashPointer Unexecuted instantiation: unionobject.c:_Py_HashPointer Unexecuted instantiation: weakrefobject.c:_Py_HashPointer Unexecuted instantiation: _warnings.c:_Py_HashPointer Unexecuted instantiation: bltinmodule.c:_Py_HashPointer Unexecuted instantiation: ceval.c:_Py_HashPointer Unexecuted instantiation: codecs.c:_Py_HashPointer Unexecuted instantiation: codegen.c:_Py_HashPointer Unexecuted instantiation: compile.c:_Py_HashPointer Unexecuted instantiation: context.c:_Py_HashPointer Unexecuted instantiation: errors.c:_Py_HashPointer Unexecuted instantiation: flowgraph.c:_Py_HashPointer Unexecuted instantiation: frame.c:_Py_HashPointer Unexecuted instantiation: future.c:_Py_HashPointer Unexecuted instantiation: gc.c:_Py_HashPointer Unexecuted instantiation: gc_gil.c:_Py_HashPointer Unexecuted instantiation: getargs.c:_Py_HashPointer Unexecuted instantiation: ceval_gil.c:_Py_HashPointer Unexecuted instantiation: hamt.c:_Py_HashPointer Unexecuted instantiation: hashtable.c:_Py_HashPointer Unexecuted instantiation: import.c:_Py_HashPointer Unexecuted instantiation: importdl.c:_Py_HashPointer Unexecuted instantiation: initconfig.c:_Py_HashPointer Unexecuted instantiation: instrumentation.c:_Py_HashPointer Unexecuted instantiation: instruction_sequence.c:_Py_HashPointer Unexecuted instantiation: intrinsics.c:_Py_HashPointer Unexecuted instantiation: legacy_tracing.c:_Py_HashPointer Unexecuted instantiation: lock.c:_Py_HashPointer Unexecuted instantiation: marshal.c:_Py_HashPointer Unexecuted instantiation: modsupport.c:_Py_HashPointer Unexecuted instantiation: mysnprintf.c:_Py_HashPointer Unexecuted instantiation: parking_lot.c:_Py_HashPointer Unexecuted instantiation: preconfig.c:_Py_HashPointer Unexecuted instantiation: pyarena.c:_Py_HashPointer Unexecuted instantiation: pyctype.c:_Py_HashPointer Unexecuted instantiation: pyhash.c:_Py_HashPointer Unexecuted instantiation: pylifecycle.c:_Py_HashPointer Unexecuted instantiation: pymath.c:_Py_HashPointer Unexecuted instantiation: pystate.c:_Py_HashPointer Unexecuted instantiation: pythonrun.c:_Py_HashPointer Unexecuted instantiation: pytime.c:_Py_HashPointer Unexecuted instantiation: qsbr.c:_Py_HashPointer Unexecuted instantiation: bootstrap_hash.c:_Py_HashPointer Unexecuted instantiation: specialize.c:_Py_HashPointer Unexecuted instantiation: structmember.c:_Py_HashPointer Unexecuted instantiation: symtable.c:_Py_HashPointer Unexecuted instantiation: sysmodule.c:_Py_HashPointer Unexecuted instantiation: thread.c:_Py_HashPointer Unexecuted instantiation: traceback.c:_Py_HashPointer Unexecuted instantiation: tracemalloc.c:_Py_HashPointer Unexecuted instantiation: getopt.c:_Py_HashPointer Unexecuted instantiation: pystrcmp.c:_Py_HashPointer Unexecuted instantiation: pystrtod.c:_Py_HashPointer Unexecuted instantiation: pystrhex.c:_Py_HashPointer Unexecuted instantiation: dtoa.c:_Py_HashPointer Unexecuted instantiation: fileutils.c:_Py_HashPointer Unexecuted instantiation: suggestions.c:_Py_HashPointer Unexecuted instantiation: perf_trampoline.c:_Py_HashPointer Unexecuted instantiation: perf_jit_trampoline.c:_Py_HashPointer Unexecuted instantiation: remote_debugging.c:_Py_HashPointer Unexecuted instantiation: dynload_shlib.c:_Py_HashPointer Unexecuted instantiation: config.c:_Py_HashPointer Unexecuted instantiation: gcmodule.c:_Py_HashPointer Unexecuted instantiation: _asynciomodule.c:_Py_HashPointer Unexecuted instantiation: atexitmodule.c:_Py_HashPointer Unexecuted instantiation: faulthandler.c:_Py_HashPointer Unexecuted instantiation: posixmodule.c:_Py_HashPointer Unexecuted instantiation: signalmodule.c:_Py_HashPointer Unexecuted instantiation: _tracemalloc.c:_Py_HashPointer Unexecuted instantiation: _suggestions.c:_Py_HashPointer Unexecuted instantiation: _datetimemodule.c:_Py_HashPointer Unexecuted instantiation: _codecsmodule.c:_Py_HashPointer Unexecuted instantiation: _collectionsmodule.c:_Py_HashPointer Unexecuted instantiation: _iomodule.c:_Py_HashPointer Unexecuted instantiation: iobase.c:_Py_HashPointer Unexecuted instantiation: fileio.c:_Py_HashPointer Unexecuted instantiation: bytesio.c:_Py_HashPointer Unexecuted instantiation: bufferedio.c:_Py_HashPointer Unexecuted instantiation: textio.c:_Py_HashPointer Unexecuted instantiation: stringio.c:_Py_HashPointer Unexecuted instantiation: itertoolsmodule.c:_Py_HashPointer Unexecuted instantiation: sre.c:_Py_HashPointer Unexecuted instantiation: _sysconfig.c:_Py_HashPointer Unexecuted instantiation: _threadmodule.c:_Py_HashPointer Unexecuted instantiation: timemodule.c:_Py_HashPointer Unexecuted instantiation: _typesmodule.c:_Py_HashPointer Unexecuted instantiation: _typingmodule.c:_Py_HashPointer Unexecuted instantiation: _weakref.c:_Py_HashPointer Unexecuted instantiation: _abc.c:_Py_HashPointer Unexecuted instantiation: _functoolsmodule.c:_Py_HashPointer Unexecuted instantiation: _localemodule.c:_Py_HashPointer Unexecuted instantiation: _opcode.c:_Py_HashPointer Unexecuted instantiation: _operator.c:_Py_HashPointer Unexecuted instantiation: symtablemodule.c:_Py_HashPointer Unexecuted instantiation: pwdmodule.c:_Py_HashPointer Unexecuted instantiation: getpath.c:_Py_HashPointer Unexecuted instantiation: frozen.c:_Py_HashPointer Unexecuted instantiation: getbuildinfo.c:_Py_HashPointer Unexecuted instantiation: peg_api.c:_Py_HashPointer Unexecuted instantiation: file_tokenizer.c:_Py_HashPointer Unexecuted instantiation: helpers.c:_Py_HashPointer Unexecuted instantiation: myreadline.c:_Py_HashPointer Unexecuted instantiation: abstract.c:_Py_HashPointer Unexecuted instantiation: boolobject.c:_Py_HashPointer Unexecuted instantiation: bytes_methods.c:_Py_HashPointer Unexecuted instantiation: bytearrayobject.c:_Py_HashPointer Unexecuted instantiation: capsule.c:_Py_HashPointer Unexecuted instantiation: cellobject.c:_Py_HashPointer Unexecuted instantiation: classobject.c:_Py_HashPointer Unexecuted instantiation: codeobject.c:_Py_HashPointer Unexecuted instantiation: complexobject.c:_Py_HashPointer Unexecuted instantiation: descrobject.c:_Py_HashPointer Unexecuted instantiation: enumobject.c:_Py_HashPointer Unexecuted instantiation: genobject.c:_Py_HashPointer Unexecuted instantiation: fileobject.c:_Py_HashPointer Unexecuted instantiation: frameobject.c:_Py_HashPointer Unexecuted instantiation: funcobject.c:_Py_HashPointer Unexecuted instantiation: interpolationobject.c:_Py_HashPointer Unexecuted instantiation: iterobject.c:_Py_HashPointer Unexecuted instantiation: lazyimportobject.c:_Py_HashPointer Unexecuted instantiation: odictobject.c:_Py_HashPointer Unexecuted instantiation: methodobject.c:_Py_HashPointer Unexecuted instantiation: namespaceobject.c:_Py_HashPointer Unexecuted instantiation: _contextvars.c:_Py_HashPointer Unexecuted instantiation: Python-ast.c:_Py_HashPointer Unexecuted instantiation: Python-tokenize.c:_Py_HashPointer Unexecuted instantiation: asdl.c:_Py_HashPointer Unexecuted instantiation: assemble.c:_Py_HashPointer Unexecuted instantiation: ast.c:_Py_HashPointer Unexecuted instantiation: ast_preprocess.c:_Py_HashPointer Unexecuted instantiation: ast_unparse.c:_Py_HashPointer Unexecuted instantiation: critical_section.c:_Py_HashPointer Unexecuted instantiation: crossinterp.c:_Py_HashPointer Unexecuted instantiation: getcopyright.c:_Py_HashPointer Unexecuted instantiation: getplatform.c:_Py_HashPointer Unexecuted instantiation: getversion.c:_Py_HashPointer Unexecuted instantiation: optimizer.c:_Py_HashPointer Unexecuted instantiation: pathconfig.c:_Py_HashPointer Unexecuted instantiation: pegen.c:_Py_HashPointer Unexecuted instantiation: pegen_errors.c:_Py_HashPointer Unexecuted instantiation: parser.c:_Py_HashPointer Unexecuted instantiation: buffer.c:_Py_HashPointer Unexecuted instantiation: lexer.c:_Py_HashPointer Unexecuted instantiation: state.c:_Py_HashPointer Unexecuted instantiation: readline_tokenizer.c:_Py_HashPointer Unexecuted instantiation: string_tokenizer.c:_Py_HashPointer Unexecuted instantiation: utf8_tokenizer.c:_Py_HashPointer Unexecuted instantiation: getcompiler.c:_Py_HashPointer Unexecuted instantiation: mystrtoul.c:_Py_HashPointer Unexecuted instantiation: token.c:_Py_HashPointer Unexecuted instantiation: action_helpers.c:_Py_HashPointer Unexecuted instantiation: string_parser.c:_Py_HashPointer |
51 | | |
52 | | PyAPI_FUNC(Py_hash_t) PyObject_GenericHash(PyObject *); |
53 | | |
54 | | PyAPI_FUNC(Py_hash_t) Py_HashBuffer(const void *ptr, Py_ssize_t len); |