~ubuntu-branches/ubuntu/vivid/freerdp/vivid

« back to all changes in this revision

Viewing changes to winpr/include/winpr/endian.h

  • Committer: Package Import Robot
  • Author(s): Iain Lane
  • Date: 2014-11-11 12:20:50 UTC
  • mfrom: (1.1.9) (9.1.17 sid)
  • Revision ID: package-import@ubuntu.com-20141111122050-wyr8hrnwco9fcmum
Tags: 1.1.0~git20140921.1.440916e+dfsg1-2ubuntu1
* Merge with Debian unstable, remaining changes
  - Disable ffmpeg support
* Disable gstreamer support, this relies on gstreamer 0.10 and we don't want
  to add any more deps on that.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * WinPR: Windows Portable Runtime
 
3
 * Endianness Macros
 
4
 *
 
5
 * Copyright 2013 Marc-Andre Moreau <marcandre.moreau@gmail.com>
 
6
 *
 
7
 * Licensed under the Apache License, Version 2.0 (the "License");
 
8
 * you may not use this file except in compliance with the License.
 
9
 * You may obtain a copy of the License at
 
10
 *
 
11
 *     http://www.apache.org/licenses/LICENSE-2.0
 
12
 *
 
13
 * Unless required by applicable law or agreed to in writing, software
 
14
 * distributed under the License is distributed on an "AS IS" BASIS,
 
15
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
16
 * See the License for the specific language governing permissions and
 
17
 * limitations under the License.
 
18
 */
 
19
 
 
20
#ifndef WINPR_ENDIAN_H
 
21
#define WINPR_ENDIAN_H
 
22
 
 
23
#include <winpr/winpr.h>
 
24
#include <winpr/wtypes.h>
 
25
#include <winpr/platform.h>
 
26
 
 
27
#ifdef __cplusplus
 
28
extern "C" {
 
29
#endif
 
30
 
 
31
#define Data_Read_UINT8_NE(_d, _v) do { _v = \
 
32
        *_d; } while (0)
 
33
 
 
34
#define Data_Read_UINT8(_d, _v) do { _v = \
 
35
        *_d; } while (0)
 
36
 
 
37
#define Data_Read_UINT16_NE(_d, _v) do { _v = \
 
38
        *((UINT16*) _d); } while (0)
 
39
 
 
40
#define Data_Read_UINT16(_d, _v) do { _v = \
 
41
        (UINT16)(*_d) + \
 
42
        (((UINT16)(*(_d))) << 8); \
 
43
        } while (0)
 
44
 
 
45
#define Data_Read_UINT16_BE(_d, _v) do { _v = \
 
46
        (((UINT16)(*_d)) << 8) + \
 
47
        (UINT16)(*(_d + 1)); \
 
48
        } while (0)
 
49
 
 
50
#define Data_Read_UINT32_NE(_d, _v) do { _v = \
 
51
        *((UINT32*) _d); } while (0)
 
52
 
 
53
#define Data_Read_UINT32(_d, _v) do { _v = \
 
54
        (UINT32)(*_d) + \
 
55
        (((UINT32)(*(_d + 1))) << 8) + \
 
56
        (((UINT32)(*(_d + 2))) << 16) + \
 
57
        (((UINT32)(*(_d + 3))) << 24); \
 
58
        } while (0)
 
59
 
 
60
#define Data_Read_UINT32_BE(_d, _v) do { _v = \
 
61
        (((UINT32)(*(_d))) << 24) + \
 
62
        (((UINT32)(*(_d + 1))) << 16) + \
 
63
        (((UINT32)(*(_d + 2))) << 8) + \
 
64
        (((UINT32)(*(_d + 3)))); \
 
65
        } while (0)
 
66
 
 
67
#define Data_Read_UINT64_NE(_d, _v) do { _v = \
 
68
        *((UINT64*) _d); } while (0)
 
69
 
 
70
#define Data_Read_UINT64(_d, _v) do { _v = \
 
71
        (UINT64)(*_d) + \
 
72
        (((UINT64)(*(_d + 1))) << 8) + \
 
73
        (((UINT64)(*(_d + 2))) << 16) + \
 
74
        (((UINT64)(*(_d + 3))) << 24) + \
 
75
        (((UINT64)(*(_d + 4))) << 32) + \
 
76
        (((UINT64)(*(_d + 5))) << 40) + \
 
77
        (((UINT64)(*(_d + 6))) << 48) + \
 
78
        (((UINT64)(*(_d + 7))) << 56); \
 
79
        } while (0)
 
80
 
 
81
#define Data_Write_UINT8_NE(_d, _v) do { \
 
82
        *((UINT8*) _d) = v; } while (0)
 
83
 
 
84
#define Data_Write_UINT8(_d, _v) do { \
 
85
        *_d = (UINT8)(_v); } while (0)
 
86
 
 
87
#define Data_Write_UINT16_NE(_d, _v) do { \
 
88
        *((UINT16*) _d) = _v; } while (0)
 
89
 
 
90
#define Data_Write_UINT16(_d, _v) do { \
 
91
        *(_d) = (_v) & 0xFF; \
 
92
        *(_d + 1) = ((_v) >> 8) & 0xFF; \
 
93
        } while (0)
 
94
 
 
95
#define Data_Write_UINT16_BE(_d, _v) do { \
 
96
        *(_d) = ((_v) >> 8) & 0xFF; \
 
97
        *(_d + 1) = (_v) & 0xFF; \
 
98
        } while (0)
 
99
 
 
100
#define Data_Write_UINT32_NE(_d, _v) do { \
 
101
        *((UINT32*) _d) = _v; } while (0)
 
102
 
 
103
#define Data_Write_UINT32(_d, _v) do { \
 
104
        *(_d) = (_v) & 0xFF; \
 
105
        *(_d + 1) = ((_v) >> 8) & 0xFF; \
 
106
        *(_d + 2) = ((_v) >> 16) & 0xFF; \
 
107
        *(_d + 3) = ((_v) >> 24) & 0xFF; \
 
108
        } while (0)
 
109
 
 
110
#define Data_Write_UINT32_BE(_d, _v) do { \
 
111
        Data_Write_UINT16_BE(_d, ((_v) >> 16 & 0xFFFF)); \
 
112
        Data_Write_UINT16_BE(_d + 2, ((_v) & 0xFFFF)); \
 
113
        } while (0)
 
114
 
 
115
#define Data_Write_UINT64_NE(_d, _v) do { \
 
116
        *((UINT64*) _d) = _v; } while (0)
 
117
 
 
118
#define Data_Write_UINT64(_d, _v) do { \
 
119
        *(_d) = (UINT64)(_v) & 0xFF; \
 
120
        *(_d + 1) = ((UINT64)(_v) >> 8) & 0xFF; \
 
121
        *(_d + 2) = ((UINT64)(_v) >> 16) & 0xFF; \
 
122
        *(_d + 3) = ((UINT64)(_v) >> 24) & 0xFF; \
 
123
        *(_d + 4) = ((UINT64)(_v) >> 32) & 0xFF; \
 
124
        *(_d + 5) = ((UINT64)(_v) >> 40) & 0xFF; \
 
125
        *(_d + 6) = ((UINT64)(_v) >> 48) & 0xFF; \
 
126
        *(_d + 7) = ((UINT64)(_v) >> 56) & 0xFF; \
 
127
        } while (0)
 
128
 
 
129
#ifdef __cplusplus
 
130
}
 
131
#endif
 
132
 
 
133
#endif /* WINPR_ENDIAN_H */