/****************************************************************************** * $Id: xdr_encode_c.c,v 1.2 1994/01/05 15:30:34 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" main() { XDR xdrs; char buf[1024]; static struct supplier from = {"62259570"}; static struct product val[2] = { {SOLID, "Sugar", ToAdaPrice(12.81), 500, {300, 264, 491}, &from, 5.0}, {LIQUID, "Mineral water", ToAdaPrice(14.31), 340, {220, 134, 92}, &from, 2.5} }; struct product *ptr = val; u_int length = 2; client_list clients; clients = (client_list)malloc(sizeof(struct client)); clients->id = 3; clients->next = (client_list)malloc(sizeof(struct client)); clients->next->id = 14; clients->next->next = (client_list)malloc(sizeof(struct client)); clients->next->next->id = 16; xdrmem_create (&xdrs, buf, 1024, XDR_ENCODE); if (!xdr_array (&xdrs, &ptr, &length, length, sizeof(struct product), xdr_product)) { fprintf(stderr, "xdr_encode : xdr_array failed\n"); exit(1); } if (!xdr_client_list (&xdrs, &clients)) { fprintf(stderr, "xdr_encode : xdr_client_list failed\n"); exit(1); } write (1, buf, xdr_getpos (&xdrs)); exit(0); }