Mercurial > mm7
annotate ErrorHandling.h @ 2392:22cbc67a619e
Слияние
author | Ritor1 |
---|---|
date | Fri, 04 Jul 2014 09:26:50 +0600 |
parents | d6887ee81068 |
children | 1d04e48651d4 |
rev | line source |
---|---|
2253
aff7a7b072b7
adding _CRT_SECURE_NO_WARNINGS to get rid of a few hundrer annoying warnings + adding count parameter to swprintf
Grumpy7
parents:
1558
diff
changeset
|
1 #define _CRT_NON_CONFORMING_SWPRINTFS |
1545 | 2 #pragma once |
3 | |
4 #define Error(format, ...) Error_impl_(__FILE__, __FUNCTION__, __LINE__, format, __VA_ARGS__) | |
1558
30db6d265ceb
Changed the new Assert macro definition slightly, Party::AddItem (for some reason in players.cpp) renamed to Party::AddItemToParty, cleaned up; some unused variables in previous functions removed
Grumpy7
parents:
1545
diff
changeset
|
5 #define Assert(condition, ...) Assert_impl_(__FILE__, __FUNCTION__, __LINE__, condition, #condition, __VA_ARGS__) |
1545 | 6 |
7 | |
8 | |
9 #include <stdarg.h> | |
2336 | 10 #include <stdio.h> |
1545 | 11 inline __declspec(noreturn) void Error_impl_(const char *filename, const char *functionname, int line, |
12 const char *format, ...) | |
13 { | |
14 va_list va; | |
15 va_start(va, format); | |
16 { | |
17 char header[4096]; | |
18 sprintf(header, "Error in %s: %u\n\t%s\n\n", filename, line, functionname); | |
19 | |
20 char msg_body[8192]; | |
21 vsprintf(msg_body, format, va); | |
22 | |
23 wchar_t msg[sizeof(header) + sizeof(msg_body)]; | |
2253
aff7a7b072b7
adding _CRT_SECURE_NO_WARNINGS to get rid of a few hundrer annoying warnings + adding count parameter to swprintf
Grumpy7
parents:
1558
diff
changeset
|
24 swprintf(msg, 8192, L"%S %S", header, msg_body); |
1545 | 25 |
26 extern void MsgBox(const wchar_t *, const wchar_t *); | |
27 MsgBox(msg, L"Error"); | |
28 } | |
29 va_end(va); | |
30 | |
31 __debugbreak(); | |
32 } | |
33 | |
34 | |
35 inline void Assert_impl_(const char *filename, const char *functionname, int line, | |
1558
30db6d265ceb
Changed the new Assert macro definition slightly, Party::AddItem (for some reason in players.cpp) renamed to Party::AddItemToParty, cleaned up; some unused variables in previous functions removed
Grumpy7
parents:
1545
diff
changeset
|
36 bool condition, const char *condition_string, const char *format = nullptr, ...) |
1545 | 37 { |
38 if (condition) | |
39 return; | |
40 | |
41 va_list va; | |
42 va_start(va, format); | |
43 { | |
44 char header[4096]; | |
45 sprintf(header, "Assertion in %s: %u\n\t%s:\n%s\n\n", filename, line, functionname, condition_string); | |
46 | |
47 char msg_body[8192]; | |
48 vsprintf(msg_body, format, va); | |
49 | |
50 wchar_t msg[sizeof(header) + sizeof(msg_body)]; | |
51 if (format) | |
2253
aff7a7b072b7
adding _CRT_SECURE_NO_WARNINGS to get rid of a few hundrer annoying warnings + adding count parameter to swprintf
Grumpy7
parents:
1558
diff
changeset
|
52 swprintf(msg, (sizeof(header) + sizeof(msg_body)), L"%S %S", header, msg_body); |
1545 | 53 else |
2253
aff7a7b072b7
adding _CRT_SECURE_NO_WARNINGS to get rid of a few hundrer annoying warnings + adding count parameter to swprintf
Grumpy7
parents:
1558
diff
changeset
|
54 swprintf(msg, (sizeof(header) + sizeof(msg_body)), L"%S", header); |
1545 | 55 |
56 extern void MsgBox(const wchar_t *, const wchar_t *); | |
57 MsgBox(msg, L"Assertion"); | |
58 } | |
59 va_end(va); | |
60 | |
61 __debugbreak(); | |
62 } |