Skip to content
Snippets Groups Projects
Commit 413c3e10 authored by Paul Sokolovsky's avatar Paul Sokolovsky
Browse files

py/objtype: instance: Inherit protocol vtable from a base class.

This allows to define an  abstract base class which would translate
C-level protocol to Python method calls, and any subclass inheriting
from it will support this feature. This in particular actually enables
recently introduced machine.PinBase class.
parent ad229477
Branches
No related tags found
No related merge requests found
......@@ -914,7 +914,11 @@ mp_obj_t mp_obj_new_type(qstr name, mp_obj_t bases_tuple, mp_obj_t locals_dict)
o->getiter = instance_getiter;
//o->iternext = ; not implemented
o->buffer_p.get_buffer = instance_get_buffer;
//o->stream_p = ; not implemented
// Inherit protocol from a base class. This allows to define an
// abstract base class which would translate C-level protocol to
// Python method calls, and any subclass inheriting from it will
// support this feature.
o->protocol = ((mp_obj_type_t*)MP_OBJ_TO_PTR(items[0]))->protocol;
o->bases_tuple = MP_OBJ_TO_PTR(bases_tuple);
o->locals_dict = MP_OBJ_TO_PTR(locals_dict);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment