#ifndef _KEYMAPS_H_
#define _KEYMAPS_H_
-#include <readline/chardefs.h>
+#if defined (READLINE_LIBRARY)
+# include "rlstdc.h"
+# include "chardefs.h"
+#else
+# include <readline/rlstdc.h>
+# include <readline/chardefs.h>
+#endif
-#ifndef __FUNCTION_DEF
+#if !defined (_FUNCTION_DEF)
+# define _FUNCTION_DEF
typedef int Function ();
-#define __FUNCTION_DEF
+typedef void VFunction ();
+typedef char *CPFunction ();
+typedef char **CPPFunction ();
#endif
/* A keymap contains one entry for each key in the ASCII set.
Each entry consists of a type and a pointer.
- POINTER is the address of a function to run, or the
+ FUNCTION is the address of a function to run, or the
address of a keymap to indirect through.
- TYPE says which kind of thing POINTER is. */
+ TYPE says which kind of thing FUNCTION is. */
typedef struct _keymap_entry {
char type;
Function *function;
/* Return a new, empty keymap.
Free it with free() when you are done. */
-Keymap rl_make_bare_keymap ();
+extern Keymap rl_make_bare_keymap __P((void));
/* Return a new keymap which is a copy of MAP. */
-Keymap rl_copy_keymap ();
+extern Keymap rl_copy_keymap __P((Keymap));
/* Return a new keymap with the printing characters bound to rl_insert,
the lowercase Meta characters bound to run their equivalents, and
the Meta digits bound to produce numeric arguments. */
-Keymap rl_make_keymap ();
+extern Keymap rl_make_keymap __P((void));
+
+/* Free the storage associated with a keymap. */
+extern void rl_discard_keymap __P((Keymap));
+
+/* These functions actually appear in bind.c */
/* Return the keymap corresponding to a given name. Names look like
- `emacs' or `emacs-meta' or `vi-insert'. */
-Keymap rl_get_keymap_by_name ();
+ `emacs' or `emacs-meta' or `vi-insert'. */
+extern Keymap rl_get_keymap_by_name __P((char *));
/* Return the current keymap. */
-Keymap rl_get_keymap ();
+extern Keymap rl_get_keymap __P((void));
/* Set the current keymap to MAP. */
-void rl_set_keymap ();
+extern void rl_set_keymap __P((Keymap));
#endif /* _KEYMAPS_H_ */