<> <> <> <<>> <> <<>> DIRECTORY Basics USING [bytesPerFWord, bytesPerHWord, FWORD, HWORD], CommBuffer USING [Overhead], XNSBuf USING[Hdr, maxBodyBytes], XNSErrorTypes USING[ErrorParam, ErrorType]; XNSErrorBuf: CEDAR DEFINITIONS ~ BEGIN HWORD: TYPE ~ Basics.HWORD; FWORD: TYPE ~ Basics.FWORD; maxBytes: CARDINAL ~ XNSBuf.maxBodyBytes; <
> Hdr: TYPE ~ MACHINE DEPENDENT RECORD [ type: XNSErrorTypes.ErrorType, param: XNSErrorTypes.ErrorParam]; hdrBytes: CARDINAL ~ BITS[Hdr]/BITS[BYTE]; <> Body: TYPE ~ MACHINE DEPENDENT RECORD [ SELECT OVERLAID * FROM bytes => [bytes: PACKED ARRAY [0..maxBodyBytes) OF BYTE], chars => [chars: PACKED ARRAY [0..maxBodyChars) OF CHAR], hWords => [hWords: PACKED ARRAY [0..maxBodyHWords) OF HWORD], fWords => [fWords: PACKED ARRAY [0..maxBodyFWords) OF FWORD] ENDCASE ]; maxBodyBytes: CARDINAL ~ maxBytes - hdrBytes; maxBodyChars: CARDINAL ~ maxBodyBytes; maxBodyHWords: CARDINAL ~ maxBodyBytes/Basics.bytesPerHWord; maxBodyFWords: CARDINAL ~ maxBodyBytes/Basics.bytesPerFWord; minBodyBytes: CARDINAL ~ 42; -- min bytes that should be copied into error packet <> Packet: TYPE ~ REF PacketObject; PacketObject: TYPE ~ MACHINE DEPENDENT RECORD [ hdr: Hdr, body: Body]; <> <> <<>> Buffer: TYPE ~ REF BufferObject; BufferObject: TYPE ~ MACHINE DEPENDENT RECORD [ ovh: CommBuffer.Overhead, hdr1: XNSBuf.Hdr, hdr2: Hdr, body: Body]; <<>> <<>> END.