annotate src/libinterface.h @ 4407:4ee73bbe4f8e

Always use boyer_moore in ASCII or Latin-1 buffers with ASCII search strings. 2007-12-26 Aidan Kehoe <kehoea@parhasard.net> * casetab.c: Extend and correct some case table documentation. * search.c (search_buffer): Correct a bug where only the first entry for a character in the case equivalence table was examined in determining if the Boyer-Moore search algorithm is appropriate. If there are case mappings outside of the charset and row of the characters specified in the search string, those case mappings can be safely ignored (and Boyer-Moore search can be used) if we know from the buffer statistics that the corresponding characters cannot occur. * search.c (boyer_moore): Assert that we haven't been passed a string with varying characters sets or rows within character sets. That's what simple_search is for. In the very rare event that a character in the search string has a canonical case mapping that is not in the same character set and row, don't try to search for the canonical character, search for some other character that is in the the desired character set and row. Assert that the case table isn't corrupt. Do not search for any character case mappings that cannot possibly occur in the buffer, given the buffer metadata about its contents.
author Aidan Kehoe <kehoea@parhasard.net>
date Wed, 26 Dec 2007 17:30:16 +0100
parents 543769b89fed
children 1cecc3e9f0a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
870
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
1 /* Define prototypes for graphics library interface functions.
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
2 Copyright (C) 2002 Ben Wing.
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
3
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
4 This file is part of XEmacs.
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
5
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
6 XEmacs is free software; you can redistribute it and/or modify it
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
7 under the terms of the GNU General Public License as published by the
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
8 Free Software Foundation; either version 2, or (at your option) any
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
9 later version.
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
10
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
11 XEmacs is distributed in the hope that it will be useful, but WITHOUT
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
12 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
14 for more details.
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
15
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
17 along with XEmacs; see the file COPYING. If not, write to
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
19 Boston, MA 02111-1307, USA. */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
20
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
21 /* Synched up with: Not in FSF. */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
22
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
23 #ifndef INCLUDED_libinterface_h_
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
24 #define INCLUDED_libinterface_h_
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
25
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
26 #ifdef HAVE_GIF
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
27 #include "gifrlib.h"
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
28 #endif /* HAVE_GIF */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
29
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
30 #ifdef HAVE_PNG
1743
543769b89fed [xemacs-hg @ 2003-10-14 05:02:57 by james]
james
parents: 870
diff changeset
31 BEGIN_C_DECLS
870
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
32 #define message message_ /* Yuck */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
33 /* See comment in libinterface.c for the following */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
34 #define PNG_EXPORT(type, symbol) type XCDECL symbol
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
35 #define ZEXPORT XCDECL
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
36 #define ZEXPORTVA XCDECL
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
37 #include <png.h>
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
38 #undef message
1743
543769b89fed [xemacs-hg @ 2003-10-14 05:02:57 by james]
james
parents: 870
diff changeset
39 END_C_DECLS
870
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
40 #endif /* HAVE_PNG */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
41
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
42 /* #### WARNING: Utterly random magic here to prevent namespace conflicts
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
43 when no one bothers to be the least bit namespace-clean. Potential
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
44 problems: INT32, FAR. DONT_NEED_JPEG avoids the problem with FAR in
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
45 glyphs-msw.c. For some reason, putting the XPM code after this fixes
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
46 other problems; don't move it before. --ben */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
47 #if defined (HAVE_JPEG) && !defined (DONT_NEED_JPEG)
1743
543769b89fed [xemacs-hg @ 2003-10-14 05:02:57 by james]
james
parents: 870
diff changeset
48 BEGIN_C_DECLS
870
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
49 #ifdef _MSC_VER
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
50 # ifndef XMD_H
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
51 /* Yuck! This tricks jpeglib.h into not defining INT32, which is defined
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
52 in VC98/INCLUDE/basetsd.h */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
53 # define UNDEF_XMD_H_ME_HARDER
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
54 # define XMD_H
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
55 # endif
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
56 #endif /* _MSC_VER */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
57 #include <jpeglib.h>
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
58 #ifdef UNDEF_XMD_H_ME_HARDER
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
59 # undef XMD_H
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
60 #endif
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
61 #include <jerror.h>
1743
543769b89fed [xemacs-hg @ 2003-10-14 05:02:57 by james]
james
parents: 870
diff changeset
62 END_C_DECLS
870
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
63
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
64 boolean XCDECL qxe_jpeg_finish_decompress (j_decompress_ptr cinfo);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
65 boolean XCDECL qxe_jpeg_start_decompress (j_decompress_ptr cinfo);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
66 JDIMENSION XCDECL qxe_jpeg_read_scanlines (j_decompress_ptr cinfo,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
67 JSAMPARRAY scanlines,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
68 JDIMENSION max_lines);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
69 int XCDECL qxe_jpeg_read_header (j_decompress_ptr cinfo, boolean require_image);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
70 #define qxe_jpeg_create_decompress(cinfo) \
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
71 qxe_jpeg_CreateDecompress((cinfo), JPEG_LIB_VERSION, \
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
72 (size_t) sizeof(struct jpeg_decompress_struct))
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
73 void XCDECL qxe_jpeg_CreateDecompress (j_decompress_ptr cinfo, int version,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
74 size_t structsize);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
75 struct jpeg_error_mgr * XCDECL qxe_jpeg_std_error (struct jpeg_error_mgr *err);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
76 void XCDECL qxe_jpeg_destroy_decompress (j_decompress_ptr cinfo);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
77 boolean XCDECL qxe_jpeg_resync_to_restart (j_decompress_ptr cinfo, int desired);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
78
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
79 #endif /* defined (HAVE_JPEG) && !defined (DONT_NEED_JPEG) */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
80
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
81 #ifdef HAVE_XPM
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
82
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
83 #ifndef HAVE_GTK /* #### ????????????????????? No comprendo ni un poco.
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
84 This was here before, in a different file. --ben */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
85 #include <X11/xpm.h>
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
86 #endif
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
87
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
88 void XCDECL qxe_XpmFreeXpmImage (XpmImage *image);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
89 void XCDECL qxe_XpmFreeXpmInfo (XpmInfo *info);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
90 int XCDECL qxe_XpmCreateXpmImageFromBuffer (char *buffer, XpmImage *image,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
91 XpmInfo *info);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
92 void XCDECL qxe_XpmFree (void *ptr);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
93 int XCDECL qxe_XpmReadFileToData (char *filename, char ***data_return);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
94
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
95 #endif /* HAVE_XPM */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
96
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
97 #ifdef HAVE_TIFF
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
98 #include "tiffio.h"
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
99
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
100 tdata_t XCDECL qxe_TIFFmalloc (tsize_t x1);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
101 void XCDECL qxe_TIFFfree (tdata_t x1);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
102 void XCDECL qxe_TIFFClose (TIFF *x1);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
103 int XCDECL qxe_TIFFGetField (TIFF *x1, ttag_t x2, uint32 *x3);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
104 TIFF * XCDECL qxe_TIFFClientOpen (const char *x1, const char *x2,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
105 thandle_t x3, TIFFReadWriteProc x4,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
106 TIFFReadWriteProc x5, TIFFSeekProc x6,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
107 TIFFCloseProc x7, TIFFSizeProc x8,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
108 TIFFMapFileProc x9, TIFFUnmapFileProc x10);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
109 TIFFErrorHandler XCDECL qxe_TIFFSetErrorHandler (TIFFErrorHandler x1);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
110 TIFFErrorHandler XCDECL qxe_TIFFSetWarningHandler (TIFFErrorHandler x1);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
111 int XCDECL qxe_TIFFReadRGBAImage (TIFF *x1, uint32 x2, uint32 x3, uint32 *x4,
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
112 int x5);
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
113
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
114 #endif /* HAVE_TIFF */
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
115
26a2f3423141 [xemacs-hg @ 2002-06-10 12:43:41 by ben]
ben
parents:
diff changeset
116 #endif /* INCLUDED_libinterface_h_ */