From db0b282d4566334fbffa4f18555d628a4f95ac78 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sat, 25 Jan 2014 20:13:17 +0200 Subject: [PATCH] unix socket: Store module constants in data structure. -147 bytes on x86. --- unix/socket.c | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/unix/socket.c b/unix/socket.c index 36b848468c..ab0284c071 100644 --- a/unix/socket.c +++ b/unix/socket.c @@ -299,7 +299,21 @@ static MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mod_socket_getaddrinfo_obj, 2, 6, mod extern mp_obj_type_t sockaddr_in_type; -#define STORE_INT_CONST(m, name) rt_store_attr(m, QSTR_FROM_STR_STATIC(#name), MP_OBJ_NEW_SMALL_INT(name)) +#define C(name) { #name, name } + +struct sym_entry { + const char *sym; + int val; +} constants[] = { + C(AF_UNIX), + C(AF_INET), + C(AF_INET6), + C(SOCK_STREAM), + C(SOCK_DGRAM), + C(SOCK_RAW), +}; + +#undef C void rawsocket_init() { mp_obj_t m = mp_obj_new_module(MP_QSTR_rawsocket); @@ -311,10 +325,7 @@ void rawsocket_init() { rt_store_attr(m, MP_QSTR_gethostbyname, (mp_obj_t)&mod_socket_gethostbyname_obj); #endif rt_store_attr(m, MP_QSTR_getaddrinfo, (mp_obj_t)&mod_socket_getaddrinfo_obj); - STORE_INT_CONST(m, AF_UNIX); - STORE_INT_CONST(m, AF_INET); - STORE_INT_CONST(m, AF_INET6); - STORE_INT_CONST(m, SOCK_STREAM); - STORE_INT_CONST(m, SOCK_DGRAM); - STORE_INT_CONST(m, SOCK_RAW); + for (struct sym_entry *p = constants; p->sym != NULL; p++) { + rt_store_attr(m, QSTR_FROM_STR_STATIC(p->sym), MP_OBJ_NEW_SMALL_INT(p->val)); + } }