The R Project SVN R

Rev

Rev 56448 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 56448 Rev 56474
Line 51... Line 51...
51
 
51
 
52
#ifdef HAVE_CONFIG_H
52
#ifdef HAVE_CONFIG_H
53
#include <config.h>
53
#include <config.h>
54
#endif
54
#endif
55
 
55
 
56
#if SIZEOF_LONG > 4
-
 
57
#error This XDR implementation assumes 4-byte longs
-
 
58
#endif
-
 
59
 
-
 
60
 
-
 
61
#include <stdio.h>
56
#include <stdio.h>
-
 
57
#include <stdint.h>
62
 
58
 
63
#include <rpc/types.h>
59
#include <rpc/types.h>
64
#include <rpc/xdr.h>
60
#include <rpc/xdr.h>
65
 
61
 
66
bool_t
62
bool_t
67
xdr_double(XDR *xdrs, double *dp)
63
xdr_double(XDR *xdrs, double *dp)
68
{
64
{
69
    long *lp;
65
    int32_t *lp;
70
 
66
 
71
    switch (xdrs->x_op) {
67
    switch (xdrs->x_op) {
72
    case XDR_ENCODE:
68
    case XDR_ENCODE:
73
	lp = (long *)dp;
69
	lp = (int32_t *)dp;
74
#ifdef WORDS_BIGENDIAN
70
#ifdef WORDS_BIGENDIAN
75
	return (XDR_PUTLONG(xdrs, lp++) && XDR_PUTLONG(xdrs, lp));
71
	return (XDR_PUTLONG(xdrs, lp++) && XDR_PUTLONG(xdrs, lp));
76
#else
72
#else
77
	return (XDR_PUTLONG(xdrs, lp+1) && XDR_PUTLONG(xdrs, lp));
73
	return (XDR_PUTLONG(xdrs, lp+1) && XDR_PUTLONG(xdrs, lp));
78
#endif
74
#endif
79
    case XDR_DECODE:
75
    case XDR_DECODE:
80
	lp = (long *)dp;
76
	lp = (int32_t *)dp;
81
#ifdef WORDS_BIGENDIAN
77
#ifdef WORDS_BIGENDIAN
82
	return (XDR_GETLONG(xdrs, lp++) && XDR_GETLONG(xdrs, lp));
78
	return (XDR_GETLONG(xdrs, lp++) && XDR_GETLONG(xdrs, lp));
83
#else
79
#else
84
	return (XDR_GETLONG(xdrs, lp+1) && XDR_GETLONG(xdrs, lp));
80
	return (XDR_GETLONG(xdrs, lp+1) && XDR_GETLONG(xdrs, lp));
85
#endif
81
#endif