1: /* Definitions of objects used by the GNU Emacs undo facility.
   2:    Copyright (C) 1985 Fen Labalme and Richard M. Stallman.
   3: 
   4: This file is part of GNU Emacs.
   5: 
   6: GNU Emacs is distributed in the hope that it will be useful,
   7: but WITHOUT ANY WARRANTY.  No author or distributor
   8: accepts responsibility to anyone for the consequences of using it
   9: or for whether it serves any particular purpose or works at all,
  10: unless he says so in writing.  Refer to the GNU Emacs General Public
  11: License for full details.
  12: 
  13: Everyone is granted permission to copy, modify and redistribute
  14: GNU Emacs, but only under the conditions described in the
  15: GNU Emacs General Public License.   A copy of this license is
  16: supposed to have been given to you along with GNU Emacs so you
  17: can know your rights and responsibilities.  It should be in a
  18: file named COPYING.  Among other things, the copyright notice
  19: and this notice must be preserved on all copies.  */
  20: 
  21: 
  22: enum Ukinds {           /* The events that can exist in the undo
  23: 				   queue. */
  24:     Uboundary,          /* A boundary between sets of undoable things
  25: 				   */
  26:     Unundoable,         /* What's done is done -- some things can't
  27: 				   be undone */
  28:     Udelete,            /* Delete characters to perform the undo */
  29:     Uinsert,            /* Insert .... */
  30:     Uchange,            /* Replace characters */
  31:     Uunmod,         /* Clear modification-flag to perform undo */
  32: };
  33: 
  34: struct UndoRec {        /* A record of a single undo action */
  35:     enum Ukinds kind;       /* the kind of action to be undone */
  36:     int pos;            /* Where dot is */
  37:     int len;            /* The extent of the undo (characters
  38: 				   inserted or deleted) */
  39: };
  40: 
  41: /* The undo history consists of two circular queues, one of characters and
  42:    one of UndoRecs.  When Uinsert recs are added to UndoRQ characters get
  43:    added to UndoCQ.  The position of the characters can be reconstructed by
  44:    subtracting len from the fill pointer. */
  45: 
  46: #define NUndoR  (((1 << 13) - 4) / sizeof (struct UndoRec))
  47: #define NUndoC  ((1 << 13) - 4)
  48: 
  49: /* Initially allocate them these sizes;
  50:  if these sizes get filled up, make them full size */
  51: 
  52: #define InitNUndoR 8
  53: #define InitNUndoC (512 - 4)
  54: 
  55: struct UndoData
  56:   {
  57:     struct UndoRec *undorecs;   /* The undo records, NUndoR of them */
  58:     char *undochars;    /* And the characters associated, NUndoC in all */
  59:     int nextrec;        /* Indices for storing in above two */
  60:     int nextchar;
  61:     int num_undorecs;       /* Sizes allocated */
  62:     int num_undochars;
  63:   };

Defined struct's

UndoData defined in line 55; used 22 times
UndoRec defined in line 34; used 28 times

Defined enum's

Ukinds defined in line 22; used 4 times

Defined macros

InitNUndoC defined in line 53; used 2 times
InitNUndoR defined in line 52; used 3 times
NUndoC defined in line 47; used 6 times
NUndoR defined in line 46; used 4 times

Usage of this include

Last modified: 1985-11-23
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 712
Valid CSS Valid XHTML 1.0 Strict