#include #include static socket_t *(*createsocket[])() = { udp_createsocket }; socket_t *socket_create(int type) { __assert(type < sizeof(createsocket) / sizeof(createsocket[0])); socket_t *socket = createsocket[type](); if (socket == NULL) return NULL; POLL_INITHEADER(&socket->pollheader); return socket; }