Various changes to reduce fish's compiled code size

OS X release build executable size dropped from 672k to 511k
This commit is contained in:
ridiculousfish
2012-07-17 12:47:01 -07:00
parent 977a4477f6
commit d06d6c6964
17 changed files with 323 additions and 273 deletions

312
input.cpp
View File

@@ -224,14 +224,7 @@ static std::vector<input_mapping_t> mapping_list;
/* Terminfo map list */
static std::vector<terminfo_mapping_t> terminfo_mappings;
/** Add a new terminfo mapping */
static inline void terminfo_add(const wchar_t *name, const char *seq)
{
terminfo_mapping_t mapping = {name, seq};
terminfo_mappings.push_back(mapping);
}
#define TERMINFO_ADD(key) do { terminfo_add((L ## #key)+4, key); } while (0)
#define TERMINFO_ADD(key) { (L ## #key) + 4, key }
/**
@@ -614,52 +607,53 @@ bool input_mapping_get( const wcstring &sequence, wcstring &cmd )
*/
static void input_terminfo_init()
{
TERMINFO_ADD(key_a1);
TERMINFO_ADD(key_a3);
TERMINFO_ADD(key_b2);
TERMINFO_ADD(key_backspace);
TERMINFO_ADD(key_beg);
TERMINFO_ADD(key_btab);
TERMINFO_ADD(key_c1);
TERMINFO_ADD(key_c3);
TERMINFO_ADD(key_cancel);
TERMINFO_ADD(key_catab);
TERMINFO_ADD(key_clear);
TERMINFO_ADD(key_close);
TERMINFO_ADD(key_command);
TERMINFO_ADD(key_copy);
TERMINFO_ADD(key_create);
TERMINFO_ADD(key_ctab);
TERMINFO_ADD(key_dc);
TERMINFO_ADD(key_dl);
TERMINFO_ADD(key_down);
TERMINFO_ADD(key_eic);
TERMINFO_ADD(key_end);
TERMINFO_ADD(key_enter);
TERMINFO_ADD(key_eol);
TERMINFO_ADD(key_eos);
TERMINFO_ADD(key_exit);
TERMINFO_ADD(key_f0);
TERMINFO_ADD(key_f1);
TERMINFO_ADD(key_f2);
TERMINFO_ADD(key_f3);
TERMINFO_ADD(key_f4);
TERMINFO_ADD(key_f5);
TERMINFO_ADD(key_f6);
TERMINFO_ADD(key_f7);
TERMINFO_ADD(key_f8);
TERMINFO_ADD(key_f9);
TERMINFO_ADD(key_f10);
TERMINFO_ADD(key_f11);
TERMINFO_ADD(key_f12);
TERMINFO_ADD(key_f13);
TERMINFO_ADD(key_f14);
TERMINFO_ADD(key_f15);
TERMINFO_ADD(key_f16);
TERMINFO_ADD(key_f17);
TERMINFO_ADD(key_f18);
TERMINFO_ADD(key_f19);
TERMINFO_ADD(key_f20);
const terminfo_mapping_t tinfos[] = {
TERMINFO_ADD(key_a1),
TERMINFO_ADD(key_a3),
TERMINFO_ADD(key_b2),
TERMINFO_ADD(key_backspace),
TERMINFO_ADD(key_beg),
TERMINFO_ADD(key_btab),
TERMINFO_ADD(key_c1),
TERMINFO_ADD(key_c3),
TERMINFO_ADD(key_cancel),
TERMINFO_ADD(key_catab),
TERMINFO_ADD(key_clear),
TERMINFO_ADD(key_close),
TERMINFO_ADD(key_command),
TERMINFO_ADD(key_copy),
TERMINFO_ADD(key_create),
TERMINFO_ADD(key_ctab),
TERMINFO_ADD(key_dc),
TERMINFO_ADD(key_dl),
TERMINFO_ADD(key_down),
TERMINFO_ADD(key_eic),
TERMINFO_ADD(key_end),
TERMINFO_ADD(key_enter),
TERMINFO_ADD(key_eol),
TERMINFO_ADD(key_eos),
TERMINFO_ADD(key_exit),
TERMINFO_ADD(key_f0),
TERMINFO_ADD(key_f1),
TERMINFO_ADD(key_f2),
TERMINFO_ADD(key_f3),
TERMINFO_ADD(key_f4),
TERMINFO_ADD(key_f5),
TERMINFO_ADD(key_f6),
TERMINFO_ADD(key_f7),
TERMINFO_ADD(key_f8),
TERMINFO_ADD(key_f9),
TERMINFO_ADD(key_f10),
TERMINFO_ADD(key_f11),
TERMINFO_ADD(key_f12),
TERMINFO_ADD(key_f13),
TERMINFO_ADD(key_f14),
TERMINFO_ADD(key_f15),
TERMINFO_ADD(key_f16),
TERMINFO_ADD(key_f17),
TERMINFO_ADD(key_f18),
TERMINFO_ADD(key_f19),
TERMINFO_ADD(key_f20),
/*
I know of no keyboard with more than 20 function keys, so
adding the rest here makes very little sense, since it will
@@ -667,109 +661,113 @@ static void input_terminfo_init()
but with no benefit.
*/
/*
TERMINFO_ADD(key_f21);
TERMINFO_ADD(key_f22);
TERMINFO_ADD(key_f23);
TERMINFO_ADD(key_f24);
TERMINFO_ADD(key_f25);
TERMINFO_ADD(key_f26);
TERMINFO_ADD(key_f27);
TERMINFO_ADD(key_f28);
TERMINFO_ADD(key_f29);
TERMINFO_ADD(key_f30);
TERMINFO_ADD(key_f31);
TERMINFO_ADD(key_f32);
TERMINFO_ADD(key_f33);
TERMINFO_ADD(key_f34);
TERMINFO_ADD(key_f35);
TERMINFO_ADD(key_f36);
TERMINFO_ADD(key_f37);
TERMINFO_ADD(key_f38);
TERMINFO_ADD(key_f39);
TERMINFO_ADD(key_f40);
TERMINFO_ADD(key_f41);
TERMINFO_ADD(key_f42);
TERMINFO_ADD(key_f43);
TERMINFO_ADD(key_f44);
TERMINFO_ADD(key_f45);
TERMINFO_ADD(key_f46);
TERMINFO_ADD(key_f47);
TERMINFO_ADD(key_f48);
TERMINFO_ADD(key_f49);
TERMINFO_ADD(key_f50);
TERMINFO_ADD(key_f51);
TERMINFO_ADD(key_f52);
TERMINFO_ADD(key_f53);
TERMINFO_ADD(key_f54);
TERMINFO_ADD(key_f55);
TERMINFO_ADD(key_f56);
TERMINFO_ADD(key_f57);
TERMINFO_ADD(key_f58);
TERMINFO_ADD(key_f59);
TERMINFO_ADD(key_f60);
TERMINFO_ADD(key_f61);
TERMINFO_ADD(key_f62);
TERMINFO_ADD(key_f63);*/
TERMINFO_ADD(key_find);
TERMINFO_ADD(key_help);
TERMINFO_ADD(key_home);
TERMINFO_ADD(key_ic);
TERMINFO_ADD(key_il);
TERMINFO_ADD(key_left);
TERMINFO_ADD(key_ll);
TERMINFO_ADD(key_mark);
TERMINFO_ADD(key_message);
TERMINFO_ADD(key_move);
TERMINFO_ADD(key_next);
TERMINFO_ADD(key_npage);
TERMINFO_ADD(key_open);
TERMINFO_ADD(key_options);
TERMINFO_ADD(key_ppage);
TERMINFO_ADD(key_previous);
TERMINFO_ADD(key_print);
TERMINFO_ADD(key_redo);
TERMINFO_ADD(key_reference);
TERMINFO_ADD(key_refresh);
TERMINFO_ADD(key_replace);
TERMINFO_ADD(key_restart);
TERMINFO_ADD(key_resume);
TERMINFO_ADD(key_right);
TERMINFO_ADD(key_save);
TERMINFO_ADD(key_sbeg);
TERMINFO_ADD(key_scancel);
TERMINFO_ADD(key_scommand);
TERMINFO_ADD(key_scopy);
TERMINFO_ADD(key_screate);
TERMINFO_ADD(key_sdc);
TERMINFO_ADD(key_sdl);
TERMINFO_ADD(key_select);
TERMINFO_ADD(key_send);
TERMINFO_ADD(key_seol);
TERMINFO_ADD(key_sexit);
TERMINFO_ADD(key_sf);
TERMINFO_ADD(key_sfind);
TERMINFO_ADD(key_shelp);
TERMINFO_ADD(key_shome);
TERMINFO_ADD(key_sic);
TERMINFO_ADD(key_sleft);
TERMINFO_ADD(key_smessage);
TERMINFO_ADD(key_smove);
TERMINFO_ADD(key_snext);
TERMINFO_ADD(key_soptions);
TERMINFO_ADD(key_sprevious);
TERMINFO_ADD(key_sprint);
TERMINFO_ADD(key_sr);
TERMINFO_ADD(key_sredo);
TERMINFO_ADD(key_sreplace);
TERMINFO_ADD(key_sright);
TERMINFO_ADD(key_srsume);
TERMINFO_ADD(key_ssave);
TERMINFO_ADD(key_ssuspend);
TERMINFO_ADD(key_stab);
TERMINFO_ADD(key_sundo);
TERMINFO_ADD(key_suspend);
TERMINFO_ADD(key_undo);
TERMINFO_ADD(key_up);
TERMINFO_ADD(key_f21),
TERMINFO_ADD(key_f22),
TERMINFO_ADD(key_f23),
TERMINFO_ADD(key_f24),
TERMINFO_ADD(key_f25),
TERMINFO_ADD(key_f26),
TERMINFO_ADD(key_f27),
TERMINFO_ADD(key_f28),
TERMINFO_ADD(key_f29),
TERMINFO_ADD(key_f30),
TERMINFO_ADD(key_f31),
TERMINFO_ADD(key_f32),
TERMINFO_ADD(key_f33),
TERMINFO_ADD(key_f34),
TERMINFO_ADD(key_f35),
TERMINFO_ADD(key_f36),
TERMINFO_ADD(key_f37),
TERMINFO_ADD(key_f38),
TERMINFO_ADD(key_f39),
TERMINFO_ADD(key_f40),
TERMINFO_ADD(key_f41),
TERMINFO_ADD(key_f42),
TERMINFO_ADD(key_f43),
TERMINFO_ADD(key_f44),
TERMINFO_ADD(key_f45),
TERMINFO_ADD(key_f46),
TERMINFO_ADD(key_f47),
TERMINFO_ADD(key_f48),
TERMINFO_ADD(key_f49),
TERMINFO_ADD(key_f50),
TERMINFO_ADD(key_f51),
TERMINFO_ADD(key_f52),
TERMINFO_ADD(key_f53),
TERMINFO_ADD(key_f54),
TERMINFO_ADD(key_f55),
TERMINFO_ADD(key_f56),
TERMINFO_ADD(key_f57),
TERMINFO_ADD(key_f58),
TERMINFO_ADD(key_f59),
TERMINFO_ADD(key_f60),
TERMINFO_ADD(key_f61),
TERMINFO_ADD(key_f62),
TERMINFO_ADD(key_f63),*/
TERMINFO_ADD(key_find),
TERMINFO_ADD(key_help),
TERMINFO_ADD(key_home),
TERMINFO_ADD(key_ic),
TERMINFO_ADD(key_il),
TERMINFO_ADD(key_left),
TERMINFO_ADD(key_ll),
TERMINFO_ADD(key_mark),
TERMINFO_ADD(key_message),
TERMINFO_ADD(key_move),
TERMINFO_ADD(key_next),
TERMINFO_ADD(key_npage),
TERMINFO_ADD(key_open),
TERMINFO_ADD(key_options),
TERMINFO_ADD(key_ppage),
TERMINFO_ADD(key_previous),
TERMINFO_ADD(key_print),
TERMINFO_ADD(key_redo),
TERMINFO_ADD(key_reference),
TERMINFO_ADD(key_refresh),
TERMINFO_ADD(key_replace),
TERMINFO_ADD(key_restart),
TERMINFO_ADD(key_resume),
TERMINFO_ADD(key_right),
TERMINFO_ADD(key_save),
TERMINFO_ADD(key_sbeg),
TERMINFO_ADD(key_scancel),
TERMINFO_ADD(key_scommand),
TERMINFO_ADD(key_scopy),
TERMINFO_ADD(key_screate),
TERMINFO_ADD(key_sdc),
TERMINFO_ADD(key_sdl),
TERMINFO_ADD(key_select),
TERMINFO_ADD(key_send),
TERMINFO_ADD(key_seol),
TERMINFO_ADD(key_sexit),
TERMINFO_ADD(key_sf),
TERMINFO_ADD(key_sfind),
TERMINFO_ADD(key_shelp),
TERMINFO_ADD(key_shome),
TERMINFO_ADD(key_sic),
TERMINFO_ADD(key_sleft),
TERMINFO_ADD(key_smessage),
TERMINFO_ADD(key_smove),
TERMINFO_ADD(key_snext),
TERMINFO_ADD(key_soptions),
TERMINFO_ADD(key_sprevious),
TERMINFO_ADD(key_sprint),
TERMINFO_ADD(key_sr),
TERMINFO_ADD(key_sredo),
TERMINFO_ADD(key_sreplace),
TERMINFO_ADD(key_sright),
TERMINFO_ADD(key_srsume),
TERMINFO_ADD(key_ssave),
TERMINFO_ADD(key_ssuspend),
TERMINFO_ADD(key_stab),
TERMINFO_ADD(key_sundo),
TERMINFO_ADD(key_suspend),
TERMINFO_ADD(key_undo),
TERMINFO_ADD(key_up)
};
const size_t count = sizeof tinfos / sizeof *tinfos;
terminfo_mappings.reserve(terminfo_mappings.size() + count);
terminfo_mappings.insert(terminfo_mappings.end(), tinfos, tinfos + count);
}
const wchar_t *input_terminfo_get_sequence( const wchar_t *name )