From: Christian Heller Date: Thu, 23 Jan 2014 05:27:32 +0000 (+0100) Subject: Optimized WinConf / WinConfDB structure, removed redundant .draw. X-Git-Tag: tce~870 X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdb.prefix%7D%7D/static/blog?a=commitdiff_plain;h=96ec154837699bd8687d1067deec4f6e593d99c9;p=plomrogue Optimized WinConf / WinConfDB structure, removed redundant .draw. --- diff --git a/src/client/wincontrol.c b/src/client/wincontrol.c index 275fc9c..fcf3e86 100644 --- a/src/client/wincontrol.c +++ b/src/client/wincontrol.c @@ -124,7 +124,7 @@ extern void init_win_from_winconf(char id) { char * err = "get_drawfunc_by_char() returns NULL to init_win_from_file()."; struct WinConf * winconf = get_winconf_by_id(id); - void * f = get_drawfunc_by_char(winconf->draw); + void * f = get_drawfunc_by_char(winconf->id); exit_err(NULL == f, err); init_win(&winconf->win, winconf->title, winconf->height, winconf->width, f); } @@ -179,7 +179,6 @@ extern uint8_t read_winconf_from_file(char * line, uint32_t linemax, FILE * file } struct WinConf winconf; winconf.id = (char) test; - winconf.draw = winconf.id; try_fgetc(file, f_name); try_fgets(line, linemax + 1, file, f_name); winconf.title = try_malloc(strlen(line), f_name); @@ -233,7 +232,7 @@ extern void write_winconf_of_id_to_file(FILE * file, char c, char * delim) size = 7; } char line[size]; - sprintf(line, "%c\n", wc->draw); + sprintf(line, "%c\n", wc->id); try_fwrite(line, sizeof(char), strlen(line), file, f_name); sprintf(line, "%s\n", wc->title); try_fwrite(line, sizeof(char), strlen(line), file, f_name); @@ -387,7 +386,7 @@ extern void toggle_winconfig() else { wcp->view = 0; - win->draw = get_drawfunc_by_char(wcp->draw); + win->draw = get_drawfunc_by_char(wcp->id); win->center = wcp->center; } } diff --git a/src/client/wincontrol.h b/src/client/wincontrol.h index 67c72bc..8290379 100644 --- a/src/client/wincontrol.h +++ b/src/client/wincontrol.h @@ -18,29 +18,24 @@ struct WinConfDB { struct WinConf * winconfs; char * ids; - char active; /* id of window selected as active */ char * order; /* order of visible windows (identified by IDs) */ + char active; /* id of window selected as active */ }; -/* Stores a window's configuration (like geometry, keybindings) and a pointer to - * the respective Win struct itself. - */ +/* Window's configuration (like geometry, keybindings) and the Win itself. */ struct WinConf { - char id; /* Unique identifier of WinConf, doubles aas identifier for .win */ - /* and the char following "Win_" in the respective conffile name.*/ struct Win * win; /* Window / Win struct configured by this WinConf. */ struct KeyBindingDB kb; /* Window-specific keybindings. */ - uint8_t view; /* 0: use .draw as Win.draw; 1/2: use draw_winconf()_(1/2). */ + struct yx_uint16 center; /* Designated Win.center */ int16_t height; /* Designated height to pass to init_win(). */ int16_t width; /* Designated width to pass to init_win(). */ uint8_t height_type; /* 0: read .height/.width as size in positive cells; */ uint8_t width_type; /* 1: as negative diff in cells to the screen size. */ + uint8_t view; /* 0: use .draw as Win.draw; 1/2: use draw_winconf()_(1/2). */ + char id; /* Identifier of WinConf, also identifies Win.draw function. */ char * title; /* Designated title to pass to init_win(). */ - char draw; /* Identifier of designated Win.draw; passed to init_win() */ - /* and reset after toggling Win.draw via toggle_winconf(). */ - struct yx_uint16 center; /* Designated Win.center; to be reset after */ -}; /* toggling Win.center via toggle_winconf(). */ +};