aboutsummaryrefslogtreecommitdiff
path: root/Src/nu/trace.cpp
blob: 77faf0927379f32dd6a8b4e824d8f0f3b13e3425 (plain) (blame)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include "./trace.h"
#include <strsafe.h>

#ifdef _DEBUG

#ifdef __cplusplus
extern "C" {
#endif /*__cplusplus*/

void DebugPrintfW(LPCWSTR format, ...)
{
	va_list argList;
	wchar_t *pstr(NULL);
	void *buffer;
	size_t allocated(0), remaining(0);
	int attempt(0);

	va_start(argList, format);
	
	do
	{	
		attempt++;
		if(attempt)
		{
			allocated += (512 * attempt);
			buffer = realloc(pstr, allocated * sizeof(wchar_t));
			if (NULL == buffer)
				break;

			pstr = (wchar_t*)buffer;
		}
		
	}
	while (STRSAFE_E_INSUFFICIENT_BUFFER == StringCchVPrintfExW(pstr, allocated, NULL, &remaining, 
																STRSAFE_NULL_ON_FAILURE, format, argList));
	
	OutputDebugStringW(pstr);

	if (NULL != pstr) 
		free(pstr);

	va_end(argList);
	
}

void DebugPrintfA(LPCSTR format, ...)
{
	va_list argList;
	char *pstr(NULL);
	void *buffer;
	size_t allocated(0), remaining(0);
	int attempt(0);

	va_start(argList, format);
	
	do
	{	
		attempt++;
		if(attempt)
		{
			allocated += (512 * attempt);
			buffer = realloc(pstr, allocated * sizeof(char));
			if (NULL == buffer)
				break;

			pstr = (char*)buffer;
		}
		
	}
	while (STRSAFE_E_INSUFFICIENT_BUFFER == StringCchVPrintfExA(pstr, allocated, NULL, &remaining, 
																STRSAFE_NULL_ON_FAILURE, format, argList));
	
	OutputDebugStringA(pstr);
	
	if (NULL != pstr) 
		free(pstr);
	
	va_end(argList);	
}


#ifdef __cplusplus
}
#endif /*__cplusplus*/

#endif /*_DEBUG*/