X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/35cf62d95cdcd5323dcea4a5385942c342ff1d9c..5932ffcd028af9fc70c9f8e731f2776a9753d81d:/src/region-cache.h diff --git a/src/region-cache.h b/src/region-cache.h index 7aebdbec26..270531e1a4 100644 --- a/src/region-cache.h +++ b/src/region-cache.h @@ -1,14 +1,14 @@ /* Header file: Caching facts about regions of the buffer, for optimization. -Copyright (C) 1985-1986, 1993, 1995, 2001-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 @@ -18,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 . */ +#ifndef EMACS_REGION_CACHE_H +#define EMACS_REGION_CACHE_H /* This code was written by Jim Blandy to help GNU Emacs better support the gene editor written for the University @@ -40,7 +42,7 @@ along with GNU Emacs. If not, see . */ 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 @@ -60,6 +62,7 @@ along with GNU Emacs. If not, see . */ 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 (void); @@ -89,24 +92,21 @@ extern void invalidate_region_cache (struct buffer *BUF, /* 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 +/* 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 *CACHE, - ptrdiff_t POS, - ptrdiff_t *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 knowledge changes. */ -extern int region_cache_backward (struct buffer *BUF, - struct region_cache *CACHE, - ptrdiff_t POS, - ptrdiff_t *NEXT); +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 */