home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / lucid / lemacs-19.6 / src / disptab.h < prev    next >
Encoding:
C/C++ Source or Header  |  1993-01-26  |  3.2 KB  |  91 lines

  1. /* Things for GLYPHS and glyph tables.
  2.    Copyright (C) 1990-1993 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. #ifndef _EMACS_DISPTAB_H_
  21. #define _EMACS_DISPTAB_H_
  22.  
  23. /* Access the slots of a display-table, according to their purpose.  */
  24.  
  25. #define DISP_TABLE_SIZE 261
  26. #define DISP_TRUNC_GLYPH(dp) ((dp)->contents[256])
  27. #define DISP_CONTINUE_GLYPH(dp) ((dp)->contents[257])
  28. #define DISP_ESCAPE_GLYPH(dp) ((dp)->contents[258])
  29. #define DISP_CTRL_GLYPH(dp) ((dp)->contents[259])
  30. #define DISP_INVIS_ROPE(dp) ((dp)->contents[260])
  31. #define DISP_CHAR_ROPE(dp, c) ((dp)->contents[c])
  32.  
  33. extern struct Lisp_Vector *buffer_display_table (struct buffer *);
  34. extern struct Lisp_Vector *window_display_table (struct window *);
  35.  
  36. /* Display table to use for vectors that don't specify their own.  */
  37. extern Lisp_Object Vstandard_display_table;
  38.  
  39. /* Vector of GLYPH definitions.  Indexed by GLYPH number,
  40.    the contents are a string which is how to output the GLYPH.  */
  41. extern Lisp_Object Vglyph_table;
  42.  
  43. /* Return the current length of the GLYPH table,
  44.    or 0 if the table isn't currently valid.  */
  45. #define GLYPH_TABLE_LENGTH  \
  46.   ((VECTORP (Vglyph_table)) \
  47.    ? XVECTOR (Vglyph_table)->size : 0)
  48.  
  49. /* Return the current base (for indexing) of the GLYPH table,
  50.    or 0 if the table isn't currently valid.  */
  51. #define GLYPH_TABLE_BASE  \
  52.   ((VECTORP (Vglyph_table)) \
  53.    ? XVECTOR (Vglyph_table)->contents : 0)
  54.  
  55. /* Given BASE and LEN returned by the two previous macros,
  56.    return nonzero if the GLYPH code G should be output as a single
  57.    character with code G.  Return zero if G has a string in the table.  */
  58. #define GLYPH_SIMPLE_P(base,len,g)  \
  59.   ((g) >= (len) || !STRINGP (base[g]))
  60.  
  61. /* Given BASE and LEN returned by the two previous macros,
  62.    return nonzero if GLYPH code G is aliased to a different code.  */
  63. #define GLYPH_ALIAS_P(base,len,g)  \
  64.   ((g) < (len) && FIXNUMP (base[g]))
  65.  
  66. /* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 1,
  67.    return the alias for G.  */
  68. #define GLYPH_ALIAS(base, g) XINT (base[g])
  69.  
  70. /* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 0,
  71.    return the length and the address of the character-sequence
  72.    used for outputting GLYPH G.  */
  73. #define GLYPH_LENGTH(base,g)   XSTRING (base[g])->size
  74. #define GLYPH_STRING(base,g)   XSTRING (base[g])->data
  75.  
  76. /* GLYPH for a space character.  */
  77.  
  78. #define TABGLYPH '\t'
  79. #define SPACEGLYPH 040
  80. #define NULL_GLYPH 00
  81. #define INVISIBLE_GLYPH ((GLYPH) '>')
  82.  
  83. #define GLYPH_FROM_CHAR(c) ((GLYPH) (c))
  84.  
  85. extern int glyphlen ();
  86. extern void str_to_glyph_cpy ();
  87. extern void str_to_glyph_ncpy ();
  88. extern void glyph_to_str_cpy ();
  89.  
  90. #endif /* _EMACS_DISPTAB_H_ */
  91.