~ubuntu-branches/ubuntu/vivid/libmtp/vivid

« back to all changes in this revision

Viewing changes to src/gphoto2-endian.h

  • Committer: Package Import Robot
  • Author(s): Alessio Treglia
  • Date: 2012-06-21 10:44:53 UTC
  • mfrom: (16.2.12 experimental)
  • Revision ID: package-import@ubuntu.com-20120621104453-e9xhmt1aambphgfv
Tags: 1.1.3-24-g9aca343-3
Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* This file is generated automatically by configure */
2
 
/* It is valid only for the system type i686-pc-linux-gnu */
3
 
 
4
 
#ifndef __BYTEORDER_H
5
 
#define __BYTEORDER_H
6
 
 
7
 
/* ntohl and relatives live here */
8
 
#include <arpa/inet.h>
9
 
 
10
 
/* Define generic byte swapping functions */
11
 
#include <byteswap.h>
12
 
#define swap16(x) bswap_16(x)
13
 
#define swap32(x) bswap_32(x)
14
 
#define swap64(x) bswap_64(x)
15
 
 
16
 
/* The byte swapping macros have the form: */
17
 
/*   EENN[a]toh or htoEENN[a] where EE is be (big endian) or */
18
 
/* le (little-endian), NN is 16 or 32 (number of bits) and a, */
19
 
/* if present, indicates that the endian side is a pointer to an */
20
 
/* array of uint8_t bytes instead of an integer of the specified length. */
21
 
/* h refers to the host's ordering method. */
22
 
 
23
 
/* So, to convert a 32-bit integer stored in a buffer in little-endian */
24
 
/* format into a uint32_t usable on this machine, you could use: */
25
 
/*   uint32_t value = le32atoh(&buf[3]); */
26
 
/* To put that value back into the buffer, you could use: */
27
 
/*   htole32a(&buf[3], value); */
28
 
 
29
 
/* Define aliases for the standard byte swapping macros */
30
 
/* Arguments to these macros must be properly aligned on natural word */
31
 
/* boundaries in order to work properly on all architectures */
32
 
#ifndef htobe16
33
 
# define htobe16(x) htons(x)
34
 
#endif
35
 
#ifndef htobe32
36
 
# define htobe32(x) htonl(x)
37
 
#endif
38
 
#ifndef be16toh
39
 
# define be16toh(x) ntohs(x)
40
 
#endif
41
 
#ifndef be32toh
42
 
# define be32toh(x) ntohl(x)
43
 
#endif
44
 
 
45
 
#define HTOBE16(x) (x) = htobe16(x)
46
 
#define HTOBE32(x) (x) = htobe32(x)
47
 
#define BE32TOH(x) (x) = be32toh(x)
48
 
#define BE16TOH(x) (x) = be16toh(x)
49
 
 
50
 
/* On little endian machines, these macros are null */
51
 
#ifndef htole16
52
 
# define htole16(x)      (x)
53
 
#endif
54
 
#ifndef htole32
55
 
# define htole32(x)      (x)
56
 
#endif
57
 
#ifndef htole64
58
 
# define htole64(x)      (x)
59
 
#endif
60
 
#ifndef le16toh
61
 
# define le16toh(x)      (x)
62
 
#endif
63
 
#ifndef le32toh
64
 
# define le32toh(x)      (x)
65
 
#endif
66
 
#ifndef le64toh
67
 
# define le64toh(x)      (x)
68
 
#endif
69
 
 
70
 
#define HTOLE16(x)      (void) (x)
71
 
#define HTOLE32(x)      (void) (x)
72
 
#define HTOLE64(x)      (void) (x)
73
 
#define LE16TOH(x)      (void) (x)
74
 
#define LE32TOH(x)      (void) (x)
75
 
#define LE64TOH(x)      (void) (x)
76
 
 
77
 
/* These don't have standard aliases */
78
 
#ifndef htobe64
79
 
# define htobe64(x)      swap64(x)
80
 
#endif
81
 
#ifndef be64toh
82
 
# define be64toh(x)      swap64(x)
83
 
#endif
84
 
 
85
 
#define HTOBE64(x)      (x) = htobe64(x)
86
 
#define BE64TOH(x)      (x) = be64toh(x)
87
 
 
88
 
/* Define the C99 standard length-specific integer types */
89
 
#include <_stdint.h>
90
 
 
91
 
/* Here are some macros to create integers from a byte array */
92
 
/* These are used to get and put integers from/into a uint8_t array */
93
 
/* with a specific endianness.  This is the most portable way to generate */
94
 
/* and read messages to a network or serial device.  Each member of a */
95
 
/* packet structure must be handled separately. */
96
 
 
97
 
/* The i386 and compatibles can handle unaligned memory access, */
98
 
/* so use the optimized macros above to do this job */
99
 
#ifndef be16atoh
100
 
# define be16atoh(x)     be16toh(*(uint16_t*)(x))
101
 
#endif
102
 
#ifndef be32atoh
103
 
# define be32atoh(x)     be32toh(*(uint32_t*)(x))
104
 
#endif
105
 
#ifndef be64atoh
106
 
# define be64atoh(x)     be64toh(*(uint64_t*)(x))
107
 
#endif
108
 
#ifndef le16atoh
109
 
# define le16atoh(x)     le16toh(*(uint16_t*)(x))
110
 
#endif
111
 
#ifndef le32atoh
112
 
# define le32atoh(x)     le32toh(*(uint32_t*)(x))
113
 
#endif
114
 
#ifndef le64atoh
115
 
# define le64atoh(x)     le64toh(*(uint64_t*)(x))
116
 
#endif
117
 
 
118
 
#ifndef htob16a
119
 
# define htobe16a(a,x)   *(uint16_t*)(a) = htobe16(x)
120
 
#endif
121
 
#ifndef htobe32a
122
 
# define htobe32a(a,x)   *(uint32_t*)(a) = htobe32(x)
123
 
#endif
124
 
#ifndef htobe64a
125
 
# define htobe64a(a,x)   *(uint64_t*)(a) = htobe64(x)
126
 
#endif
127
 
#ifndef htole16a
128
 
# define htole16a(a,x)   *(uint16_t*)(a) = htole16(x)
129
 
#endif
130
 
#ifndef htole32a
131
 
# define htole32a(a,x)   *(uint32_t*)(a) = htole32(x)
132
 
#endif
133
 
#ifndef htole64a
134
 
# define htole64a(a,x)   *(uint64_t*)(a) = htole64(x)
135
 
#endif
136
 
 
137
 
#endif /*__BYTEORDER_H*/