3131#include " ../yvalve/gds_proto.h"
3232#include " ../common/gdsassert.h"
3333
34+ typedef struct xdr_t XDR;
35+
3436inline UCHAR* XDR_ALLOC (ULONG size)
3537{
3638 return (UCHAR*) gds__alloc ((SLONG) size);
@@ -66,24 +68,14 @@ inline void DEBUG_XDR_FREE(XDR*, const void*, const void*, ULONG)
6668const unsigned MAXSTRING_FOR_WRAPSTRING = 65535 ;
6769
6870
69- static bool_t mem_getbytes (XDR*, SCHAR*, unsigned );
70- static bool_t mem_putbytes (XDR*, const SCHAR*, unsigned );
71-
72-
73- static const XDR::xdr_ops mem_ops =
74- {
75- mem_getbytes,
76- mem_putbytes
77- };
78-
79- #define GETBYTES (*xdrs->x_ops->x_getbytes)
80- #define PUTBYTES (*xdrs->x_ops->x_putbytes)
71+ #define GETBYTES xdrs->x_getbytes
72+ #define PUTBYTES xdrs->x_putbytes
8173
8274inline bool_t GETLONG (XDR* xdrs, SLONG* lp)
8375{
8476 SLONG l;
8577
86- if (!(* xdrs->x_ops -> x_getbytes )(xdrs, reinterpret_cast <char *>(&l), 4 ))
78+ if (!xdrs->x_getbytes ( reinterpret_cast <char *>(&l), 4 ))
8779 return FALSE ;
8880
8981 *lp = xdrs->x_local ? l : ntohl (l);
@@ -94,7 +86,7 @@ inline bool_t GETLONG(XDR* xdrs, SLONG* lp)
9486inline bool_t PUTLONG (XDR* xdrs, const SLONG* lp)
9587{
9688 const SLONG l = xdrs->x_local ? *lp : htonl (*lp);
97- return (* xdrs->x_ops -> x_putbytes )(xdrs, reinterpret_cast <const char *>(&l), 4 );
89+ return xdrs->x_putbytes ( reinterpret_cast <const char *>(&l), 4 );
9890}
9991
10092static SCHAR zeros[4 ] = { 0 , 0 , 0 , 0 };
@@ -484,17 +476,17 @@ bool_t xdr_opaque(XDR* xdrs, SCHAR* p, unsigned len)
484476 switch (xdrs->x_op )
485477 {
486478 case XDR_ENCODE:
487- if (!PUTBYTES (xdrs, p, len))
479+ if (!PUTBYTES (p, len))
488480 return FALSE ;
489481 if (l)
490- return PUTBYTES (xdrs, filler, l);
482+ return PUTBYTES (filler, l);
491483 return TRUE ;
492484
493485 case XDR_DECODE:
494- if (!GETBYTES (xdrs, p, len))
486+ if (!GETBYTES (p, len))
495487 return FALSE ;
496488 if (l)
497- return GETBYTES (xdrs, trash, l);
489+ return GETBYTES (trash, l);
498490 return TRUE ;
499491
500492 case XDR_FREE:
@@ -601,12 +593,12 @@ bool_t xdr_string(XDR* xdrs, SCHAR** sp, unsigned maxlength)
601593 length = static_cast <ULONG>(strlen (*sp));
602594 if (length > maxlength ||
603595 !PUTLONG (xdrs, reinterpret_cast <SLONG*>(&length)) ||
604- !PUTBYTES (xdrs, *sp, length))
596+ !PUTBYTES (*sp, length))
605597 {
606598 return FALSE ;
607599 }
608600 if ((length = (4 - length) & 3 ) != 0 )
609- return PUTBYTES (xdrs, filler, length);
601+ return PUTBYTES (filler, length);
610602 return TRUE ;
611603
612604 case XDR_DECODE:
@@ -619,13 +611,13 @@ bool_t xdr_string(XDR* xdrs, SCHAR** sp, unsigned maxlength)
619611 DEBUG_XDR_ALLOC (xdrs, sp, *sp, (maxlength + 1 ));
620612 }
621613 if (!GETLONG (xdrs, reinterpret_cast <SLONG*>(&length)) ||
622- length > maxlength || !GETBYTES (xdrs, *sp, length))
614+ length > maxlength || !GETBYTES (*sp, length))
623615 {
624616 return FALSE ;
625617 }
626618 (*sp)[length] = 0 ;
627619 if ((length = (4 - length) & 3 ) != 0 )
628- return GETBYTES (xdrs, trash, length);
620+ return GETBYTES (trash, length);
629621 return TRUE ;
630622
631623 case XDR_FREE:
@@ -759,7 +751,7 @@ bool_t xdr_wrapstring(XDR* xdrs, SCHAR** strp)
759751}
760752
761753
762- int xdrmem_create ( XDR* xdrs, SCHAR* addr, unsigned len, xdr_op x_op )
754+ int xdr_t::create ( SCHAR* addr, unsigned len, xdr_op op )
763755{
764756/* *************************************
765757 *
@@ -772,16 +764,14 @@ int xdrmem_create( XDR* xdrs, SCHAR* addr, unsigned len, xdr_op x_op)
772764 *
773765 **************************************/
774766
775- xdrs->x_base = xdrs->x_private = addr;
776- xdrs->x_handy = len;
777- xdrs->x_ops = &mem_ops;
778- xdrs->x_op = x_op;
767+ x_base = x_private = addr;
768+ x_handy = len;
769+ x_op = op;
779770
780771 return TRUE ;
781772}
782773
783-
784- static bool_t mem_getbytes ( XDR* xdrs, SCHAR* buff, unsigned bytecount)
774+ bool_t xdr_t::x_getbytes (SCHAR* buff, unsigned bytecount)
785775{
786776/* *************************************
787777 *
@@ -793,14 +783,14 @@ static bool_t mem_getbytes( XDR* xdrs, SCHAR* buff, unsigned bytecount)
793783 * Get a bunch of bytes from a memory stream if it fits.
794784 *
795785 **************************************/
796- if (xdrs-> x_handy < bytecount)
786+ if (x_handy < bytecount)
797787 return FALSE ;
798788
799789 if (bytecount)
800790 {
801- memcpy (buff, xdrs-> x_private , bytecount);
802- xdrs-> x_private += bytecount;
803- xdrs-> x_handy -= bytecount;
791+ memcpy (buff, x_private, bytecount);
792+ x_private += bytecount;
793+ x_handy -= bytecount;
804794 }
805795
806796 return TRUE ;
@@ -828,7 +818,7 @@ SLONG xdr_peek_long(const XDR* xdrs, const void* data, size_t size)
828818}
829819
830820
831- static bool_t mem_putbytes (XDR* xdrs, const SCHAR* buff, unsigned bytecount)
821+ bool_t xdr_t::x_putbytes ( const SCHAR* buff, unsigned bytecount)
832822{
833823/* *************************************
834824 *
@@ -840,15 +830,19 @@ static bool_t mem_putbytes(XDR* xdrs, const SCHAR* buff, unsigned bytecount)
840830 * Put a bunch of bytes to a memory stream if it fits.
841831 *
842832 **************************************/
843- if (xdrs-> x_handy < bytecount)
833+ if (x_handy < bytecount)
844834 return FALSE ;
845835
846836 if (bytecount)
847837 {
848- memcpy (xdrs-> x_private , buff, bytecount);
849- xdrs-> x_private += bytecount;
850- xdrs-> x_handy -= bytecount;
838+ memcpy (x_private, buff, bytecount);
839+ x_private += bytecount;
840+ x_handy -= bytecount;
851841 }
852842
853843 return TRUE ;
854844}
845+
846+ xdr_t ::~xdr_t ()
847+ { }
848+
0 commit comments