Richard Boegli's CnC_Generals_Zero_Hour Fork
WIP
This is documentation of Richard Boegil's Zero Hour Fork
Loading...
Searching...
No Matches
endian.h
Go to the documentation of this file.
1
/*
2
** Command & Conquer Generals Zero Hour(tm)
3
** Copyright 2025 Electronic Arts Inc.
4
**
5
** This program is free software: you can redistribute it and/or modify
6
** it under the terms of the GNU General Public License as published by
7
** the Free Software Foundation, either version 3 of the License, or
8
** (at your option) any later version.
9
**
10
** This program is distributed in the hope that it will be useful,
11
** but WITHOUT ANY WARRANTY; without even the implied warranty of
12
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
** GNU General Public License for more details.
14
**
15
** You should have received a copy of the GNU General Public License
16
** along with this program. If not, see <http://www.gnu.org/licenses/>.
17
*/
18
19
#ifndef __ENDIAN_H__
20
#define __ENDIAN_H__
21
22
23
24
/*
25
** Network order is big-endian.
26
**
27
** Packet router and mangler order is big or little endian depending on server platform.
28
**
29
** Game client order is little endian.
30
*/
31
extern
bool
BigEndian
;
32
33
template
<
class
T>
inline
T
Endian
(T val)
34
{
35
if
(!
BigEndian
) {
36
return
(val);
37
}
38
39
/*
40
char temp[sizeof(T)];
41
*((T*)(&temp[0])) = val;
42
*/
43
44
T retval = 0;
45
46
/*
47
for (int i=0 ; i<sizeof(T) ; i++) {
48
retval <<= 8;
49
retval |= temp[i];
50
}
51
*/
52
53
int
len =
sizeof
(T);
54
unsigned
char
*c = (
unsigned
char
*)(&val);
55
for
(
int
i=0; i<len; i++)
56
{
57
retval |= ( (*c++) << (8*i) );
58
}
59
60
return
(retval);
61
}
62
63
64
#endif
//__ENDIAN_H__
65
BigEndian
bool BigEndian
Definition
manglertest.cpp:41
Endian
T Endian(T val)
Definition
endian.h:33
Code
Tools
mangler
endian.h
Generated by
1.13.2