view src/sysdll.h @ 5272:66dbef5f8076

Be better about bounds-checking, #'subseq, #'fill; add same, #'reduce. 2010-09-16 Aidan Kehoe <kehoea@parhasard.net> * fns.c (Fsubseq): Change the string code to better fit in with the rest of this function (it still uses get_string_range_char(), though, which *may* diverge algorithmically from what we're doing). If dealing with a cons, only call #'length if we have reason to believe that the START and END arguments are badly specified, and check for circular lists ourselves when that's appropriate. If dealing with a vector, call Fvector() on the appropriate subset of the old vector's data directly, don't initialise the result with nil and then copy. (Ffill): Only check the range arguments for a cons SEQUENCE if we have good reason to think they were badly specified. (Freduce): Handle multiple values properly. Add bounds checking to this function, as specificied by ANSI Common Lisp.
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 16 Sep 2010 18:46:05 +0100
parents 19a72041c5ed
children 308d34e9f07d
line wrap: on
line source

/* sysdll.h --- system dependent support for dynamic linked libraries
   Copyright (C) 1998 Free Software Foundation, Inc.
   Author:  William Perry <wmperry@aventail.com>

This file is part of XEmacs.

XEmacs is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.

XEmacs is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with XEmacs; see the file COPYING.  If not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.  */

/* This file has been Mule-ized, Ben Wing, 1-26-10. */

#ifndef INCLUDED_sysdll_h_
#define INCLUDED_sysdll_h_

BEGIN_C_DECLS

typedef void * dll_handle;
typedef void * dll_func;
typedef void * dll_var;

extern dll_handle dll_open (Lisp_Object);
extern int dll_close (dll_handle);
extern dll_func dll_function (dll_handle, const Ibyte *);
extern dll_var dll_variable (dll_handle, const Ibyte *);
extern Lisp_Object dll_error (void);

END_C_DECLS

#endif /* INCLUDED_sysdll_h_ */