Mercurial > emacs
annotate oldXMenu/XDestAssoc.c @ 29004:383e4e21306a
(LEADING_CODE_8_BIT_CONTROL, CHARSET_8_BIT_CONTROL,
CHARSET_8_BIT_GRAPHIC): New macros.
(SINGLE_BYTE_CHAR_P): Make it faster by using casting.
(CHARSET_ISO_GRAPHIC_PLANE): Use XINT instead of XFASTINT.
(CHARSET_REVERSE_CHARSET): Likewise.
(CHARSET_VALID_P): Handle new charsets; eight-bit-control and
eight-bit-graphic.
(BYTES_BY_CHAR_HEAD, WIDTH_BY_CHAR_HEAD): Optimize for ASCII.
(CHAR_CHARSET, MAKE_CHAR, SPLIT_CHAR, CHAR_BYTES): Likewise.
(PARSE_MULTIBYTE_SEQ) [BYTE_COMBINING_DEBUG]: Abort if we
encounter an invalid multibyte sequence.
(PARSE_MULTIBYTE_SEQ) [not BYTE_COMBINING_DEBUG]: Assume multibyte
sequence is always valid.
(MAKE_NON_ASCII_CHAR, SPLIT_NON_ASCII_CHAR): These macros Deleted.
(UNIBYTE_STR_AS_MULTIBYTE_P, MULTIBYTE_STR_AS_UNIBYTE_P): New
macros.
(CHAR_STRING): For 8-bit characters, call char_to_string.
(INC_POS) [not BYTE_COMBINING_DEBUG]: Faster version. Assume
multibyte sequence is always valid.
(BUF_INC_POS) [not BYTE_COMBINING_DEBUG]: Likewise.
(parse_str_as_multibyte, str_as_multibyte, str_to_multibyte,
str_as_unibyte): Extern them.
(BCOPY_SHORT): Fix a bug.
(CHAR_LEN): This macro deleted. Callers changed to use
CHAR_BYTES.
(FETCH_STRING_CHAR_ADVANCE): Check multibyteness of STRING.
(FETCH_STRING_CHAR_ADVANCE_NO_CHECK): New macro.
(FETCH_CHAR_ADVANCE): Check multibyteness of the current buffer.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Fri, 19 May 2000 23:54:05 +0000 |
parents | bbce331da1be |
children | 23a1cea22d13 |
rev | line source |
---|---|
25858 | 1 /* $XConsortium: XDestAssoc.c,v 10.17 91/02/08 13:11:50 rws Exp $ */ |
2 /* Copyright Massachusetts Institute of Technology 1985 */ | |
3 | |
4 /* | |
5 Permission to use, copy, modify, distribute, and sell this software and its | |
6 documentation for any purpose is hereby granted without fee, provided that | |
7 the above copyright notice appear in all copies and that both that | |
8 copyright notice and this permission notice appear in supporting | |
9 documentation, and that the name of M.I.T. not be used in advertising or | |
10 publicity pertaining to distribution of the software without specific, | |
11 written prior permission. M.I.T. makes no representations about the | |
12 suitability of this software for any purpose. It is provided "as is" | |
13 without express or implied warranty. | |
14 */ | |
15 | |
16 #include <X11/Xlib.h> | |
17 #include "X10.h" | |
18 | |
19 /* | |
20 * XDestroyAssocTable - Destroy (free the memory associated with) | |
21 * an XAssocTable. | |
22 */ | |
23 XDestroyAssocTable(table) | |
24 register XAssocTable *table; | |
25 { | |
26 register int i; | |
27 register XAssoc *bucket; | |
28 register XAssoc *Entry, *entry_next; | |
29 | |
30 /* Free the buckets. */ | |
31 for (i = 0; i < table->size; i++) { | |
32 bucket = &table->buckets[i]; | |
33 for ( | |
34 Entry = bucket->next; | |
35 Entry != bucket; | |
36 Entry = entry_next | |
37 ) { | |
38 entry_next = Entry->next; | |
39 free((char *)Entry); | |
40 } | |
41 } | |
42 | |
43 /* Free the bucket array. */ | |
44 free((char *)table->buckets); | |
45 | |
46 /* Free the table. */ | |
47 free((char *)table); | |
48 } | |
49 |