GRASS 8 Programmer's Manual 8.6.0dev(2026)-55de52a352
Loading...
Searching...
No Matches
gis/xdr.c
Go to the documentation of this file.
1/*!
2 * \file lib/gis/xdr.c
3 *
4 * \brief GIS Library - XDR related functions.
5 *
6 * SPDX-FileCopyrightText: 2012-2014 GRASS Development Team
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 *
9 * \author Glynn Clements
10 */
11
12#include <stdlib.h>
13#include <string.h>
14#include <grass/gis.h>
15
16#include "G.h"
17
18static void swap_int(void *dstp, const void *srcp)
19{
20 unsigned char *dst = (unsigned char *)dstp;
21 const unsigned char *src = (const unsigned char *)srcp;
22
23 if (G__.little_endian) {
24 dst[0] = src[3];
25 dst[1] = src[2];
26 dst[2] = src[1];
27 dst[3] = src[0];
28 }
29 else
30 memcpy(dst, src, 4);
31}
32
33static void swap_float(void *dstp, const void *srcp)
34{
35 unsigned char *dst = (unsigned char *)dstp;
36 const unsigned char *src = (const unsigned char *)srcp;
37
38 if (G__.little_endian) {
39 dst[0] = src[3];
40 dst[1] = src[2];
41 dst[2] = src[1];
42 dst[3] = src[0];
43 }
44 else
45 memcpy(dst, src, 4);
46}
47
48static void swap_double(void *dstp, const void *srcp)
49{
50 unsigned char *dst = (unsigned char *)dstp;
51 const unsigned char *src = (const unsigned char *)srcp;
52
53 if (G__.little_endian) {
54 dst[0] = src[7];
55 dst[1] = src[6];
56 dst[2] = src[5];
57 dst[3] = src[4];
58 dst[4] = src[3];
59 dst[5] = src[2];
60 dst[6] = src[1];
61 dst[7] = src[0];
62 }
63 else
64 memcpy(dst, src, 8);
65}
66
67void G_xdr_get_int(int *dst, const void *src)
68{
69 swap_int(dst, src);
70}
71
72void G_xdr_put_int(void *dst, const int *src)
73{
74 swap_int(dst, src);
75}
76
77void G_xdr_get_float(float *dst, const void *src)
78{
79 swap_float(dst, src);
80}
81
82void G_xdr_put_float(void *dst, const float *src)
83{
84 swap_float(dst, src);
85}
86
87void G_xdr_get_double(double *dst, const void *src)
88{
89 swap_double(dst, src);
90}
91
92void G_xdr_put_double(void *dst, const double *src)
93{
94 swap_double(dst, src);
95}
void G_xdr_put_int(void *dst, const int *src)
Definition gis/xdr.c:72
void G_xdr_put_float(void *dst, const float *src)
Definition gis/xdr.c:82
void G_xdr_get_double(double *dst, const void *src)
Definition gis/xdr.c:87
void G_xdr_put_double(void *dst, const double *src)
Definition gis/xdr.c:92
void G_xdr_get_int(int *dst, const void *src)
Definition gis/xdr.c:67
void G_xdr_get_float(float *dst, const void *src)
Definition gis/xdr.c:77
Definition G.h:11
int little_endian
Definition G.h:14