/* 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-2014 Free Software Foundation,
+Inc.
This file is part of GNU Emacs.
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
/* 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.
(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);