OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [readline/] [keymaps.c] - Diff between revs 106 and 107

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 106 Rev 107
/* keymaps.c -- Functions and keymaps for the GNU Readline library. */
/* keymaps.c -- Functions and keymaps for the GNU Readline library. */
 
 
/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
/* Copyright (C) 1988,1989 Free Software Foundation, Inc.
 
 
   This file is part of GNU Readline, a library for reading lines
   This file is part of GNU Readline, a library for reading lines
   of text with interactive input and history editing.
   of text with interactive input and history editing.
 
 
   Readline is free software; you can redistribute it and/or modify it
   Readline is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published by the
   under the terms of the GNU General Public License as published by the
   Free Software Foundation; either version 1, or (at your option) any
   Free Software Foundation; either version 1, or (at your option) any
   later version.
   later version.
 
 
   Readline is distributed in the hope that it will be useful, but
   Readline is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   General Public License for more details.
   General Public License for more details.
 
 
   You should have received a copy of the GNU General Public License
   You should have received a copy of the GNU General Public License
   along with Readline; see the file COPYING.  If not, write to the Free
   along with Readline; see the file COPYING.  If not, write to the Free
   Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
   Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#define READLINE_LIBRARY
#define READLINE_LIBRARY
 
 
#if defined (HAVE_CONFIG_H)
#if defined (HAVE_CONFIG_H)
#  include <config.h>
#  include <config.h>
#endif
#endif
 
 
#if defined (HAVE_STDLIB_H)
#if defined (HAVE_STDLIB_H)
#  include <stdlib.h>
#  include <stdlib.h>
#else
#else
#  include "ansi_stdlib.h"
#  include "ansi_stdlib.h"
#endif /* HAVE_STDLIB_H */
#endif /* HAVE_STDLIB_H */
 
 
#include "rlconf.h"
#include "rlconf.h"
#include "keymaps.h"
#include "keymaps.h"
#include "emacs_keymap.c"
#include "emacs_keymap.c"
 
 
#if defined (VI_MODE)
#if defined (VI_MODE)
#include "vi_keymap.c"
#include "vi_keymap.c"
#endif
#endif
 
 
extern int rl_do_lowercase_version ();
extern int rl_do_lowercase_version ();
extern int rl_rubout (), rl_insert ();
extern int rl_rubout (), rl_insert ();
 
 
extern char *xmalloc (), *xrealloc ();
extern char *xmalloc (), *xrealloc ();
 
 
/* **************************************************************** */
/* **************************************************************** */
/*                                                                  */
/*                                                                  */
/*                    Functions for manipulating Keymaps.           */
/*                    Functions for manipulating Keymaps.           */
/*                                                                  */
/*                                                                  */
/* **************************************************************** */
/* **************************************************************** */
 
 
 
 
/* Return a new, empty keymap.
/* Return a new, empty keymap.
   Free it with free() when you are done. */
   Free it with free() when you are done. */
Keymap
Keymap
rl_make_bare_keymap ()
rl_make_bare_keymap ()
{
{
  register int i;
  register int i;
  Keymap keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY));
  Keymap keymap = (Keymap)xmalloc (KEYMAP_SIZE * sizeof (KEYMAP_ENTRY));
 
 
  for (i = 0; i < KEYMAP_SIZE; i++)
  for (i = 0; i < KEYMAP_SIZE; i++)
    {
    {
      keymap[i].type = ISFUNC;
      keymap[i].type = ISFUNC;
      keymap[i].function = (Function *)NULL;
      keymap[i].function = (Function *)NULL;
    }
    }
 
 
  for (i = 'A'; i < ('Z' + 1); i++)
  for (i = 'A'; i < ('Z' + 1); i++)
    {
    {
      keymap[i].type = ISFUNC;
      keymap[i].type = ISFUNC;
      keymap[i].function = rl_do_lowercase_version;
      keymap[i].function = rl_do_lowercase_version;
    }
    }
 
 
  return (keymap);
  return (keymap);
}
}
 
 
/* Return a new keymap which is a copy of MAP. */
/* Return a new keymap which is a copy of MAP. */
Keymap
Keymap
rl_copy_keymap (map)
rl_copy_keymap (map)
     Keymap map;
     Keymap map;
{
{
  register int i;
  register int i;
  Keymap temp = rl_make_bare_keymap ();
  Keymap temp = rl_make_bare_keymap ();
 
 
  for (i = 0; i < KEYMAP_SIZE; i++)
  for (i = 0; i < KEYMAP_SIZE; i++)
    {
    {
      temp[i].type = map[i].type;
      temp[i].type = map[i].type;
      temp[i].function = map[i].function;
      temp[i].function = map[i].function;
    }
    }
  return (temp);
  return (temp);
}
}
 
 
/* Return a new keymap with the printing characters bound to rl_insert,
/* Return a new keymap with the printing characters bound to rl_insert,
   the uppercase Meta characters bound to run their lowercase equivalents,
   the uppercase Meta characters bound to run their lowercase equivalents,
   and the Meta digits bound to produce numeric arguments. */
   and the Meta digits bound to produce numeric arguments. */
Keymap
Keymap
rl_make_keymap ()
rl_make_keymap ()
{
{
  register int i;
  register int i;
  Keymap newmap;
  Keymap newmap;
 
 
  newmap = rl_make_bare_keymap ();
  newmap = rl_make_bare_keymap ();
 
 
  /* All ASCII printing characters are self-inserting. */
  /* All ASCII printing characters are self-inserting. */
  for (i = ' '; i < 127; i++)
  for (i = ' '; i < 127; i++)
    newmap[i].function = rl_insert;
    newmap[i].function = rl_insert;
 
 
  newmap[TAB].function = rl_insert;
  newmap[TAB].function = rl_insert;
  newmap[RUBOUT].function = rl_rubout;  /* RUBOUT == 127 */
  newmap[RUBOUT].function = rl_rubout;  /* RUBOUT == 127 */
  newmap[CTRL('H')].function = rl_rubout;
  newmap[CTRL('H')].function = rl_rubout;
 
 
#if KEYMAP_SIZE > 128
#if KEYMAP_SIZE > 128
  /* Printing characters in some 8-bit character sets. */
  /* Printing characters in some 8-bit character sets. */
  for (i = 128; i < 160; i++)
  for (i = 128; i < 160; i++)
    newmap[i].function = rl_insert;
    newmap[i].function = rl_insert;
 
 
  /* ISO Latin-1 printing characters should self-insert. */
  /* ISO Latin-1 printing characters should self-insert. */
  for (i = 160; i < 256; i++)
  for (i = 160; i < 256; i++)
    newmap[i].function = rl_insert;
    newmap[i].function = rl_insert;
#endif /* KEYMAP_SIZE > 128 */
#endif /* KEYMAP_SIZE > 128 */
 
 
  return (newmap);
  return (newmap);
}
}
 
 
/* Free the storage associated with MAP. */
/* Free the storage associated with MAP. */
void
void
rl_discard_keymap (map)
rl_discard_keymap (map)
     Keymap map;
     Keymap map;
{
{
  int i;
  int i;
 
 
  if (!map)
  if (!map)
    return;
    return;
 
 
  for (i = 0; i < KEYMAP_SIZE; i++)
  for (i = 0; i < KEYMAP_SIZE; i++)
    {
    {
      switch (map[i].type)
      switch (map[i].type)
        {
        {
        case ISFUNC:
        case ISFUNC:
          break;
          break;
 
 
        case ISKMAP:
        case ISKMAP:
          rl_discard_keymap ((Keymap)map[i].function);
          rl_discard_keymap ((Keymap)map[i].function);
          break;
          break;
 
 
        case ISMACR:
        case ISMACR:
          free ((char *)map[i].function);
          free ((char *)map[i].function);
          break;
          break;
        }
        }
    }
    }
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.