summaryrefslogtreecommitdiffstatshomepage
path: root/unix/socket.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-25 20:13:17 +0200
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-01-26 02:03:07 +0200
commitdb0b282d4566334fbffa4f18555d628a4f95ac78 (patch)
tree710e6cdbe1ce75c049b1e35098fc65748aa08bb7 /unix/socket.c
parent8fcf7b858d28acb098ca4ee85860ca4ed88f0207 (diff)
downloadmicropython-db0b282d4566334fbffa4f18555d628a4f95ac78.tar.gz
micropython-db0b282d4566334fbffa4f18555d628a4f95ac78.zip
unix socket: Store module constants in data structure.
-147 bytes on x86.
Diffstat (limited to 'unix/socket.c')
-rw-r--r--unix/socket.c25
1 files 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));
+ }
}