ZenLib
Trace.h
Go to the documentation of this file.
1 // ZenLib::Trace - To trace (in files)
2 // Copyright (C) 2006-2011 MediaArea.net SARL, Info@MediaArea.net
3 //
4 // This software is provided 'as-is', without any express or implied
5 // warranty. In no event will the authors be held liable for any damages
6 // arising from the use of this software.
7 //
8 // Permission is granted to anyone to use this software for any purpose,
9 // including commercial applications, and to alter it and redistribute it
10 // freely, subject to the following restrictions:
11 //
12 // 1. The origin of this software must not be misrepresented; you must not
13 // claim that you wrote the original software. If you use this software
14 // in a product, an acknowledgment in the product documentation would be
15 // appreciated but is not required.
16 // 2. Altered source versions must be plainly marked as such, and must not be
17 // misrepresented as being the original software.
18 // 3. This notice may not be removed or altered from any source distribution.
19 //
20 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
21 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
22 // Trace
23 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
24 //
25 // Provide a direct to file trace
26 //
27 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
28 
29 //---------------------------------------------------------------------------
30 #ifndef ZenTraceH
31 #define ZenTraceH
32 //---------------------------------------------------------------------------
33 
34 //---------------------------------------------------------------------------
35 #include <fstream>
36 #include "ZenLib/Ztring.h"
37 //---------------------------------------------------------------------------
38 
39 namespace ZenLib
40 {
41 
42 //***************************************************************************
43 
44 static std::FILE* Trace_F;
45 static ZenLib::Ztring Trace;
46 static ZenLib::Ztring Trace2;
47 
48 #ifdef TRACE
49  #undef TRACE
50 #endif //TRACE
51 
52 #if 1
53 #define TRACE(_TOAPPEND)
54 #else
55 #define TRACE(_TOAPPEND) \
56 Trace.clear(); \
57 Trace2.clear(); \
58 _TOAPPEND; \
59 if (!Trace2.empty()) \
60 { \
61  Trace+=_T(" - "); \
62  Trace+=Trace2; \
63 } \
64 Trace+=_T("\r\n"); \
65 Trace_F=std::fopen("Trace.txt", "a+t"); \
66 std::fwrite(Trace.To_Local().c_str(), Trace.size(), 1, Trace_F); \
67 std::fclose(Trace_F);
68 #endif
69 
70 //***************************************************************************
71 
72 
73 } //NameSpace
74 
75 #endif // ZenTraceH
76 
77