view src/miscplay.h @ 5182:2e528066e2fc

Move #'sort*, #'fill, #'merge to C from cl-seq.el. lisp/ChangeLog addition: 2010-04-01 Aidan Kehoe <kehoea@parhasard.net> * cl-seq.el (fill, sort*, merge): Move these functions to fns.c. (stable-sort): Make this docstring reflect the argument names used in the #'sort* docstring. * cl-macs.el (stable-sort): Make #'stable-sort exactly equivalent to #'sort* in compiled code. * bytecomp.el (byte-compile-maybe-add-*): New macro, for functions like #'sort and #'mapcar that, to be strictly compatible, should only take two args, but in our implementation can take more, because they're aliases of #'sort* and #'mapcar*. (byte-compile-mapcar, byte-compile-sort, byte-compile-fillarray): Use this new macro. (map-into): Add a byte-compile method for #'map-into in passing. * apropos.el (apropos-print): Use #'sort* with a :key argument, now it's in C. * compat.el (extent-at): Ditto. * register.el (list-registers): Ditto. * package-ui.el (pui-list-packages): Ditto. * help.el (sorted-key-descriptions): Ditto. src/ChangeLog addition: 2010-03-31 Aidan Kehoe <kehoea@parhasard.net> * fns.c (STRING_DATA_TO_OBJECT_ARRAY) (BIT_VECTOR_TO_OBJECT_ARRAY, c_merge_predicate_key) (c_merge_predicate_nokey, list_merge, array_merge) (list_array_merge_into_list, list_list_merge_into_array) (list_array_merge_into_array, CHECK_KEY_ARGUMENT, Fmerge) (list_sort, array_sort, FsortX): Move #'sort*, #'fill, #'merge from cl-seq.el to C, extending the implementations of Fsort, Ffillarray, and merge() to do so. * keymap.c (keymap_submaps, map_keymap_sort_predicate) (describe_map_sort_predicate): Change the calling semantics of the C sort predicates to return a non-nil Lisp object if the first argument is less than the second, rather than C integers. * fontcolor-msw.c (sort_font_list_function): * fileio.c (build_annotations): * dired.c (Fdirectory_files): * abbrev.c (Finsert_abbrev_table_description): Call list_sort instead of Fsort, list_merge instead of merge() in these functions. man/ChangeLog addition: 2010-04-01 Aidan Kehoe <kehoea@parhasard.net> * lispref/lists.texi (Rearrangement): Update the documentation of #'sort here, now that it accepts any type of sequence and the KEY keyword argument. (Though this is probably now the wrong place for this function, given that.)
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 01 Apr 2010 20:22:50 +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_ */