FreeCAD

Форк
0
/
Swap.cpp 
104 строки · 3.2 Кб
1
/***************************************************************************
2
 *   Copyright (c) 2005 Imetric 3D GmbH                                    *
3
 *                                                                         *
4
 *   This file is part of the FreeCAD CAx development system.              *
5
 *                                                                         *
6
 *   This library is free software; you can redistribute it and/or         *
7
 *   modify it under the terms of the GNU Library General Public           *
8
 *   License as published by the Free Software Foundation; either          *
9
 *   version 2 of the License, or (at your option) any later version.      *
10
 *                                                                         *
11
 *   This library  is distributed in the hope that it will be useful,      *
12
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
13
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
14
 *   GNU Library General Public License for more details.                  *
15
 *                                                                         *
16
 *   You should have received a copy of the GNU Library General Public     *
17
 *   License along with this library; see the file COPYING.LIB. If not,    *
18
 *   write to the Free Software Foundation, Inc., 59 Temple Place,         *
19
 *   Suite 330, Boston, MA  02111-1307, USA                                *
20
 *                                                                         *
21
 ***************************************************************************/
22

23

24
#include "PreCompiled.h"
25

26
#include "Swap.h"
27

28
unsigned short Base::SwapOrder()
29
{
30
    unsigned short usDummy = 1;
31
    return *((char*)&usDummy) == 1 ? LOW_ENDIAN : HIGH_ENDIAN;
32
}
33

34
void Base::SwapVar(char& /*unused*/)
35
{}
36

37
void Base::SwapVar(unsigned char& /*unused*/)
38
{}
39

40
void Base::SwapVar(short& s)
41
{
42
    short sTmp = s;
43
    int i = 0;
44

45
    for (i = 0; i < (int)sizeof(short); i++) {
46
        *(((char*)&sTmp) + i) = *(((char*)&s) + sizeof(short) - i - 1);
47
    }
48
    s = sTmp;
49
}
50

51
void Base::SwapVar(unsigned short& s)
52
{
53
    short sTmp = s;
54
    int i = 0;
55

56
    for (i = 0; i < (int)sizeof(short); i++) {
57
        *(((char*)&sTmp) + i) = *(((char*)&s) + sizeof(short) - i - 1);
58
    }
59
    s = sTmp;
60
}
61

62
void Base::SwapVar(long& l)
63
{
64
    long lTmp = l;
65
    int i = 0;
66

67
    for (i = 0; i < (int)sizeof(long); i++) {
68
        *(((char*)&lTmp) + i) = *(((char*)&l) + sizeof(long) - i - 1);
69
    }
70
    l = lTmp;
71
}
72

73
void Base::SwapVar(unsigned long& l)
74
{
75
    long lTmp = l;
76
    int i = 0;
77

78
    for (i = 0; i < (int)sizeof(long); i++) {
79
        *(((char*)&lTmp) + i) = *(((char*)&l) + sizeof(long) - i - 1);
80
    }
81
    l = lTmp;
82
}
83

84
void Base::SwapVar(float& f)
85
{
86
    float fTmp = f;
87
    int i = 0;
88

89
    for (i = 0; i < (int)sizeof(float); i++) {
90
        *(((char*)&fTmp) + i) = *(((char*)&f) + sizeof(float) - i - 1);
91
    }
92
    f = fTmp;
93
}
94

95
void Base::SwapVar(double& d)
96
{
97
    double dTmp = d;
98
    int i = 0;
99

100
    for (i = 0; i < (int)sizeof(double); i++) {
101
        *(((char*)&dTmp) + i) = *(((char*)&d) + sizeof(double) - i - 1);
102
    }
103
    d = dTmp;
104
}
105

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.