/* CedarExtra.h */
/* Christian Jacobi  -  January 28, 1988 */
/* Christian Jacobi  -  August 12, 1988 */
/* Contract between compiler backend and runtime */
/* Russ Atkinson  -  July 6, 1989 */
	/* inserted pragma for XR←PushHandler */

/* Conceptional .h file as expected by compiler backend */
/* The real used .h file might implement certain procedures as macros */

#ifndef XR←C2C←runtime←version←5
#define XR←C2C←runtime←version←5
#ifdef XR←C2C←runtime←version←any
	an other version is defined; please crash the compiler
#endif
#define XR←C2C←runtime←version←any

extern void 		XR←DebugPutChar();

extern void 		XR←RaiseAbstractionFault();
extern unsigned 	XR←RaiseBoundsFault();
extern unsigned 	XR←RaiseArithmeticFault();

extern unsigned 	XR←UnnamedError;
extern unsigned  	XR←Unwind;
extern unsigned 	XR←Aborted;
extern unsigned 	XR←Uncaught;
extern unsigned 	XR←NarrowFault;

extern unsigned 	XR←PushHandler();
#pragma unknown←control←flow(XR←PushHandler)

extern void	 	XR←PopHandler();
extern void	 	XR←RaiseSignal();
extern void	 	XR←RaiseError();

extern unsigned 	XR←ExtensionAlloc();
extern unsigned 	XR←ExtensionFree();

extern void	 	XR←Fork();
extern unsigned 	XR←Join();
extern void	 	XR←Wait();
extern void 	 	XR←Notify();
extern void	 	XR←Broadcast();
extern void	 	XR←MonitorEntry();
extern void	 	XR←MonitorExit();

extern void	 	XR←MoveWords();
extern void	 	XR←MoveWordsDisjoint();
extern unsigned		XR←EqualWords();
extern void	 	XR←MoveBytesDisjoint();
extern unsigned 	XR←ExtractField();
extern void	 	XR←DepositField();
extern void	 	XR←MoveField();
extern unsigned 	XR←EqualFields();
extern void	 	XR←FillFields();
extern void	 	XR←FillWords();
extern void	 	XR←FillLongFields();
extern void	 	XR←FillLongWords();

extern void 		XR←AssignRef();
extern void 		XR←AssignRefInit();
extern void 		XR←AssignRefComposite();
extern void 		XR←AssignRefCompositeInit();
extern unsigned 	XR←NewObject();
extern unsigned 	XR←Narrow();
extern unsigned 	XR←GetReferentType();
extern unsigned 	XR←CheckProc();

/* all the floating procedures have parameters and returns of type unsigned! */ 
/* but the bits represent reals if the appropriate LOOPHOLE's (NOT cast) would be made */

extern unsigned		XR←SignedPwr();
extern unsigned		XR←UnsignedPwr();

extern unsigned		XR←FloatInt();
extern unsigned		XR←FloatCard();
extern unsigned		XR←RealNeg();
extern unsigned		XR←RealAdd();
extern unsigned		XR←RealSub();
extern unsigned		XR←RealMul();
extern unsigned		XR←RealDiv();
extern unsigned		XR←RealGt();
extern unsigned		XR←RealGe();
extern unsigned		XR←RealAbs();
	/* may re-evaluate argument if implemented as macro */
extern unsigned		XR←RealMin();
	/* may re-evaluate argument if implemented as macro */
extern unsigned		XR←RealMax();
	/* may re-evaluate argument if implemented as macro */
extern unsigned		XR←RealPwr();

#endif