summaryrefslogtreecommitdiffstats
path: root/keymap.h
diff options
context:
space:
mode:
authorDan Fandrich <dan@coneharvesters.com>2011-12-03 11:13:10 -0800
committerDan Fandrich <dan@coneharvesters.com>2011-12-03 11:13:10 -0800
commit05df9d0879317816dcee00282eea3a06b0310c3b (patch)
treea454f493b83516bdcf750e881ab9803dd9f112fa /keymap.h
parent13e87955a6610317dd90b29b116edd5196cbcd56 (diff)
Declare many structures const (closes #3552)
Many structs used in mutt are actually constant but are defined without the 'const' keyword. This can slow initialization (slightly) in some environments due to extra copying and increases the amount of writable RAM required at run-time, which can be significant on non-MMU systems. Using const can also increase the opportunities for compiler optimization. The attached patch marks many such structures as const. On my test x86 build, this reduces the size of .data by over 50%.
Diffstat (limited to 'keymap.h')
-rw-r--r--keymap.h31
1 files changed, 15 insertions, 16 deletions
diff --git a/keymap.h b/keymap.h
index 20212fd5..e5c85dea 100644
--- a/keymap.h
+++ b/keymap.h
@@ -45,7 +45,6 @@ struct keymap_t
keycode_t *keys; /* key sequence */
};
-char *km_keyname (int);
int km_expand_key (char *, size_t, struct keymap_t *);
struct keymap_t *km_find_func (int, int);
void km_init (void);
@@ -89,7 +88,7 @@ extern struct keymap_t *Keymaps[];
/* dokey() records the last real key pressed */
extern int LastKey;
-extern struct mapping_t Menus[];
+extern const struct mapping_t Menus[];
struct binding_t
{
@@ -98,25 +97,25 @@ struct binding_t
char *seq; /* default key binding */
};
-struct binding_t *km_get_table (int menu);
+const struct binding_t *km_get_table (int menu);
-extern struct binding_t OpGeneric[];
-extern struct binding_t OpPost[];
-extern struct binding_t OpMain[];
-extern struct binding_t OpAttach[];
-extern struct binding_t OpPager[];
-extern struct binding_t OpCompose[];
-extern struct binding_t OpBrowser[];
-extern struct binding_t OpEditor[];
-extern struct binding_t OpQuery[];
-extern struct binding_t OpAlias[];
+extern const struct binding_t OpGeneric[];
+extern const struct binding_t OpPost[];
+extern const struct binding_t OpMain[];
+extern const struct binding_t OpAttach[];
+extern const struct binding_t OpPager[];
+extern const struct binding_t OpCompose[];
+extern const struct binding_t OpBrowser[];
+extern const struct binding_t OpEditor[];
+extern const struct binding_t OpQuery[];
+extern const struct binding_t OpAlias[];
-extern struct binding_t OpPgp[];
+extern const struct binding_t OpPgp[];
-extern struct binding_t OpSmime[];
+extern const struct binding_t OpSmime[];
#ifdef MIXMASTER
-extern struct binding_t OpMix[];
+extern const struct binding_t OpMix[];
#endif
#include "keymap_defs.h"