From 12d12c5faf4d770160b7975b54e8f9b12694e012 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Tue, 26 Oct 1993 17:58:25 +0000 Subject: * compile.[ch]: support for lambda() * PROTO.h, mymalloc.h: added #ifdefs for TURBOC and GNUC. * allobjects.h: added #include "rangeobject.h" * Grammar: added lambda_input; relaxed syntax for exec. * bltinmodule.c: added bagof, map, reduce, lambda, xrange. * tupleobject.[ch]: added resizetuple(). * rangeobject.[ch]: new object type to speed up range operations (not convinced this is needed!!!) --- Include/allobjects.h | 1 + Include/compile.h | 4 +++- Include/graminit.h | 4 ++-- Include/mymalloc.h | 10 ++++++++++ Include/rangeobject.h | 41 +++++++++++++++++++++++++++++++++++++++++ Include/tupleobject.h | 1 + 6 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 Include/rangeobject.h (limited to 'Include') diff --git a/Include/allobjects.h b/Include/allobjects.h index 8f9091ad48..17d6dd29f6 100644 --- a/Include/allobjects.h +++ b/Include/allobjects.h @@ -46,6 +46,7 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include "intobject.h" #include "longobject.h" #include "floatobject.h" +#include "rangeobject.h" #include "stringobject.h" #include "tupleobject.h" #include "listobject.h" diff --git a/Include/compile.h b/Include/compile.h index a23fea18ff..2b0b29e27e 100644 --- a/Include/compile.h +++ b/Include/compile.h @@ -54,10 +54,12 @@ extern typeobject Codetype; /* Public interface */ struct _node; /* Declare the existence of this type */ -codeobject *compile PROTO((struct _node *, char *)); +codeobject *_compile PROTO((struct _node *, char *, int)); codeobject *newcodeobject PROTO((object *, object *, object *, object *, object *)); +#define compile(n,f) (_compile((n),(f),0)) + #ifdef __cplusplus } #endif diff --git a/Include/graminit.h b/Include/graminit.h index 288e333630..735838c4f6 100644 --- a/Include/graminit.h +++ b/Include/graminit.h @@ -1,7 +1,7 @@ #define single_input 256 #define file_input 257 -#define expr_input 258 -#define eval_input 259 +#define eval_input 258 +#define lambda_input 259 #define funcdef 260 #define parameters 261 #define varargslist 262 diff --git a/Include/mymalloc.h b/Include/mymalloc.h index 959f29641d..24e212539c 100644 --- a/Include/mymalloc.h +++ b/Include/mymalloc.h @@ -51,6 +51,16 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #define HAVE_STDLIB #endif +#ifdef __TURBOC__ +#define ANY void +#define HAVE_STDLIB +#endif + +#ifdef __GNUC__ +#define ANY void +#define HAVE_STDLIB +#endif + #ifndef ANY #define ANY char #endif diff --git a/Include/rangeobject.h b/Include/rangeobject.h new file mode 100644 index 0000000000..39d20c6873 --- /dev/null +++ b/Include/rangeobject.h @@ -0,0 +1,41 @@ +/*********************************************************** +Copyright 1991, 1992, 1993 by Stichting Mathematisch Centrum, +Amsterdam, The Netherlands. + + All Rights Reserved + +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, and that the names of Stichting Mathematisch +Centrum or CWI not be used in advertising or publicity pertaining to +distribution of the software without specific, written prior permission. + +STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO +THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE +FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +******************************************************************/ + +/* Range object interface */ + +/* +123456789-123456789-123456789-123456789-123456789-123456789-123456789-12 + +rangeobject represents an integer range. This is an immutable object; +a range cannot change its value after creation. + +Range objects behave like the corresponding tuple objects except that +they are represented by a start, stop, and step datamembers. +*/ + +extern typeobject Rangetype; + +#define is_rangeobject(op) ((op)->ob_type == &Rangetype) + +extern object *newrangeobject PROTO((long, long, long, int)); diff --git a/Include/tupleobject.h b/Include/tupleobject.h index b5f2230604..8fe28a2394 100644 --- a/Include/tupleobject.h +++ b/Include/tupleobject.h @@ -58,6 +58,7 @@ extern int gettuplesize PROTO((object *)); extern object *gettupleitem PROTO((object *, int)); extern int settupleitem PROTO((object *, int, object *)); extern object *gettupleslice PROTO((object *, int, int)); +extern int resizetuple PROTO((object **, int)); /* Macro, trading safety for speed */ #define GETTUPLEITEM(op, i) ((op)->ob_item[i]) -- cgit v1.2.1