pyke/mapping.c, key.c: Make the mapping code more intrusive and complete.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 18 Nov 2019 10:41:12 +0000 (10:41 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 25 Nov 2019 17:43:08 +0000 (17:43 +0000)
commit8ddd7c8f0137996e42ff9970e99d036a465ce9e3
treea389f4a7e0e5f91243d046abedd4ebbd76918753
parent999b30b4eb29925e8034d92e35d64d6cca013f7e
pyke/mapping.c, key.c: Make the mapping code more intrusive and complete.

Previously, mapping classes would implement a minimum of Python-level
operations, such as iterating over keys and mapping lookups, and the
generic mapping code would just synthesize missing operations in terms
of these.

Instead, introduce a mapping-specific vtable pointer in object
structures which describes the mapping operations in a form similar to
mLib's `sym' interface, which is rather more efficient in terms of hash
probes, and have the generic mapping code synthesize all of the Python-
level operations from these.

Needless to say, this is very messy.  Sorry.
key.c
pyke/mapping-mLib.c [new file with mode: 0644]
pyke/mapping.c
pyke/pyke-mLib.h
pyke/pyke.h
setup.py
t/testutils.py