-
Notifications
You must be signed in to change notification settings - Fork 0
/
picocrt.h
54 lines (46 loc) · 1.04 KB
/
picocrt.h
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
#pragma once
#ifndef WHOAMI
#define WHOAMI __FILE__
#endif
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <tchar.h>
#if defined(NDEBUG)
#pragma function(memset)
void *__cdecl memset(void *ptr, int c, size_t len) {
BYTE *p = ptr;
for (SIZE_T i = 0; i < len; ++i) {
*p++ = (BYTE)c;
}
return ptr;
}
#pragma function(memcpy)
void *__cdecl memcpy(void *dst, const void *src, size_t size) {
void *start = dst;
BYTE *bdst = dst;
CONST BYTE *bsrc = src;
while (size > 0) {
*bdst++ = *bsrc++;
--size;
}
return start;
}
#endif
#if defined(__RESHARPER__)
#if !defined(UNICODE)
[[rscpp::format(printf, 1, 2)]]
#else
[[rscpp::format(wprintf, 1, 2)]]
#endif
#endif
int lprintf(TCHAR *fmt, ...) {
TCHAR buf[256];
va_list v1;
va_start(v1, fmt);
int len = wvsprintf(buf, fmt, v1);
WriteConsole(GetStdHandle(STD_OUTPUT_HANDLE), buf, len, NULL, NULL);
va_end(v1);
return len;
}
/* Hide some complexity. */
#define lprintf(fmtA, ...) lprintf(_T(fmtA), ##__VA_ARGS__)