From 07209f8592f15435d6abbccaad5347cea2c7722e Mon Sep 17 00:00:00 2001
From: Paul Sokolovsky <pfalcon@users.sourceforge.net>
Date: Sat, 18 Jun 2016 18:19:24 +0300
Subject: [PATCH] all: Rename mp_obj_type_t::stream_p to protocol.

It's now used for more than just stream protocol (e.g. pin protocol), so
don't use false names.
---
 cc3200/mods/modusocket.c | 2 +-
 cc3200/mods/modussl.c    | 2 +-
 cc3200/mods/pybuart.c    | 2 +-
 esp8266/modpybuart.c     | 2 +-
 extmod/modlwip.c         | 2 +-
 extmod/modussl.c         | 8 +++++---
 extmod/modwebrepl.c      | 2 +-
 extmod/modwebsocket.c    | 2 +-
 extmod/vfs_fat_file.c    | 4 ++--
 extmod/virtpin.c         | 4 ++--
 py/modio.c               | 2 +-
 py/obj.h                 | 3 ++-
 py/objstringio.c         | 4 ++--
 py/stream.c              | 7 ++++---
 stmhal/can.c             | 2 +-
 stmhal/moduselect.c      | 5 +++--
 stmhal/modusocket.c      | 2 +-
 stmhal/pybstdio.c        | 4 ++--
 stmhal/uart.c            | 2 +-
 stmhal/usb.c             | 4 ++--
 unix/file.c              | 4 ++--
 unix/modsocket.c         | 2 +-
 22 files changed, 38 insertions(+), 33 deletions(-)

diff --git a/cc3200/mods/modusocket.c b/cc3200/mods/modusocket.c
index 43b7a840a..360d03487 100644
--- a/cc3200/mods/modusocket.c
+++ b/cc3200/mods/modusocket.c
@@ -486,7 +486,7 @@ STATIC const mp_obj_type_t socket_type = {
     { &mp_type_type },
     .name = MP_QSTR_socket,
     .make_new = socket_make_new,
-    .stream_p = &socket_stream_p,
+    .protocol = &socket_stream_p,
     .locals_dict = (mp_obj_t)&socket_locals_dict,
 };
 
diff --git a/cc3200/mods/modussl.c b/cc3200/mods/modussl.c
index 410588dd2..8342306bf 100644
--- a/cc3200/mods/modussl.c
+++ b/cc3200/mods/modussl.c
@@ -67,7 +67,7 @@ STATIC const mp_obj_type_t ssl_socket_type = {
     .name = MP_QSTR_ussl,
     .getiter = NULL,
     .iternext = NULL,
-    .stream_p = &socket_stream_p,
+    .protocol = &socket_stream_p,
     .locals_dict = (mp_obj_t)&socket_locals_dict,
 };
 
diff --git a/cc3200/mods/pybuart.c b/cc3200/mods/pybuart.c
index 87d89f02f..e7b5255bd 100644
--- a/cc3200/mods/pybuart.c
+++ b/cc3200/mods/pybuart.c
@@ -669,6 +669,6 @@ const mp_obj_type_t pyb_uart_type = {
     .make_new = pyb_uart_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &uart_stream_p,
+    .protocol = &uart_stream_p,
     .locals_dict = (mp_obj_t)&pyb_uart_locals_dict,
 };
diff --git a/esp8266/modpybuart.c b/esp8266/modpybuart.c
index 5971ffece..0cd4fbe5a 100644
--- a/esp8266/modpybuart.c
+++ b/esp8266/modpybuart.c
@@ -191,6 +191,6 @@ const mp_obj_type_t pyb_uart_type = {
     .make_new = pyb_uart_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &uart_stream_p,
+    .protocol = &uart_stream_p,
     .locals_dict = (mp_obj_dict_t*)&pyb_uart_locals_dict,
 };
diff --git a/extmod/modlwip.c b/extmod/modlwip.c
index cb7cc6596..dbee7c3d1 100644
--- a/extmod/modlwip.c
+++ b/extmod/modlwip.c
@@ -1148,7 +1148,7 @@ STATIC const mp_obj_type_t lwip_socket_type = {
     .name = MP_QSTR_socket,
     .print = lwip_socket_print,
     .make_new = lwip_socket_make_new,
-    .stream_p = &lwip_socket_stream_p,
+    .protocol = &lwip_socket_stream_p,
     .locals_dict = (mp_obj_t)&lwip_socket_locals_dict,
 };
 
diff --git a/extmod/modussl.c b/extmod/modussl.c
index 567033cf4..4a3e297e1 100644
--- a/extmod/modussl.c
+++ b/extmod/modussl.c
@@ -156,7 +156,7 @@ STATIC const mp_obj_type_t ussl_socket_type = {
     .print = socket_print,
     .getiter = NULL,
     .iternext = NULL,
-    .stream_p = &ussl_socket_stream_p,
+    .protocol = &ussl_socket_stream_p,
     .locals_dict = (void*)&ussl_socket_locals_dict,
 };
 
@@ -202,7 +202,8 @@ int mp_stream_errno;
 
 ssize_t mp_stream_posix_write(void *sock_obj, const void *buf, size_t len) {
     struct _mp_obj_base_t *o = (struct _mp_obj_base_t *)sock_obj;
-    mp_uint_t out_sz = o->type->stream_p->write(o, buf, len, &mp_stream_errno);
+    const mp_stream_p_t *stream_p = o->type->protocol;
+    mp_uint_t out_sz = stream_p->write(o, buf, len, &mp_stream_errno);
     if (out_sz == MP_STREAM_ERROR) {
         return -1;
     } else {
@@ -212,7 +213,8 @@ ssize_t mp_stream_posix_write(void *sock_obj, const void *buf, size_t len) {
 
 ssize_t mp_stream_posix_read(void *sock_obj, void *buf, size_t len) {
     struct _mp_obj_base_t *o = (struct _mp_obj_base_t *)sock_obj;
-    mp_uint_t out_sz = o->type->stream_p->read(o, buf, len, &mp_stream_errno);
+    const mp_stream_p_t *stream_p = o->type->protocol;
+    mp_uint_t out_sz = stream_p->read(o, buf, len, &mp_stream_errno);
     if (out_sz == MP_STREAM_ERROR) {
         return -1;
     } else {
diff --git a/extmod/modwebrepl.c b/extmod/modwebrepl.c
index 8ecab922a..407d8fbc2 100644
--- a/extmod/modwebrepl.c
+++ b/extmod/modwebrepl.c
@@ -317,7 +317,7 @@ STATIC const mp_obj_type_t webrepl_type = {
     { &mp_type_type },
     .name = MP_QSTR__webrepl,
     .make_new = webrepl_make_new,
-    .stream_p = &webrepl_stream_p,
+    .protocol = &webrepl_stream_p,
     .locals_dict = (mp_obj_t)&webrepl_locals_dict,
 };
 
diff --git a/extmod/modwebsocket.c b/extmod/modwebsocket.c
index fc5e29a05..468a2dc0e 100644
--- a/extmod/modwebsocket.c
+++ b/extmod/modwebsocket.c
@@ -298,7 +298,7 @@ STATIC const mp_obj_type_t websocket_type = {
     { &mp_type_type },
     .name = MP_QSTR_websocket,
     .make_new = websocket_make_new,
-    .stream_p = &websocket_stream_p,
+    .protocol = &websocket_stream_p,
     .locals_dict = (mp_obj_t)&websocket_locals_dict,
 };
 
diff --git a/extmod/vfs_fat_file.c b/extmod/vfs_fat_file.c
index 857cd1f47..0cd61e460 100644
--- a/extmod/vfs_fat_file.c
+++ b/extmod/vfs_fat_file.c
@@ -259,7 +259,7 @@ const mp_obj_type_t mp_type_fileio = {
     .make_new = file_obj_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &fileio_stream_p,
+    .protocol = &fileio_stream_p,
     .locals_dict = (mp_obj_dict_t*)&rawfile_locals_dict,
 };
 #endif
@@ -278,7 +278,7 @@ const mp_obj_type_t mp_type_textio = {
     .make_new = file_obj_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &textio_stream_p,
+    .protocol = &textio_stream_p,
     .locals_dict = (mp_obj_dict_t*)&rawfile_locals_dict,
 };
 
diff --git a/extmod/virtpin.c b/extmod/virtpin.c
index a5817ab4d..dbfa21d66 100644
--- a/extmod/virtpin.c
+++ b/extmod/virtpin.c
@@ -28,12 +28,12 @@
 
 int mp_virtual_pin_read(mp_obj_t pin) {
     mp_obj_base_t* s = (mp_obj_base_t*)MP_OBJ_TO_PTR(pin);
-    mp_pin_p_t *pin_p = (mp_pin_p_t*)s->type->stream_p;
+    mp_pin_p_t *pin_p = (mp_pin_p_t*)s->type->protocol;
     return pin_p->ioctl(pin, MP_PIN_READ, 0, NULL);
 }
 
 void mp_virtual_pin_write(mp_obj_t pin, int value) {
     mp_obj_base_t* s = (mp_obj_base_t*)MP_OBJ_TO_PTR(pin);
-    mp_pin_p_t *pin_p = (mp_pin_p_t*)s->type->stream_p;
+    mp_pin_p_t *pin_p = (mp_pin_p_t*)s->type->protocol;
     pin_p->ioctl(pin, MP_PIN_WRITE, value, NULL);
 }
diff --git a/py/modio.c b/py/modio.c
index 2fbe6bc1e..f8826c71a 100644
--- a/py/modio.c
+++ b/py/modio.c
@@ -124,7 +124,7 @@ STATIC const mp_obj_type_t bufwriter_type = {
     { &mp_type_type },
     .name = MP_QSTR_BufferedWriter,
     .make_new = bufwriter_make_new,
-    .stream_p = &bufwriter_stream_p,
+    .protocol = &bufwriter_stream_p,
     .locals_dict = (mp_obj_t)&bufwriter_locals_dict,
 };
 #endif // MICROPY_PY_IO_BUFFEREDWRITER
diff --git a/py/obj.h b/py/obj.h
index 83f0406ce..82abbac90 100644
--- a/py/obj.h
+++ b/py/obj.h
@@ -484,7 +484,8 @@ struct _mp_obj_type_t {
     mp_fun_1_t iternext; // may return MP_OBJ_STOP_ITERATION as an optimisation instead of raising StopIteration() (with no args)
 
     mp_buffer_p_t buffer_p;
-    const mp_stream_p_t *stream_p;
+    // One of disjoint protocols (interfaces), like mp_stream_p_t, etc.
+    const void *protocol;
 
     // these are for dynamically created types (classes)
     struct _mp_obj_tuple_t *bases_tuple;
diff --git a/py/objstringio.c b/py/objstringio.c
index 5fd2ca9d3..abd4e835e 100644
--- a/py/objstringio.c
+++ b/py/objstringio.c
@@ -174,7 +174,7 @@ const mp_obj_type_t mp_type_stringio = {
     .make_new = stringio_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &stringio_stream_p,
+    .protocol = &stringio_stream_p,
     .locals_dict = (mp_obj_dict_t*)&stringio_locals_dict,
 };
 
@@ -186,7 +186,7 @@ const mp_obj_type_t mp_type_bytesio = {
     .make_new = stringio_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &bytesio_stream_p,
+    .protocol = &bytesio_stream_p,
     .locals_dict = (mp_obj_dict_t*)&stringio_locals_dict,
 };
 #endif
diff --git a/py/stream.c b/py/stream.c
index ebdbe26b4..4fcc151dc 100644
--- a/py/stream.c
+++ b/py/stream.c
@@ -58,10 +58,11 @@ mp_uint_t mp_stream_rw(mp_obj_t stream, void *buf_, mp_uint_t size, int *errcode
     mp_obj_base_t* s = (mp_obj_base_t*)MP_OBJ_TO_PTR(stream);
     typedef mp_uint_t (*io_func_t)(mp_obj_t obj, void *buf, mp_uint_t size, int *errcode);
     io_func_t io_func;
+    const mp_stream_p_t *stream_p = s->type->protocol;
     if (flags & MP_STREAM_RW_WRITE) {
-        io_func = (io_func_t)s->type->stream_p->write;
+        io_func = (io_func_t)stream_p->write;
     } else {
-        io_func = s->type->stream_p->read;
+        io_func = stream_p->read;
     }
 
     *errcode = 0;
@@ -94,7 +95,7 @@ mp_uint_t mp_stream_rw(mp_obj_t stream, void *buf_, mp_uint_t size, int *errcode
 
 const mp_stream_p_t *mp_get_stream_raise(mp_obj_t self_in, int flags) {
     mp_obj_base_t *o = (mp_obj_base_t*)MP_OBJ_TO_PTR(self_in);
-    const mp_stream_p_t *stream_p = o->type->stream_p;
+    const mp_stream_p_t *stream_p = o->type->protocol;
     if (stream_p == NULL
         || ((flags & MP_STREAM_OP_READ) && stream_p->read == NULL)
         || ((flags & MP_STREAM_OP_WRITE) && stream_p->write == NULL)
diff --git a/stmhal/can.c b/stmhal/can.c
index 262c487f6..88d66b653 100644
--- a/stmhal/can.c
+++ b/stmhal/can.c
@@ -888,7 +888,7 @@ const mp_obj_type_t pyb_can_type = {
     .name = MP_QSTR_CAN,
     .print = pyb_can_print,
     .make_new = pyb_can_make_new,
-    .stream_p = &can_stream_p,
+    .protocol = &can_stream_p,
     .locals_dict = (mp_obj_t)&pyb_can_locals_dict,
 };
 
diff --git a/stmhal/moduselect.c b/stmhal/moduselect.c
index e87478ae6..92e77e6ca 100644
--- a/stmhal/moduselect.c
+++ b/stmhal/moduselect.c
@@ -53,12 +53,13 @@ STATIC void poll_map_add(mp_map_t *poll_map, const mp_obj_t *obj, mp_uint_t obj_
         if (elem->value == NULL) {
             // object not found; get its ioctl and add it to the poll list
             mp_obj_type_t *type = mp_obj_get_type(obj[i]);
-            if (type->stream_p == NULL || type->stream_p->ioctl == NULL) {
+            const mp_stream_p_t *stream_p = type->protocol;
+            if (stream_p == NULL || stream_p->ioctl == NULL) {
                 nlr_raise(mp_obj_new_exception_msg(&mp_type_TypeError, "object with stream.ioctl required"));
             }
             poll_obj_t *poll_obj = m_new_obj(poll_obj_t);
             poll_obj->obj = obj[i];
-            poll_obj->ioctl = type->stream_p->ioctl;
+            poll_obj->ioctl = stream_p->ioctl;
             poll_obj->flags = flags;
             poll_obj->flags_ret = 0;
             elem->value = poll_obj;
diff --git a/stmhal/modusocket.c b/stmhal/modusocket.c
index 9cc1f3314..fbd119644 100644
--- a/stmhal/modusocket.c
+++ b/stmhal/modusocket.c
@@ -376,7 +376,7 @@ STATIC const mp_obj_type_t socket_type = {
     { &mp_type_type },
     .name = MP_QSTR_socket,
     .make_new = socket_make_new,
-    .stream_p = &socket_stream_p,
+    .protocol = &socket_stream_p,
     .locals_dict = (mp_obj_t)&socket_locals_dict,
 };
 
diff --git a/stmhal/pybstdio.c b/stmhal/pybstdio.c
index 352b7c10c..cf31f53ac 100644
--- a/stmhal/pybstdio.c
+++ b/stmhal/pybstdio.c
@@ -123,7 +123,7 @@ STATIC const mp_obj_type_t stdio_obj_type = {
     .print = stdio_obj_print,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &stdio_obj_stream_p,
+    .protocol = &stdio_obj_stream_p,
     .locals_dict = (mp_obj_t)&stdio_locals_dict,
 };
 
@@ -156,7 +156,7 @@ STATIC const mp_obj_type_t stdio_buffer_obj_type = {
     .print = stdio_obj_print,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &stdio_buffer_obj_stream_p,
+    .protocol = &stdio_buffer_obj_stream_p,
     .locals_dict = (mp_obj_t)&stdio_locals_dict,
 };
 
diff --git a/stmhal/uart.c b/stmhal/uart.c
index 210330e81..cbcb7c059 100644
--- a/stmhal/uart.c
+++ b/stmhal/uart.c
@@ -933,6 +933,6 @@ const mp_obj_type_t pyb_uart_type = {
     .make_new = pyb_uart_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &uart_stream_p,
+    .protocol = &uart_stream_p,
     .locals_dict = (mp_obj_t)&pyb_uart_locals_dict,
 };
diff --git a/stmhal/usb.c b/stmhal/usb.c
index b786fb758..4ef6bfa50 100644
--- a/stmhal/usb.c
+++ b/stmhal/usb.c
@@ -530,7 +530,7 @@ const mp_obj_type_t pyb_usb_vcp_type = {
     .make_new = pyb_usb_vcp_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &pyb_usb_vcp_stream_p,
+    .protocol = &pyb_usb_vcp_stream_p,
     .locals_dict = (mp_obj_t)&pyb_usb_vcp_locals_dict,
 };
 
@@ -614,7 +614,7 @@ const mp_obj_type_t pyb_usb_hid_type = {
     { &mp_type_type },
     .name = MP_QSTR_USB_HID,
     .make_new = pyb_usb_hid_make_new,
-    .stream_p = &pyb_usb_hid_stream_p,
+    .protocol = &pyb_usb_hid_stream_p,
     .locals_dict = (mp_obj_t)&pyb_usb_hid_locals_dict,
 };
 
diff --git a/unix/file.c b/unix/file.c
index 33acdccd0..7a23572e1 100644
--- a/unix/file.c
+++ b/unix/file.c
@@ -242,7 +242,7 @@ const mp_obj_type_t mp_type_fileio = {
     .make_new = fdfile_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &fileio_stream_p,
+    .protocol = &fileio_stream_p,
     .locals_dict = (mp_obj_dict_t*)&rawfile_locals_dict,
 };
 #endif
@@ -261,7 +261,7 @@ const mp_obj_type_t mp_type_textio = {
     .make_new = fdfile_make_new,
     .getiter = mp_identity,
     .iternext = mp_stream_unbuffered_iter,
-    .stream_p = &textio_stream_p,
+    .protocol = &textio_stream_p,
     .locals_dict = (mp_obj_dict_t*)&rawfile_locals_dict,
 };
 
diff --git a/unix/modsocket.c b/unix/modsocket.c
index 8e0d86fc7..cd68b20a4 100644
--- a/unix/modsocket.c
+++ b/unix/modsocket.c
@@ -381,7 +381,7 @@ STATIC const mp_obj_type_t usocket_type = {
     .make_new = socket_make_new,
     .getiter = NULL,
     .iternext = NULL,
-    .stream_p = &usocket_stream_p,
+    .protocol = &usocket_stream_p,
     .locals_dict = (mp_obj_dict_t*)&usocket_locals_dict,
 };
 
-- 
GitLab