annotate src/tests.c @ 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 4d0f773d5e21
children 294a86d29f99
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
1 /* C support for testing XEmacs - see tests/automated/c-tests.el
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
2 Copyright (C) 2000 Martin Buchholz
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
3 Copyright (C) 2001, 2002 Ben Wing.
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
4 Copyright (C) 2006 The Free Software Foundation, Inc.
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
5
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
6 This file is part of XEmacs.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
7
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
8 XEmacs is free software; you can redistribute it and/or modify it
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
11 later version.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
12
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
16 for more details.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
17
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
19 along with XEmacs; see the file COPYING. If not, write to
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
21 Boston, MA 02111-1307, USA. */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
22
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
23 /* Author: Martin Buchholz
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
24
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
25 This file provides support for running tests for XEmacs that cannot
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
26 be written entirely in Lisp. These tests are run automatically via
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
27 tests/automated/c-tests.el, or can be run by hand using M-x */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
28
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
29
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
30 #include <config.h>
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
31 #include "lisp.h"
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
32 #include "buffer.h"
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
33 #include "lstream.h"
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
34 #include "elhash.h"
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
35 #include "opaque.h"
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
36 #include "file-coding.h" /* XCODING_SYSTEM_EOL_TYPE and its values */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
37
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
38 static Lisp_Object Vtest_function_list;
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
39
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
40 DEFUN ("test-data-format-conversion", Ftest_data_format_conversion, 0, 0, "", /*
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
41 Test TO_EXTERNAL_FORMAT() and TO_INTERNAL_FORMAT()
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
42 */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
43 ())
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
44 {
665
fdefd0186b75 [xemacs-hg @ 2001-09-20 06:28:42 by ben]
ben
parents: 647
diff changeset
45 void *ptr; Bytecount len;
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
46 Lisp_Object string, opaque;
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
47
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 826
diff changeset
48 Ibyte int_foo[] = "\n\nfoo\nbar";
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
49 Extbyte ext_unix[]= "\n\nfoo\nbar";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
50
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
51 Extbyte ext_dos[] = "\r\n\r\nfoo\r\nbar";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
52 Extbyte ext_mac[] = "\r\rfoo\rbar";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
53 Lisp_Object opaque_dos = make_opaque (ext_dos, sizeof (ext_dos) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
54 Lisp_Object string_foo = make_string (int_foo, sizeof (int_foo) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
55
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
56 Extbyte ext_latin[] = "f\372b\343\340";
867
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 826
diff changeset
57 Ibyte int_latin1[] = "f\200\372b\200\343\200\340";
804517e16990 [xemacs-hg @ 2002-06-05 09:54:39 by ben]
ben
parents: 826
diff changeset
58 Ibyte int_latin2[] = "f\201\372b\201\343\201\340";
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
59 #ifdef MULE
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
60 Extbyte ext_latin12[]= "f\033-A\372b\343\340\033-B";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
61 Extbyte ext_tilde[] = "f~b~~";
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
62 Lisp_Object string_latin2 = make_string (int_latin2, sizeof (int_latin2) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
63 #endif
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
64 Lisp_Object opaque_latin = make_opaque (ext_latin, sizeof (ext_latin) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
65 Lisp_Object opaque0_latin = make_opaque (ext_latin, sizeof (ext_latin));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
66 Lisp_Object string_latin1 = make_string (int_latin1, sizeof (int_latin1) - 1);
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
67 int autodetect_eol_p =
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
68 !NILP (Fsymbol_value (intern ("eol-detection-enabled-p")));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
69
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
70 /* Check for expected strings before and after conversion.
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
71 Conversions depend on whether MULE is defined. */
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
72
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
73 /* #### Any code below that uses iso-latin-2-with-esc is ill-conceived. */
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
74
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
75 #ifdef MULE
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
76 #define DFC_CHECK_DATA_COND_MULE(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
77 constant_string_mule, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
78 constant_string_non_mule) \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
79 DFC_CHECK_DATA (ptr, len, constant_string_mule)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
80 #define DFC_CHECK_DATA_COND_MULE_NUL(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
81 constant_string_mule, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
82 constant_string_non_mule) \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
83 DFC_CHECK_DATA_NUL (ptr, len, constant_string_mule)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
84 #else
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
85 #define DFC_CHECK_DATA_COND_MULE(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
86 constant_string_mule, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
87 constant_string_non_mule) \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
88 DFC_CHECK_DATA (ptr, len, constant_string_non_mule)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
89 #define DFC_CHECK_DATA_COND_MULE_NUL(ptr,len, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
90 constant_string_mule, \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
91 constant_string_non_mule) \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
92 DFC_CHECK_DATA_NUL (ptr, len, constant_string_non_mule)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
93 #endif
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
94
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
95 /* These now only apply to base coding systems, and
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
96 need to test `eol-detection-enabled-p' at runtime. */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
97 #define DFC_CHECK_DATA_COND_EOL(ptr,len, \
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
98 constant_string_eol, \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
99 constant_string_non_eol) do { \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
100 if (autodetect_eol_p) \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
101 DFC_CHECK_DATA (ptr, len, constant_string_eol); \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
102 else \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
103 DFC_CHECK_DATA (ptr, len, constant_string_non_eol); \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
104 } while (0)
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
105 #define DFC_CHECK_DATA_COND_EOL_NUL(ptr,len, \
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
106 constant_string_eol, \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
107 constant_string_non_eol) do { \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
108 if (autodetect_eol_p) \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
109 DFC_CHECK_DATA_NUL (ptr, len, constant_string_eol); \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
110 else \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
111 DFC_CHECK_DATA_NUL (ptr, len, constant_string_non_eol); \
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
112 } while (0)
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
113
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
114 /* Check for expected strings before and after conversion. */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
115 #define DFC_CHECK_DATA(ptr,len, constant_string) do { \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
116 assert ((len) == sizeof (constant_string) - 1); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
117 assert (!memcmp (ptr, constant_string, len)); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
118 } while (0)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
119
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
120 /* Macro version that includes the trailing NULL byte. */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
121 #define DFC_CHECK_DATA_NUL(ptr,len,constant_string) do {\
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
122 assert ((len) == sizeof (constant_string)); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
123 assert (!memcmp (ptr, constant_string, len)); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
124 } while (0)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
125
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
126 #ifdef MULE
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
127 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
128 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
129 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
130 intern ("iso-8859-2"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
131 DFC_CHECK_DATA_NUL (ptr, len, ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
132
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
133 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
134 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin2,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
135 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
136 intern ("iso-8859-2"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
137 DFC_CHECK_DATA (ptr, len, ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
138
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
139 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
140 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
141 ALLOCA, (ptr, len),
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
142 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
143 DFC_CHECK_DATA (ptr, len, ext_latin12);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
144
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
145 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
146 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
147 MALLOC, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
148 intern ("iso-8859-2"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
149 DFC_CHECK_DATA (ptr, len, ext_latin);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
150 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
151
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
152 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
153 LISP_OPAQUE, opaque,
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
154 intern ("iso-8859-2"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
155 DFC_CHECK_DATA (XOPAQUE_DATA (opaque), XOPAQUE_SIZE (opaque), ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
156
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
157 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
158 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
159 ALLOCA, (ptr, len),
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
160 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
161 DFC_CHECK_DATA (ptr, len, int_latin2);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
162
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
163 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
164 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
165 MALLOC, (ptr, len),
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
166 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
167 DFC_CHECK_DATA (ptr, len, int_latin2);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
168 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
169
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
170 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
171 LISP_STRING, string,
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
172 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
173 DFC_CHECK_DATA (XSTRING_DATA (string), XSTRING_LENGTH (string), int_latin2);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
174
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
175 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
176 LISP_STRING, string,
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
177 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
178 DFC_CHECK_DATA (XSTRING_DATA (string), XSTRING_LENGTH (string), int_latin2);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
179
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
180 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
181 LISP_STRING, string,
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
182 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
183 DFC_CHECK_DATA_NUL (XSTRING_DATA (string), XSTRING_LENGTH (string), int_latin2);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
184
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
185 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
186 LISP_BUFFER, Fcurrent_buffer(),
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
187 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
188 DFC_CHECK_DATA_NUL (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
189 sizeof (int_latin2), int_latin2);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
190
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
191 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
192 LISP_BUFFER, Fcurrent_buffer(),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
193 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
194 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
195 sizeof (int_latin1) - 1, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
196
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
197 TO_INTERNAL_FORMAT (DATA, (ext_latin12, sizeof (ext_latin12) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
198 ALLOCA, (ptr, len),
4318
4d0f773d5e21 Fix the test failures introduced by the non-ISO-2022 coding systems.
Aidan Kehoe <kehoea@parhasard.net>
parents: 3417
diff changeset
199 intern ("iso-latin-2-with-esc"));
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
200 DFC_CHECK_DATA (ptr, len, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
201
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
202 #endif /* MULE */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
203
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
204 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
205 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
206 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
207 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
208 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
209
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
210 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
211 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
212 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
213 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
214 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
215
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
216 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
217 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
218 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
219 Qbinary);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
220 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_tilde, int_latin2);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
221
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
222 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
223 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
224 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
225 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
226 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
227
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
228
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
229 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
230 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
231 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
232 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
233 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
234
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
235 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
236 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
237 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
238 Qbinary);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
239 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
240
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
241 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
242 TO_EXTERNAL_FORMAT (LISP_STRING, string_latin1,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
243 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
244 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
245 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
246
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
247 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
248 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
249 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
250 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
251 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
252 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
253
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
254 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
255 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
256 MALLOC, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
257 Qbinary);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
258 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, ext_tilde, int_latin2);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
259 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
260
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
261 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
262 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
263 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
264 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
265 DFC_CHECK_DATA_COND_MULE (ptr, len, ext_latin, int_latin1);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
266 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
267
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
268 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
269 LISP_OPAQUE, opaque,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
270 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
271 DFC_CHECK_DATA_COND_MULE (XOPAQUE_DATA (opaque),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
272 XOPAQUE_SIZE (opaque), ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
273
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
274 TO_EXTERNAL_FORMAT (DATA, (int_latin2, sizeof (int_latin2)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
275 LISP_OPAQUE, opaque,
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
276 Qbinary);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
277 DFC_CHECK_DATA_COND_MULE_NUL (XOPAQUE_DATA (opaque),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
278 XOPAQUE_SIZE (opaque), ext_tilde, int_latin2);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
279
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
280 TO_EXTERNAL_FORMAT (DATA, (int_latin1, sizeof (int_latin1) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
281 LISP_OPAQUE, opaque,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
282 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
283 DFC_CHECK_DATA_COND_MULE (XOPAQUE_DATA (opaque),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
284 XOPAQUE_SIZE (opaque), ext_latin, int_latin1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
285
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
286 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
287 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
288 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
289 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
290 DFC_CHECK_DATA_COND_MULE (ptr, len, int_latin1, ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
291
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
292 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
293 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
294 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
295 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
296 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, int_latin1, ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
297
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
298 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
299 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
300 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
301 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
302 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, int_latin1, ext_latin);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
303 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
304
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
305 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
306 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
307 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
308 Qnil);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
309 DFC_CHECK_DATA_COND_MULE_NUL (ptr, len, int_latin1, ext_latin);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
310 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
311
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
312 TO_INTERNAL_FORMAT (DATA, (ext_latin, sizeof (ext_latin) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
313 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
314 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
315 DFC_CHECK_DATA_COND_MULE (XSTRING_DATA (string),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
316 XSTRING_LENGTH (string), int_latin1, ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
317
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
318 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
319 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
320 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
321 DFC_CHECK_DATA_COND_MULE (XSTRING_DATA (string),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
322 XSTRING_LENGTH (string), int_latin1, ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
323
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
324 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque0_latin,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
325 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
326 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
327 DFC_CHECK_DATA_COND_MULE_NUL (XSTRING_DATA (string),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
328 XSTRING_LENGTH (string), int_latin1, ext_latin);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
329
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
330 /* This next group used to use the COND_EOL macros, but with the new Mule,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
331 they all specify an EOL convention, and all XEmacsen can grok them. */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
332 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
333 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
334 MALLOC, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
335 Qbinary);
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
336 DFC_CHECK_DATA_NUL (ptr, len, ext_unix);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
337 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
338
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
339 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
340 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
341 LISP_OPAQUE, opaque,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
342 intern ("raw-text-mac"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
343 DFC_CHECK_DATA (XOPAQUE_DATA (opaque), XOPAQUE_SIZE (opaque), ext_mac);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
344
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
345 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
346 TO_EXTERNAL_FORMAT (LISP_STRING, string_foo,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
347 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
348 intern ("raw-text-dos"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
349 DFC_CHECK_DATA (ptr, len, ext_dos);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
350
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
351 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
352 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
353 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
354 intern ("raw-text-unix"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
355 DFC_CHECK_DATA (ptr, len, ext_unix);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
356
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
357 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
358 TO_EXTERNAL_FORMAT (LISP_STRING, string_foo,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
359 MALLOC, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
360 intern ("no-conversion-mac"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
361 DFC_CHECK_DATA (ptr, len, ext_mac);
1726
a8d8f419b459 [xemacs-hg @ 2003-09-30 15:26:34 by james]
james
parents: 867
diff changeset
362 xfree (ptr, void *);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
363
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
364 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
365 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
366 ALLOCA, (ptr, len),
771
943eaba38521 [xemacs-hg @ 2002-03-13 08:51:24 by ben]
ben
parents: 665
diff changeset
367 intern ("no-conversion-dos"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
368 DFC_CHECK_DATA (ptr, len, ext_dos);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
369
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
370 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
371 TO_EXTERNAL_FORMAT (DATA, (int_foo, sizeof (int_foo)),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
372 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
373 intern ("no-conversion-unix"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
374 DFC_CHECK_DATA_NUL (ptr, len, ext_unix);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
375
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
376 /* Oh, Lawdy, Lawdy, Lawdy, this done broke mah heart!
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
377
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
378 I tried using the technique
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
379
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
380 Fget_coding_system (call2
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
381 (intern ("coding-system-change-eol-conversion"),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
382 intern ("undecided"), $EOL_TYPE));
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
383 XCODING_SYSTEM_EOL_TYPE (cs_to_use) = $EOL_DETECT_TYPE;
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
384
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
385 with EOL_TYPE = Qlf (for no-detect) and Qnil (for auto-detect),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
386 and with EOL_DETECT_TYPE = EOL_LF and EOL_AUTODETECT
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
387 respectively, but this doesn't seem to work on the `undecided'
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
388 coding system. The coding-system-eol-type attribute on the
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
389 coding system itself needs to be changed, too. I'm not sure at
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
390 the moment how `set-eol-detection' works its magic, but the code
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
391 below gives correct test results without default EOL detection,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
392 with default EOL detection, and with Mule. Ship it!
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
393
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
394 Mule. You'll envy the dead.
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
395 */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
396
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
397 {
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
398 /* Check eol autodetection doesn't happen when disabled -- cheat. */
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
399 Lisp_Object cs_to_use = Fget_coding_system (intern ("undecided-unix"));
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
400 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
401 LISP_BUFFER, Fcurrent_buffer(),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
402 cs_to_use);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
403 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
404 sizeof (ext_dos) - 1, ext_dos);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
405
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
406 /* Check eol autodetection works when enabled -- honest. */
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
407 cs_to_use =
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
408 Fget_coding_system (call2
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
409 (intern ("coding-system-change-eol-conversion"),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
410 intern ("undecided"), Qnil));
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
411 XCODING_SYSTEM_EOL_TYPE (cs_to_use) = EOL_AUTODETECT;
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
412 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
413 LISP_BUFFER, Fcurrent_buffer(),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
414 cs_to_use);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
415 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer, BUF_PT (current_buffer)),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
416 sizeof (int_foo) - 1, int_foo);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
417 /* reset to default */
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
418 XCODING_SYSTEM_EOL_TYPE (cs_to_use) =
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
419 autodetect_eol_p ? EOL_AUTODETECT : EOL_LF;
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
420 }
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
421
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
422 /* Does eol-detection-enabled-p reflect the actual state of affairs?
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
423 This probably could be tested in Lisp somehow. Should it? */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
424 TO_INTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
425 LISP_BUFFER, Fcurrent_buffer(),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
426 intern ("undecided"));
3417
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
427 if (autodetect_eol_p)
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
428 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
429 BUF_PT (current_buffer)),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
430 sizeof (int_foo) - 1, int_foo);
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
431 else
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
432 DFC_CHECK_DATA (BUF_BYTE_ADDRESS (current_buffer,
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
433 BUF_PT (current_buffer)),
abdb33cc1f52 [xemacs-hg @ 2006-05-23 13:02:05 by stephent]
stephent
parents: 3263
diff changeset
434 sizeof (ext_dos) - 1, ext_dos);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
435
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
436 TO_INTERNAL_FORMAT (DATA, (ext_mac, sizeof (ext_mac) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
437 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
438 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
439 DFC_CHECK_DATA_COND_EOL (XSTRING_DATA (string),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
440 XSTRING_LENGTH (string), int_foo, ext_mac);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
441
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
442 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
443 Lisp_Object stream =
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
444 make_fixed_buffer_input_stream (ext_dos, sizeof (ext_dos) - 1);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
445 TO_INTERNAL_FORMAT (LISP_LSTREAM, stream,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
446 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
447 intern ("iso-8859-1"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
448 DFC_CHECK_DATA_COND_EOL (XSTRING_DATA (string),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
449 XSTRING_LENGTH (string), int_foo, ext_dos);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
450 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
451
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
452 TO_INTERNAL_FORMAT (DATA, (ext_unix, sizeof (ext_unix) - 1),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
453 LISP_STRING, string,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
454 intern ("no-conversion"));
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
455 DFC_CHECK_DATA_COND_EOL (XSTRING_DATA (string),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
456 XSTRING_LENGTH (string), int_foo, ext_unix);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
457
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
458
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
459 ptr = NULL, len = rand();
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
460 TO_EXTERNAL_FORMAT (LISP_OPAQUE, opaque_dos,
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
461 ALLOCA, (ptr, len),
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
462 Qbinary);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
463 DFC_CHECK_DATA (ptr, len, ext_dos);
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
464
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
465 return intern ("PASS");
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
466 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
467
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
468
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
469 /* Hash Table testing */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
470
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
471 typedef struct
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
472 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
473 Lisp_Object hash_table;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
474 EMACS_INT sum;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
475 } test_hash_tables_data;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
476
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
477
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
478 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
479 test_hash_tables_mapper (Lisp_Object UNUSED (key), Lisp_Object value,
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
480 void *extra_arg)
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
481 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
482 test_hash_tables_data *p = (test_hash_tables_data *) extra_arg;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
483 p->sum += XINT (value);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
484 return 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
485 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
486
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
487 static int
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
488 test_hash_tables_modifying_mapper (Lisp_Object key, Lisp_Object value,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
489 void *extra_arg)
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
490 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
491 test_hash_tables_data *p = (test_hash_tables_data *) extra_arg;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
492 Fputhash (make_int (- XINT (key)),
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
493 make_int (2 * XINT (value)),
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
494 p->hash_table);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
495 p->sum += XINT (value);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
496 return 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
497 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
498
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
499 static int
2286
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
500 test_hash_tables_predicate (Lisp_Object key,
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
501 Lisp_Object UNUSED (value),
04bc9d2f42c7 [xemacs-hg @ 2004-09-20 19:18:55 by james]
james
parents: 1726
diff changeset
502 void *UNUSED (extra_arg))
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
503 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
504 return XINT (key) < 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
505 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
506
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
507
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
508 DEFUN ("test-hash-tables", Ftest_hash_tables, 0, 0, "", /*
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
509 Test C interface to hash tables.
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
510 */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
511 ())
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
512 {
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
513 test_hash_tables_data data;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
514 data.hash_table = make_lisp_hash_table (50, HASH_TABLE_NON_WEAK,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
515 HASH_TABLE_EQUAL);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
516
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
517 Fputhash (make_int (1), make_int (2), data.hash_table);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
518 Fputhash (make_int (3), make_int (4), data.hash_table);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
519
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
520 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
521 elisp_maphash_unsafe (test_hash_tables_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
522 data.hash_table, (void *) &data);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
523 assert (data.sum == 2 + 4);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
524
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
525 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
526 elisp_maphash (test_hash_tables_modifying_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
527 data.hash_table, (void *) &data);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
528 assert (data.sum == 2 + 4);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
529
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
530 /* hash table now contains: (1, 2) (3, 4) (-1, 2*2) (-3, 2*4) */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
531
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
532 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
533 elisp_maphash_unsafe (test_hash_tables_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
534 data.hash_table, (void *) &data);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
535 assert (data.sum == 3 * (2 + 4));
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
536
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
537 /* Remove entries with negative keys, added by modifying mapper */
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
538 elisp_map_remhash (test_hash_tables_predicate,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
539 data.hash_table, 0);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
540
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
541 data.sum = 0;
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
542 elisp_maphash_unsafe (test_hash_tables_mapper,
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
543 data.hash_table, (void *) &data);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
544 assert (data.sum == 2 + 4);
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
545
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
546 return intern ("PASS");
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
547 }
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
548
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
549
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
550
3263
d674024a8674 [xemacs-hg @ 2006-02-27 16:29:00 by crestani]
crestani
parents: 2720
diff changeset
551 #ifdef NEW_GC
2720
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
552 #define TESTS_DEFSUBR(Fname) do { \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
553 DEFSUBR_MC_ALLOC (Fname); \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
554 defsubr (S##Fname); \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
555 Vtest_function_list = \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
556 Fcons (intern (subr_name (S##Fname)), \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
557 Vtest_function_list); \
6fa9919a9a0b [xemacs-hg @ 2005-04-08 23:10:01 by crestani]
crestani
parents: 2286
diff changeset
558 } while (0)
3263
d674024a8674 [xemacs-hg @ 2006-02-27 16:29:00 by crestani]
crestani
parents: 2720
diff changeset
559 #else /* not NEW_GC */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
560 #define TESTS_DEFSUBR(Fname) do { \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
561 DEFSUBR (Fname); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
562 Vtest_function_list = \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
563 Fcons (intern (subr_name (&S##Fname)), \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
564 Vtest_function_list); \
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
565 } while (0)
3263
d674024a8674 [xemacs-hg @ 2006-02-27 16:29:00 by crestani]
crestani
parents: 2720
diff changeset
566 #endif /* not NEW_GC */
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
567
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
568 void
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
569 syms_of_tests (void)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
570 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
571 Vtest_function_list = Qnil;
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
572
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
573 TESTS_DEFSUBR (Ftest_data_format_conversion);
489
4a8bb4aa9740 [xemacs-hg @ 2001-04-30 08:49:24 by martinb]
martinb
parents: 398
diff changeset
574 TESTS_DEFSUBR (Ftest_hash_tables);
398
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
575 /* Add other test functions here with TESTS_DEFSUBR */
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
576 }
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
577
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
578 void
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
579 vars_of_tests (void)
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
580 {
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
581 DEFVAR_LISP ("test-function-list", &Vtest_function_list /*
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
582 List of all test functions defined in tests.c.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
583 For use by the automated test suite. See tests/automated/c-tests.
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
584 */ );
74fd4e045ea6 Import from CVS: tag r21-2-29
cvs
parents:
diff changeset
585 }