-- ***************************************************************************** -- $Id: xdr_types_s.m4,v 1.3 1994/01/05 15:29:52 courtel Exp $ -- -- Kind : Test package specification -- Abstract : Interface to XDR routines -- Review : -- Portable : YES -- -- Copyright 1993 Centre d'Etudes de la Navigation Aerienne (CENA) -- ***************************************************************************** with XDR; package XDR_TYPES is -- Simple types type PRODUCT_FORM is (SOLID, LIQUID); type PRICE is delta 0.05 range 0.0 .. 9999.0; type KILOGRAMS is digits 4 range 0.0 .. 10.0; type LITERS is digits 4 range 0.0 .. 30.0; subtype SELLINGS_RANGE is POSITIVE range 1 .. 3; type SELLINGS is array (SELLINGS_RANGE) of NATURAL; -- Access type type SUPPLIER is record PHONE : STRING (1 .. 8); end record; type SUPPLIER_PTR is access SUPPLIER; -- Non-trivial record & array type PRODUCT (FORM : PRODUCT_FORM := SOLID) is record NAME : STRING (1 .. 30); NAMELEN : NATURAL; COST : PRICE; QUANTITY : NATURAL range 0 .. 9999; LAST_SELLINGS : SELLINGS; FROM : SUPPLIER_PTR; case FORM is when SOLID => WEIGHT : KILOGRAMS; when LIQUID => VOLUME : LITERS; end case; end record; type PRODUCT_ARRAY is array (POSITIVE range <>) of PRODUCT; -- Linked list type CLIENT; type CLIENT_LIST is access CLIENT; type CLIENT is record ID : POSITIVE; NEXT : CLIENT_LIST; end record; -- XDR converters procedure XDR_FORM is new XDR.XDR_DISCRETE (PRODUCT_FORM); procedure XDR_PRICE is new XDR.XDR_FIXED (PRICE); procedure XDR_KILOGRAMS is new XDR.XDR_FLOAT (KILOGRAMS); procedure XDR_LITERS is new XDR.XDR_FLOAT (LITERS); procedure XDR_SUPPLIER (XDRS : in out XDR.XDR; ITEM : in out SUPPLIER); procedure XDR_PRODUCT (XDRS : in out XDR.XDR; ITEM : in out PRODUCT); procedure XDR_PRODUCT_ARRAY is new XDR.XDR_ARRAY (PRODUCT, POSITIVE, PRODUCT_ARRAY, XDR_PRODUCT); procedure XDR_CLIENT (XDRS : in out XDR.XDR; ITEM : in out CLIENT); procedure XDR_CLIENT_LIST is new XDR.XDR_POINTER (CLIENT, CLIENT_LIST, XDR_CLIENT); end XDR_TYPES;