Mercurial > hg > xemacs-beta
view src/miscplay.h @ 5648:3f4a234f4672
Support non-ASCII correctly in character classes, test this.
src/ChangeLog addition:
2012-04-21 Aidan Kehoe <kehoea@parhasard.net>
Support non-ASCII correctly in character classes ([:alnum:] and
friends).
* regex.c:
* regex.c (ISBLANK, ISUNIBYTE): New. Make these and friends
independent of the locale, since we want them to be consistent in
XEmacs.
* regex.c (print_partial_compiled_pattern): Print the flags for
charset_mule; don't print non-ASCII as the character values in
ranges, this breaks with locales.
* regex.c (enum):
Define various flags the charset_mule and charset_mule_not opcodes
can now take.
* regex.c (CHAR_CLASS_MAX_LENGTH): Update this.
* regex.c (re_iswctype, re_wctype): New, from GNU.
* regex.c (re_wctype_can_match_non_ascii): New; used when deciding
on whether to use charset_mule or the ASCII-only regex character
set opcode.
* regex.c (regex_compile):
Error correctly on long, non-existent character class names.
Break out the handling of charsets that can match non-ASCII into a
separate clause. Use compile_char_class when compiling character
classes.
* regex.c (compile_char_class): New. Used in regex_compile when
compiling character sets that may match non-ASCII.
* regex.c (re_compile_fastmap):
If there are flags set for charset_mule or charset_mule_not, we
can't use the fastmap (since we need to check syntax table values
that aren't available there).
* regex.c (re_match_2_internal):
Check the new flags passed to the charset_mule{,_not} opcode,
observe them if appropriate.
* regex.h:
* regex.h (enum):
Expose re_wctype_t here, imported from GNU.
tests/ChangeLog addition:
2012-04-21 Aidan Kehoe <kehoea@parhasard.net>
* automated/regexp-tests.el:
* automated/regexp-tests.el (Assert-char-class):
Check that #'string-match errors correctly with an over-long
character class name.
Add tests for character class functionality that supports
non-ASCII characters. These tests expose bugs in GNU Emacs
24.0.94.2, but pass under current XEmacs.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 21 Apr 2012 18:58:28 +0100 |
parents | ecf1ebac70d8 |
children |
line wrap: on
line source
/* miscplay.h - general routines related to playing sounds ** ** Copyright (C) 1995,96 by Markus Gutschke (gutschk@math.uni-muenster.de) ** This was sawed out from version 1.3 of linuxplay.c by ** Robert Bihlmeyer <robbe@orcus.priv.at>. ** ** Parts of this code were inspired by sunplay.c, which is copyright 1989 by ** Jef Poskanzer and 1991,92 by Jamie Zawinski; c.f. sunplay.c for further ** information. ** ** Permission to use, copy, modify, and distribute this software and its ** documentation for any purpose and without fee is hereby granted, provided ** that the above copyright notice appear in all copies and that both that ** copyright notice and this permission notice appear in supporting ** documentation. This software is provided "as is" without express or ** implied warranty. */ /* Synched up with: Not in FSF. */ /* This file Mule-ized by Ben Wing, 5-15-01. */ #ifndef INCLUDED_miscplay_h_ #define INCLUDED_miscplay_h_ #define HEADERSZ 256 /* has to be at least as big as the biggest header */ #define SNDBUFSZ 2048 /* has to be at least as big as HEADERSZ */ /* Audio data formats from <linux/soundcard.h> */ #define AFMT_MU_LAW 0x00000001 #define AFMT_A_LAW 0x00000002 #define AFMT_IMA_ADPCM 0x00000004 #define AFMT_U8 0x00000008 #define AFMT_S16_LE 0x00000010 /* Little endian signed 16*/ #define AFMT_S16_BE 0x00000020 /* Big endian signed 16 */ #define AFMT_S8 0x00000040 #define AFMT_U16_LE 0x00000080 /* Little endian U16 */ #define AFMT_U16_BE 0x00000100 /* Big endian U16 */ #define AFMT_MPEG 0x00000200 /* MPEG (2) audio */ typedef enum {fmtIllegal,fmtRaw,fmtVoc,fmtWave,fmtSunAudio} fmtType; size_t sndcnvnop(void **data,size_t *sz,void **outbuf); size_t sndcnv8U_2mono(void **data,size_t *sz,void **outbuf); size_t sndcnv8S_2mono(void **data,size_t *sz,void **outbuf); size_t sndcnv2monounsigned(void **data,size_t *sz,void **outbuf); size_t sndcnv2unsigned(void **data,size_t *sz,void **outbuf); size_t sndcnvULaw_2linear(void **data,size_t *sz,void **outbuf); size_t sndcnvULaw_2mono(void **data,size_t *sz,void **outbuf); size_t sndcnv16swap(void **data,size_t *sz,void **outbuf); size_t sndcnv16_2monoLE(void **data,size_t *sz,void **outbuf); size_t sndcnv16_2monoBE(void **data,size_t *sz,void **outbuf); size_t sndcnv2byteLE(void **data,size_t *sz,void **outbuf); size_t sndcnv2byteBE(void **data,size_t *sz,void **outbuf); size_t sndcnv2monobyteLE(void **data,size_t *sz,void **outbuf); size_t sndcnv2monobyteBE(void **data,size_t *sz,void **outbuf); fmtType analyze_format(Binbyte *format,int *fmt,int *speed, int *tracks, size_t (**parsesndfile)(void **,size_t *sz, void **)); void reset_parsestate(void); int parse_wave_complete(void); #endif /* INCLUDED_miscplay_h_ */