/*
Copyright (c) 1993 Xerox Corporation.  All rights reserved.
*/
/*
$Id$

$Date$
*/
/* Chauser, October 28, 1993 3:49 pm PDT */

#ifndef	←←PCR←StdTypes←h
#define ←←PCR←StdTypes←h	1

#define PCR←MAJORVERSION	2
#define PCR←MINORVERSION	0


/*
 * Boolean
 */

typedef long PCR←Bool;

#   define PCR←Bool←←false	((PCR←Bool)(0))
#   define PCR←Bool←false	PCR←Bool←←false

#   define PCR←Bool←←true	((PCR←Bool)(1))
#   define PCR←Bool←true	PCR←Bool←←true


/*
 * Pointers
 */

#ifndef NULL
#   define NULL 0
#endif

#define NIL 0


typedef void * PCR←Ref;


/*
 * ARCH-DEPENDENT:
 *
 * The following definitions for PCR←Any make the (mild)
 * machine-dependent assumption that the heap can't be
 * too close to either end of the address space.
 *
 * Note also that if a PCR←Any is assumed to contain either
 * a PCR←Ref or a small integer, we are constrained to use
 * a *converservative* garbage collector. 
 */

typedef void * PCR←Any;

#define PCR←Any←←IsUnsigned(x) \
        ( ((unsigned)(x)) < 4096 )
#define PCR←Any←IsUnsigned	PCR←Any←←IsUnsigned

#define PCR←Any←←IsInt(x) \
        ( (((int)(x)) < 4096) && (((int)(x)) > (-4096)) )
#define PCR←Any←IsInt	PCR←Any←←IsInt

#define PCR←Any←←IsRef(x) ( ((x) == NIL) || (!PCR←Any←IsInt(x)) )


/*
 * Procedures / functions
 */

typedef void (* PCR←ProcPtr)();

/*
 * Results of (many) PCR system calls
 *
 *   >= 0: success
 *   < 0: failure, value is -(errno value)
 */

typedef long PCR←ERes;

#   define PCR←ERes←←okay		((PCR←ERes)(0))
#   define PCR←ERes←okay		PCR←ERes←←okay

#   define PCR←ERes←←IsRes(eres)	((eres) >= 0)
#   define PCR←ERes←IsRes		PCR←ERes←←IsRes

#   define PCR←ERes←←IsErr(eres)	((eres) < 0)
#   define PCR←ERes←IsErr		PCR←ERes←←IsErr

#   define PCR←ERes←←FromErr(err)	((PCR←ERes)(-(err)))
#   define PCR←ERes←FromErr		PCR←ERes←←FromErr

#   define PCR←ERes←←ToErr(eres)	((long)(-(eres)))
#   define PCR←ERes←ToErr		PCR←ERes←←ToErr

#   define PCR←ERes←←FromRes(res)	((PCR←ERes)(res))
#   define PCR←ERes←FromRes		PCR←ERes←←FromRes

#   define PCR←ERes←←ToRes(eres)	((long)(eres))
#   define PCR←ERes←ToRes		PCR←ERes←←ToRes

/*
 * Timeouts
 */

typedef unsigned long PCR←Msec;

#   define PCR←Msec←←waitForever	((PCR←Msec)(-1))
#   define PCR←Msec←waitForever		PCR←Msec←←waitForever
#   define PCR←waitForever		PCR←Msec←waitForever

#   define PCR←Msec←←dontWait		((PCR←Msec)(0))
#   define PCR←Msec←dontWait		PCR←Msec←←dontWait
#   define PCR←dontWait			PCR←Msec←dontWait

#   define PCR←Msec←←Between(a,b)	(((long)(b)) - ((long)(a)))
#   define PCR←Msec←Between		PCR←Msec←←Between



#endif /* !←←PCR←StdTypes←h */

/*
$Log$
*/