all: Remove the "STATIC" macro and just use "static" instead.
The STATIC macro was introduced a very long time ago in commit
d5df6cd44a. The original reason for this was
to have the option to define it to nothing so that all static functions
become global functions and therefore visible to certain debug tools, so
one could do function size comparison and other things.
This STATIC feature is rarely (if ever) used. And with the use of LTO and
heavy inline optimisation, analysing the size of individual functions when
they are not static is not a good representation of the size of code when
fully optimised.
So the macro does not have much use and it's simpler to just remove it.
Then you know exactly what it's doing. For example, newcomers don't have
to learn what the STATIC macro is and why it exists. Reading the code is
also less "loud" with a lowercase static.
One other minor point in favour of removing it, is that it stops bugs with
`STATIC inline`, which should always be `static inline`.
Methodology for this commit was:
1) git ls-files | egrep '\.[ch]$' | \
xargs sed -Ei "s/(^| )STATIC($| )/\1static\2/"
2) Do some manual cleanup in the diff by searching for the word STATIC in
comments and changing those back.
3) "git-grep STATIC docs/", manually fixed those cases.
4) "rg -t python STATIC", manually fixed codegen lines that used STATIC.
This work was funded through GitHub Sponsors.
Signed-off-by: Angus Gratton <angus@redyak.com.au>
This commit is contained in:
committed by
Damien George
parent
b3f2f18f92
commit
decf8e6a8b
@@ -83,7 +83,7 @@ typedef struct _socket_obj_t {
|
||||
#endif
|
||||
} socket_obj_t;
|
||||
|
||||
STATIC const char *TAG = "modsocket";
|
||||
static const char *TAG = "modsocket";
|
||||
|
||||
void _socket_settimeout(socket_obj_t *sock, uint64_t timeout_ms);
|
||||
|
||||
@@ -93,21 +93,21 @@ void _socket_settimeout(socket_obj_t *sock, uint64_t timeout_ms);
|
||||
// This divisor is used to reduce the load on the system, so it doesn't poll sockets too often
|
||||
#define USOCKET_EVENTS_DIVISOR (8)
|
||||
|
||||
STATIC uint8_t socket_events_divisor;
|
||||
STATIC socket_obj_t *socket_events_head;
|
||||
static uint8_t socket_events_divisor;
|
||||
static socket_obj_t *socket_events_head;
|
||||
|
||||
void socket_events_deinit(void) {
|
||||
socket_events_head = NULL;
|
||||
}
|
||||
|
||||
// Assumes the socket is not already in the linked list, and adds it
|
||||
STATIC void socket_events_add(socket_obj_t *sock) {
|
||||
static void socket_events_add(socket_obj_t *sock) {
|
||||
sock->events_next = socket_events_head;
|
||||
socket_events_head = sock;
|
||||
}
|
||||
|
||||
// Assumes the socket is already in the linked list, and removes it
|
||||
STATIC void socket_events_remove(socket_obj_t *sock) {
|
||||
static void socket_events_remove(socket_obj_t *sock) {
|
||||
for (socket_obj_t **s = &socket_events_head;; s = &(*s)->events_next) {
|
||||
if (*s == sock) {
|
||||
*s = (*s)->events_next;
|
||||
@@ -158,7 +158,7 @@ static inline void check_for_exceptions(void) {
|
||||
|
||||
#if MICROPY_HW_ENABLE_MDNS_QUERIES
|
||||
// This function mimics lwip_getaddrinfo, but makes an mDNS query
|
||||
STATIC int mdns_getaddrinfo(const char *host_str, const char *port_str,
|
||||
static int mdns_getaddrinfo(const char *host_str, const char *port_str,
|
||||
const struct addrinfo *hints, struct addrinfo **res) {
|
||||
int host_len = strlen(host_str);
|
||||
const int local_len = sizeof(MDNS_LOCAL_SUFFIX) - 1;
|
||||
@@ -261,13 +261,13 @@ static void _getaddrinfo_inner(const mp_obj_t host, const mp_obj_t portx,
|
||||
assert(retval == 0 && *res != NULL);
|
||||
}
|
||||
|
||||
STATIC void _socket_getaddrinfo(const mp_obj_t addrtuple, struct addrinfo **resp) {
|
||||
static void _socket_getaddrinfo(const mp_obj_t addrtuple, struct addrinfo **resp) {
|
||||
mp_obj_t *elem;
|
||||
mp_obj_get_array_fixed_n(addrtuple, 2, &elem);
|
||||
_getaddrinfo_inner(elem[0], elem[1], NULL, resp);
|
||||
}
|
||||
|
||||
STATIC mp_obj_t socket_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
static mp_obj_t socket_make_new(const mp_obj_type_t *type_in, size_t n_args, size_t n_kw, const mp_obj_t *args) {
|
||||
mp_arg_check_num(n_args, n_kw, 0, 3, false);
|
||||
|
||||
socket_obj_t *sock = mp_obj_malloc_with_finaliser(socket_obj_t, type_in);
|
||||
@@ -302,7 +302,7 @@ STATIC mp_obj_t socket_make_new(const mp_obj_type_t *type_in, size_t n_args, siz
|
||||
return MP_OBJ_FROM_PTR(sock);
|
||||
}
|
||||
|
||||
STATIC mp_obj_t socket_bind(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
static mp_obj_t socket_bind(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
|
||||
struct addrinfo *res;
|
||||
_socket_getaddrinfo(arg1, &res);
|
||||
@@ -314,10 +314,10 @@ STATIC mp_obj_t socket_bind(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_bind_obj, socket_bind);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_bind_obj, socket_bind);
|
||||
|
||||
// method socket.listen([backlog])
|
||||
STATIC mp_obj_t socket_listen(size_t n_args, const mp_obj_t *args) {
|
||||
static mp_obj_t socket_listen(size_t n_args, const mp_obj_t *args) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(args[0]);
|
||||
|
||||
int backlog = MICROPY_PY_SOCKET_LISTEN_BACKLOG_DEFAULT;
|
||||
@@ -333,9 +333,9 @@ STATIC mp_obj_t socket_listen(size_t n_args, const mp_obj_t *args) {
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_listen_obj, 1, 2, socket_listen);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_listen_obj, 1, 2, socket_listen);
|
||||
|
||||
STATIC mp_obj_t socket_accept(const mp_obj_t arg0) {
|
||||
static mp_obj_t socket_accept(const mp_obj_t arg0) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
|
||||
|
||||
struct sockaddr addr;
|
||||
@@ -380,9 +380,9 @@ STATIC mp_obj_t socket_accept(const mp_obj_t arg0) {
|
||||
|
||||
return client;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(socket_accept_obj, socket_accept);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_1(socket_accept_obj, socket_accept);
|
||||
|
||||
STATIC mp_obj_t socket_connect(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
static mp_obj_t socket_connect(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
|
||||
struct addrinfo *res;
|
||||
bool blocking = false;
|
||||
@@ -477,9 +477,9 @@ STATIC mp_obj_t socket_connect(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_connect_obj, socket_connect);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_connect_obj, socket_connect);
|
||||
|
||||
STATIC mp_obj_t socket_setsockopt(size_t n_args, const mp_obj_t *args) {
|
||||
static mp_obj_t socket_setsockopt(size_t n_args, const mp_obj_t *args) {
|
||||
(void)n_args; // always 4
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(args[0]);
|
||||
|
||||
@@ -550,7 +550,7 @@ STATIC mp_obj_t socket_setsockopt(size_t n_args, const mp_obj_t *args) {
|
||||
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_setsockopt_obj, 4, 4, socket_setsockopt);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_setsockopt_obj, 4, 4, socket_setsockopt);
|
||||
|
||||
void _socket_settimeout(socket_obj_t *sock, uint64_t timeout_ms) {
|
||||
// Rather than waiting for the entire timeout specified, we wait sock->retries times
|
||||
@@ -568,7 +568,7 @@ void _socket_settimeout(socket_obj_t *sock, uint64_t timeout_ms) {
|
||||
lwip_fcntl(sock->fd, F_SETFL, timeout_ms ? 0 : O_NONBLOCK);
|
||||
}
|
||||
|
||||
STATIC mp_obj_t socket_settimeout(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
static mp_obj_t socket_settimeout(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
|
||||
if (arg1 == mp_const_none) {
|
||||
_socket_settimeout(self, UINT64_MAX);
|
||||
@@ -581,9 +581,9 @@ STATIC mp_obj_t socket_settimeout(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_settimeout_obj, socket_settimeout);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_settimeout_obj, socket_settimeout);
|
||||
|
||||
STATIC mp_obj_t socket_setblocking(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
static mp_obj_t socket_setblocking(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
|
||||
if (mp_obj_is_true(arg1)) {
|
||||
_socket_settimeout(self, UINT64_MAX);
|
||||
@@ -592,12 +592,12 @@ STATIC mp_obj_t socket_setblocking(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_setblocking_obj, socket_setblocking);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_setblocking_obj, socket_setblocking);
|
||||
|
||||
// XXX this can end up waiting a very long time if the content is dribbled in one character
|
||||
// at a time, as the timeout resets each time a recvfrom succeeds ... this is probably not
|
||||
// good behaviour.
|
||||
STATIC mp_uint_t _socket_read_data(mp_obj_t self_in, void *buf, size_t size,
|
||||
static mp_uint_t _socket_read_data(mp_obj_t self_in, void *buf, size_t size,
|
||||
struct sockaddr *from, socklen_t *from_len, int *errcode) {
|
||||
socket_obj_t *sock = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
@@ -668,12 +668,12 @@ mp_obj_t _socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in,
|
||||
return mp_obj_new_bytes_from_vstr(&vstr);
|
||||
}
|
||||
|
||||
STATIC mp_obj_t socket_recv(mp_obj_t self_in, mp_obj_t len_in) {
|
||||
static mp_obj_t socket_recv(mp_obj_t self_in, mp_obj_t len_in) {
|
||||
return _socket_recvfrom(self_in, len_in, NULL, NULL);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_recv_obj, socket_recv);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_recv_obj, socket_recv);
|
||||
|
||||
STATIC mp_obj_t socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) {
|
||||
static mp_obj_t socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) {
|
||||
struct sockaddr from;
|
||||
socklen_t fromlen = sizeof(from);
|
||||
|
||||
@@ -686,7 +686,7 @@ STATIC mp_obj_t socket_recvfrom(mp_obj_t self_in, mp_obj_t len_in) {
|
||||
|
||||
return mp_obj_new_tuple(2, tuple);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_recvfrom_obj, socket_recvfrom);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_recvfrom_obj, socket_recvfrom);
|
||||
|
||||
int _socket_send(socket_obj_t *sock, const char *data, size_t datalen) {
|
||||
int sentlen = 0;
|
||||
@@ -709,16 +709,16 @@ int _socket_send(socket_obj_t *sock, const char *data, size_t datalen) {
|
||||
return sentlen;
|
||||
}
|
||||
|
||||
STATIC mp_obj_t socket_send(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
static mp_obj_t socket_send(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
socket_obj_t *sock = MP_OBJ_TO_PTR(arg0);
|
||||
mp_buffer_info_t bufinfo;
|
||||
mp_get_buffer_raise(arg1, &bufinfo, MP_BUFFER_READ);
|
||||
int r = _socket_send(sock, bufinfo.buf, bufinfo.len);
|
||||
return mp_obj_new_int(r);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_send_obj, socket_send);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_send_obj, socket_send);
|
||||
|
||||
STATIC mp_obj_t socket_sendall(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
static mp_obj_t socket_sendall(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
// XXX behaviour when nonblocking (see extmod/modlwip.c)
|
||||
// XXX also timeout behaviour.
|
||||
socket_obj_t *sock = MP_OBJ_TO_PTR(arg0);
|
||||
@@ -730,9 +730,9 @@ STATIC mp_obj_t socket_sendall(const mp_obj_t arg0, const mp_obj_t arg1) {
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_2(socket_sendall_obj, socket_sendall);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_2(socket_sendall_obj, socket_sendall);
|
||||
|
||||
STATIC mp_obj_t socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t addr_in) {
|
||||
static mp_obj_t socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t addr_in) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(self_in);
|
||||
|
||||
// get the buffer to send
|
||||
@@ -760,25 +760,25 @@ STATIC mp_obj_t socket_sendto(mp_obj_t self_in, mp_obj_t data_in, mp_obj_t addr_
|
||||
}
|
||||
mp_raise_OSError(MP_ETIMEDOUT);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_3(socket_sendto_obj, socket_sendto);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_3(socket_sendto_obj, socket_sendto);
|
||||
|
||||
STATIC mp_obj_t socket_fileno(const mp_obj_t arg0) {
|
||||
static mp_obj_t socket_fileno(const mp_obj_t arg0) {
|
||||
socket_obj_t *self = MP_OBJ_TO_PTR(arg0);
|
||||
return mp_obj_new_int(self->fd);
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(socket_fileno_obj, socket_fileno);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_1(socket_fileno_obj, socket_fileno);
|
||||
|
||||
STATIC mp_obj_t socket_makefile(size_t n_args, const mp_obj_t *args) {
|
||||
static mp_obj_t socket_makefile(size_t n_args, const mp_obj_t *args) {
|
||||
(void)n_args;
|
||||
return args[0];
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_makefile_obj, 1, 3, socket_makefile);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(socket_makefile_obj, 1, 3, socket_makefile);
|
||||
|
||||
STATIC mp_uint_t socket_stream_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
|
||||
static mp_uint_t socket_stream_read(mp_obj_t self_in, void *buf, mp_uint_t size, int *errcode) {
|
||||
return _socket_read_data(self_in, buf, size, NULL, NULL, errcode);
|
||||
}
|
||||
|
||||
STATIC mp_uint_t socket_stream_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errcode) {
|
||||
static mp_uint_t socket_stream_write(mp_obj_t self_in, const void *buf, mp_uint_t size, int *errcode) {
|
||||
socket_obj_t *sock = self_in;
|
||||
for (int i = 0; i <= sock->retries; i++) {
|
||||
MP_THREAD_GIL_EXIT();
|
||||
@@ -798,7 +798,7 @@ STATIC mp_uint_t socket_stream_write(mp_obj_t self_in, const void *buf, mp_uint_
|
||||
return MP_STREAM_ERROR;
|
||||
}
|
||||
|
||||
STATIC mp_uint_t socket_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) {
|
||||
static mp_uint_t socket_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintptr_t arg, int *errcode) {
|
||||
socket_obj_t *socket = self_in;
|
||||
if (request == MP_STREAM_POLL) {
|
||||
if (socket->fd == -1) {
|
||||
@@ -867,7 +867,7 @@ STATIC mp_uint_t socket_stream_ioctl(mp_obj_t self_in, mp_uint_t request, uintpt
|
||||
return MP_STREAM_ERROR;
|
||||
}
|
||||
|
||||
STATIC const mp_rom_map_elem_t socket_locals_dict_table[] = {
|
||||
static const mp_rom_map_elem_t socket_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___del__), MP_ROM_PTR(&mp_stream_close_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_close), MP_ROM_PTR(&mp_stream_close_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_bind), MP_ROM_PTR(&socket_bind_obj) },
|
||||
@@ -890,15 +890,15 @@ STATIC const mp_rom_map_elem_t socket_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_readline), MP_ROM_PTR(&mp_stream_unbuffered_readline_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_write), MP_ROM_PTR(&mp_stream_write_obj) },
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(socket_locals_dict, socket_locals_dict_table);
|
||||
static MP_DEFINE_CONST_DICT(socket_locals_dict, socket_locals_dict_table);
|
||||
|
||||
STATIC const mp_stream_p_t socket_stream_p = {
|
||||
static const mp_stream_p_t socket_stream_p = {
|
||||
.read = socket_stream_read,
|
||||
.write = socket_stream_write,
|
||||
.ioctl = socket_stream_ioctl
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_OBJ_TYPE(
|
||||
static MP_DEFINE_CONST_OBJ_TYPE(
|
||||
socket_type,
|
||||
MP_QSTR_socket,
|
||||
MP_TYPE_FLAG_NONE,
|
||||
@@ -907,7 +907,7 @@ STATIC MP_DEFINE_CONST_OBJ_TYPE(
|
||||
locals_dict, &socket_locals_dict
|
||||
);
|
||||
|
||||
STATIC mp_obj_t esp_socket_getaddrinfo(size_t n_args, const mp_obj_t *args) {
|
||||
static mp_obj_t esp_socket_getaddrinfo(size_t n_args, const mp_obj_t *args) {
|
||||
struct addrinfo hints = { };
|
||||
struct addrinfo *res = NULL;
|
||||
|
||||
@@ -963,9 +963,9 @@ STATIC mp_obj_t esp_socket_getaddrinfo(size_t n_args, const mp_obj_t *args) {
|
||||
lwip_freeaddrinfo(res);
|
||||
return ret_list;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_socket_getaddrinfo_obj, 2, 6, esp_socket_getaddrinfo);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(esp_socket_getaddrinfo_obj, 2, 6, esp_socket_getaddrinfo);
|
||||
|
||||
STATIC mp_obj_t esp_socket_initialize() {
|
||||
static mp_obj_t esp_socket_initialize() {
|
||||
static int initialized = 0;
|
||||
if (!initialized) {
|
||||
ESP_LOGI(TAG, "Initializing");
|
||||
@@ -974,9 +974,9 @@ STATIC mp_obj_t esp_socket_initialize() {
|
||||
}
|
||||
return mp_const_none;
|
||||
}
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_0(esp_socket_initialize_obj, esp_socket_initialize);
|
||||
static MP_DEFINE_CONST_FUN_OBJ_0(esp_socket_initialize_obj, esp_socket_initialize);
|
||||
|
||||
STATIC const mp_rom_map_elem_t mp_module_socket_globals_table[] = {
|
||||
static const mp_rom_map_elem_t mp_module_socket_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_socket) },
|
||||
{ MP_ROM_QSTR(MP_QSTR___init__), MP_ROM_PTR(&esp_socket_initialize_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_socket), MP_ROM_PTR(&socket_type) },
|
||||
@@ -997,7 +997,7 @@ STATIC const mp_rom_map_elem_t mp_module_socket_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_IP_ADD_MEMBERSHIP), MP_ROM_INT(IP_ADD_MEMBERSHIP) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(mp_module_socket_globals, mp_module_socket_globals_table);
|
||||
static MP_DEFINE_CONST_DICT(mp_module_socket_globals, mp_module_socket_globals_table);
|
||||
|
||||
const mp_obj_module_t mp_module_socket = {
|
||||
.base = { &mp_type_module },
|
||||
|
||||
Reference in New Issue
Block a user