/****************************************************************************** * $Id: xdr_types.c,v 1.3 1994/01/05 15:30:24 courtel Exp $ * * Kind: C test program * Abstract: Mix C and Ada program using XDR coding for data * * Copyright 1990,1993 Centre d'Etudes de la Navigation Aerienne (CENA) ******************************************************************************/ #include #include "xdr_types.h" struct xdr_discrim how_much_arms[3] = { { SOLID, xdr_float}, { LIQUID, xdr_float}, { __dontcare__, NULL} }; bool_t xdr_supplier (xdrs, sp) XDR *xdrs; struct supplier *sp; { int length = MAX_PHONE; return xdr_bytes (xdrs, &sp->phone, &length, 8); } bool_t xdr_product (xdrs, sp) XDR *xdrs; struct product *sp; { int length; if (xdrs->x_op == XDR_ENCODE) length = strlen (sp->name); return (xdr_union (xdrs, &sp->form, &sp->how_much, how_much_arms, NULL) && xdr_bytes (xdrs, &sp->name, &length, MAX_NAME) && xdr_long (xdrs, &sp->cost) && xdr_int (xdrs, &sp->quantity) && xdr_vector (xdrs, sp->last_sellings, 3, sizeof(int), xdr_int) && xdr_reference (xdrs, &sp->from, sizeof(struct supplier), xdr_supplier) && TRUE); } bool_t xdr_client (xdrs, cp) XDR *xdrs; struct client *cp; { return (xdr_int (xdrs, &cp->id) && xdr_client_list (xdrs, &cp->next)); } bool_t xdr_client_list (xdrs, clp) XDR *xdrs; client_list *clp; { return (xdr_pointer (xdrs, clp, sizeof(struct client), xdr_client)); }