Parcourir la source

Add XDR functions for int

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@53235 15284696-431f-4ddb-bdfa-cd5b030d7da7
Glynn Clements il y a 12 ans
Parent
commit
e493bb768f
2 fichiers modifiés avec 25 ajouts et 0 suppressions
  1. 2 0
      include/defs/gis.h
  2. 23 0
      lib/gis/xdr.c

+ 2 - 0
include/defs/gis.h

@@ -725,6 +725,8 @@ void G__write_Cell_head3(FILE *, const struct Cell_head *, int);
 void G_write_zeros(int, size_t);
 
 /* xdr.c */
+void G_xdr_get_int(int *, const void *);
+void G_xdr_put_int(void *, const int *);
 void G_xdr_get_float(float *, const void *);
 void G_xdr_put_float(void *, const float *);
 void G_xdr_get_double(double *, const void *);

+ 23 - 0
lib/gis/xdr.c

@@ -5,6 +5,19 @@
 
 #include "G.h"
 
+static void swap_int(void *dstp, const void *srcp) {
+    unsigned char *dst = (unsigned char *) dstp;
+    const unsigned char *src = (const unsigned char *) srcp;
+    if (G__.little_endian) {
+	dst[0] = src[3];
+	dst[1] = src[2];
+	dst[2] = src[1];
+	dst[3] = src[0];
+    }
+    else
+	memcpy(dst, src, 4);
+}
+
 static void swap_float(void *dstp, const void *srcp) {
     unsigned char *dst = (unsigned char *) dstp;
     const unsigned char *src = (const unsigned char *) srcp;
@@ -35,6 +48,16 @@ static void swap_double(void *dstp, const void *srcp) {
 	memcpy(dst, src, 8);
 }
 
+void G_xdr_get_int(int *dst, const void *src)
+{
+    swap_int(dst, src);
+}
+
+void G_xdr_put_int(void *dst, const int *src)
+{
+    swap_int(dst, src);
+}
+
 void G_xdr_get_float(float *dst, const void *src)
 {
     swap_float(dst, src);