forked from guilryder/clavier-plus
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathIntrinsics.cpp
67 lines (54 loc) · 1.71 KB
/
Intrinsics.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Clavier+
// Keyboard shortcuts manager
//
// Copyright (C) 2000-2008 Guillaume Ryder
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
// Implement the intrinsices used by the application.
// Needed to remove all dependencies to Visual C++ runtime DLLs.
#include <stdint.h>
extern "C" void* memset(void* dest, int value, size_t size);
extern "C" void* memcpy(void* dest, const void* src, size_t size);
#ifndef _DEBUG
#pragma function(memset)
#pragma function(memcpy)
typedef unsigned char BYTE;
void* memset(void* dst, int value, size_t size) {
BYTE *pdst = static_cast<BYTE*>(dst);
while (size > 0) {
size--;
*pdst++ = BYTE(value);
}
return dst;
}
void* memcpy(void* dst, const void* src, size_t size) {
BYTE *pdst = static_cast<BYTE*>(dst);
const BYTE *psrc = static_cast<const BYTE*>(src);
while (size > 0) {
size--;
*pdst++ = *psrc++;
}
return dst;
}
extern "C" int atexit(void (__cdecl*)()) {
return 0;
}
namespace std {
#ifdef __GNUC__
void __throw_bad_function_call() {}
#else
void __cdecl _Xbad_function_call() {}
#endif
}
#endif // !_DEBUG