]> code.delx.au - gnu-emacs/blobdiff - src/region-cache.h
Replace eldoc-documentation-function with a hook
[gnu-emacs] / src / region-cache.h
index 2cf33970e5b338357381434e88f3fc81782006f5..270531e1a4da2e15cdc9a255f73305fb09d0b141 100644 (file)
@@ -1,13 +1,14 @@
 /* Header file: Caching facts about regions of the buffer, for optimization.
-   Copyright (C) 1985, 1986, 1993, 1995, 2001, 2002, 2003, 2004,
-                 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012  Free Software Foundation, Inc.
+
+Copyright (C) 1985-1986, 1993, 1995, 2001-2016 Free Software Foundation,
+Inc.
 
 This file is part of GNU Emacs.
 
 GNU Emacs is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
 
 GNU Emacs is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -17,6 +18,8 @@ GNU General Public License for more details.
 You should have received a copy of the GNU General Public License
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#ifndef EMACS_REGION_CACHE_H
+#define EMACS_REGION_CACHE_H
 
 /* This code was written by Jim Blandy <jimb@cs.oberlin.edu> to help
    GNU Emacs better support the gene editor written for the University
@@ -39,7 +42,7 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
    existing data structure, and disturb as little of the existing code
    as possible.
 
-   So here's the tack.  We add some caching to the scan_buffer
+   So here's the tack.  We add some caching to the find_newline
    function, so that when it searches for a newline, it notes that the
    region between the start and end of the search contained no
    newlines; then, the next time around, it consults this cache to see
@@ -59,19 +62,20 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
    this region has property P" vs. "I don't know if this region has
    property P or not."  */
 
+struct buffer;
 
 /* Allocate, initialize and return a new, empty region cache.  */
-struct region_cache *new_region_cache P_ ((void));
+struct region_cache *new_region_cache (void);
 
 /* Free a region cache.  */
-void free_region_cache P_ ((struct region_cache *));
+void free_region_cache (struct region_cache *);
 
 /* Assert that the region of BUF between START and END (absolute
    buffer positions) is "known," for the purposes of CACHE (e.g. "has
    no newlines", in the case of the line cache).  */
-extern void know_region_cache P_ ((struct buffer *BUF,
-                                   struct region_cache *CACHE,
-                                   int START, int END));
+extern void know_region_cache (struct buffer *BUF,
+                               struct region_cache *CACHE,
+                               ptrdiff_t START, ptrdiff_t END);
 
 /* Indicate that a section of BUF has changed, to invalidate CACHE.
    HEAD is the number of chars unchanged at the beginning of the buffer.
@@ -81,34 +85,28 @@ extern void know_region_cache P_ ((struct buffer *BUF,
    (This way of specifying regions makes more sense than absolute
    buffer positions in the presence of insertions and deletions; the
    args to pass are the same before and after such an operation.)  */
-extern void invalidate_region_cache P_ ((struct buffer *BUF,
-                                        struct region_cache *CACHE,
-                                        int HEAD, int TAIL));
+extern void invalidate_region_cache (struct buffer *BUF,
+                                     struct region_cache *CACHE,
+                                     ptrdiff_t HEAD, ptrdiff_t TAIL);
 
 /* The scanning functions.
 
    Basically, if you're scanning forward/backward from position POS,
-   and region_cache_forward/backward returns true, you can skip all
-   the text between POS and *NEXT.  And if the function returns false,
+   and region_cache_forward/backward returns nonzero, you can skip all
+   the text between POS and *NEXT.  And if the function returns zero,
    you should examine all the text from POS to *NEXT, and call
    know_region_cache depending on what you find there; this way, you
    might be able to avoid scanning it again.  */
 
-/* Return true if the text immediately after POS in BUF is known, for
-   the purposes of CACHE.  If NEXT is non-zero, set *NEXT to the nearest
-   position after POS where the knownness changes.  */
-extern int region_cache_forward P_ ((struct buffer *BUF,
-                                     struct region_cache *CACHE,
-                                     int POS,
-                                     int *NEXT));
-
-/* Return true if the text immediately before POS in BUF is known, for
-   the purposes of CACHE.  If NEXT is non-zero, set *NEXT to the nearest
-   position before POS where the knownness changes.  */
-extern int region_cache_backward P_ ((struct buffer *BUF,
-                                      struct region_cache *CACHE,
-                                      int POS,
-                                      int *NEXT));
-
-/* arch-tag: 70f79125-ef22-4f58-9aec-a48ca2791435
-   (do not change this comment) */
+/* Return the value for the text immediately after POS in BUF if the value
+   is known, for the purposes of CACHE, and return zero otherwise.
+   If NEXT is non-zero, set *NEXT to the nearest
+   position after POS where the knowledge changes.  */
+extern int region_cache_forward (struct buffer *buf, struct region_cache *c,
+                                ptrdiff_t pos, ptrdiff_t *next);
+
+/* Likewise, except before POS rather than after POS.  */
+extern int region_cache_backward (struct buffer *buf, struct region_cache *c,
+                                 ptrdiff_t pos, ptrdiff_t *next);
+
+#endif /* EMACS_REGION_CACHE_H */