Annotation of 43BSDReno/contrib/emacs-18.55/src/undo.h, revision 1.1.1.1

1.1       root        1: /* Definitions of objects used by the GNU Emacs undo facility.
                      2:    Copyright (C) 1985 Free Software Foundation, Inc.
                      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 change starts or ends.  */
                     37:     int len;                   /* Number of characters to insert, delete or
                     38:                                   replace.  Negative means they stretch
                     39:                                   back from `pos'.  */
                     40: };
                     41: 
                     42: /* Note: in a record of type Uunmod, the `len' field is really
                     43:    the buffer->modtime associated with the state at that time.
                     44:    The buffer is marked as unmodified by undoing the Uunmod
                     45:    only if the modtime field matches.  */
                     46: 
                     47: /* The undo history consists of two circular queues, one of characters and
                     48:    one of UndoRecs.  When Uinsert recs are added to UndoRQ characters get
                     49:    added to UndoCQ.  The position of the characters can be reconstructed by
                     50:    subtracting len from the fill pointer. */
                     51: 
                     52: #define NUndoR (((1 << 13) - 4) / sizeof (struct UndoRec))
                     53: #define NUndoC ((1 << 13) - 4)
                     54: 
                     55: /* Initially allocate them these sizes;
                     56:  if these sizes get filled up, make them full size */
                     57: 
                     58: #define InitNUndoR 8
                     59: #define InitNUndoC (512 - 4)
                     60: 
                     61: struct UndoData
                     62:   {
                     63:     struct UndoRec *undorecs;  /* The undo records, NUndoR of them */
                     64:     char *undochars;   /* And the characters associated, NUndoC in all */
                     65:     int nextrec;               /* Indices for storing in above two */
                     66:     int nextchar;
                     67:     int num_undorecs;          /* Sizes allocated */
                     68:     int num_undochars;
                     69:   };
                     70: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.