Improve map module: Refactor into a macro library

The map_* declarations and definitions are now created by a macro invocation
with a key type parameter. Also refactored server module to use the updated
version.
This commit is contained in:
Thiago de Arruda
2014-05-19 10:52:10 -03:00
parent 974eade1a6
commit 37dfe2d48f
4 changed files with 96 additions and 115 deletions

View File

@@ -43,7 +43,7 @@ typedef struct {
} socket;
} Server;
static Map *servers = NULL;
static Map(cstr_t) *servers = NULL;
static void connection_cb(uv_stream_t *server, int status);
static void free_client(uv_handle_t *handle);
@@ -51,7 +51,7 @@ static void free_server(uv_handle_t *handle);
void server_init()
{
servers = map_new();
servers = map_new(cstr_t)();
if (!os_getenv("NEOVIM_LISTEN_ADDRESS")) {
char *listen_address = (char *)vim_tempname('s');
@@ -88,7 +88,7 @@ void server_start(char *endpoint, ChannelProtocol prot)
strncpy(addr, endpoint, sizeof(addr));
// Check if the server already exists
if (map_has(servers, addr)) {
if (map_has(cstr_t)(servers, addr)) {
EMSG2("Already listening on %s", addr);
return;
}
@@ -174,7 +174,7 @@ void server_start(char *endpoint, ChannelProtocol prot)
server->type = server_type;
// Add the server to the hash table
map_put(servers, addr, server);
map_put(cstr_t)(servers, addr, server);
}
void server_stop(char *endpoint)
@@ -185,7 +185,7 @@ void server_stop(char *endpoint)
// Trim to `ADDRESS_MAX_SIZE`
strncpy(addr, endpoint, sizeof(addr));
if ((server = map_get(servers, addr)) == NULL) {
if ((server = map_get(cstr_t)(servers, addr)) == NULL) {
EMSG2("Not listening on %s", addr);
return;
}
@@ -196,7 +196,7 @@ void server_stop(char *endpoint)
uv_close((uv_handle_t *)&server->socket.pipe.handle, free_server);
}
map_del(servers, addr);
map_del(cstr_t)(servers, addr);
}
static void connection_cb(uv_stream_t *server, int status)