FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
cnpython/Objects/dict-common.h at cnpython · lp9102/cnpython · GitHub
lp9102
/
cnpython
Public
forked from
swizl/cnpython
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
cnpython
/
Objects
/
dict-common.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
75 lines (56 loc) · 2.29 KB
Breadcrumbs
cnpython
/
Objects
/
dict-common.h
Copy path
File metadata and controls
75 lines (56 loc) · 2.29 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
67
68
69
70
71
72
73
74
75
#ifndef
Py_DICT_COMMON_H
#define
Py_DICT_COMMON_H
typedef
struct
{
/* Cached hash code of me_key. */
Py_hash_t
me_hash
;
PyObject
*
me_key
;
PyObject
*
me_value
;
/* This field is only meaningful for combined tables */
}
PyDictKeyEntry
;
/* dict_lookup_func() returns index of entry which can be used like DK_ENTRIES(dk)[index].
* -1 when no entry found, -3 when compare raises error.
*/
typedef
Py_ssize_t
(
*
dict_lookup_func
)
(
PyDictObject
*
mp
,
PyObject
*
key
,
Py_hash_t
hash
,
PyObject
*
*
value_addr
);
#define
DKIX_EMPTY
(-1)
#define
DKIX_DUMMY
(-2)
/* Used internally */
#define
DKIX_ERROR
(-3)
/* See dictobject.c for actual layout of DictKeysObject */
struct
_dictkeysobject
{
Py_ssize_t
dk_refcnt
;
/* Size of the hash table (dk_indices). It must be a power of 2. */
Py_ssize_t
dk_size
;
/* Function to lookup in the hash table (dk_indices):
- lookdict(): general-purpose, and may return DKIX_ERROR if (and
only if) a comparison raises an exception.
- lookdict_unicode(): specialized to Unicode string keys, comparison of
which can never raise an exception; that function can never return
DKIX_ERROR.
- lookdict_unicode_nodummy(): similar to lookdict_unicode() but further
specialized for Unicode string keys that cannot be the <dummy> value.
- lookdict_split(): Version of lookdict() for split tables. */
dict_lookup_func
dk_lookup
;
/* Number of usable entries in dk_entries. */
Py_ssize_t
dk_usable
;
/* Number of used entries in dk_entries. */
Py_ssize_t
dk_nentries
;
/* Actual hash table of dk_size entries. It holds indices in dk_entries,
or DKIX_EMPTY(-1) or DKIX_DUMMY(-2).
Indices must be: 0 <= indice < USABLE_FRACTION(dk_size).
The size in bytes of an indice depends on dk_size:
- 1 byte if dk_size <= 0xff (char*)
- 2 bytes if dk_size <= 0xffff (int16_t*)
- 4 bytes if dk_size <= 0xffffffff (int32_t*)
- 8 bytes otherwise (int64_t*)
Dynamically sized, 8 is minimum. */
union
{
int8_t
as_1
[
8
];
int16_t
as_2
[
4
];
int32_t
as_4
[
2
];
#if
SIZEOF_VOID_P
>
4
int64_t
as_8
[
1
];
#endif
}
dk_indices
;
/* "PyDictKeyEntry dk_entries[dk_usable];" array follows:
see the DK_ENTRIES() macro */
};
#endif
Back
|
FazBrowse Home
|
New Git URL