Mercurial > projects > ldc
annotate gen/logger.cpp @ 647:669a2c84f4e4
Updated the Tango patch to latest revision. Removed problematic (Jarrett) include <cassert> from gen/runtime.cpp
author | Tomas Lindquist Olsen <tomas.l.olsen@gmail.com> |
---|---|
date | Sun, 05 Oct 2008 02:01:50 +0200 |
parents | b604c56945b0 |
children | 661384d6a936 |
rev | line source |
---|---|
1 | 1 #include <cassert> |
2 #include <cstdarg> | |
3 #include <cstdio> | |
4 #include <cstdlib> | |
5 #include <iostream> | |
38
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
6 #include <fstream> |
1 | 7 #include <string> |
8 | |
132 | 9 #include "mars.h" |
10 | |
4
e116aa1488e6
[svn r8] changed backend includes to always use the gen/<foo>.h prefix
lindquist
parents:
1
diff
changeset
|
11 #include "gen/logger.h" |
1 | 12 |
13 namespace Logger | |
14 { | |
15 static std::string indent_str; | |
38
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
16 static std::ofstream null_out("/dev/null"); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
17 |
131 | 18 static bool _enabled = false; |
1 | 19 void indent() |
20 { | |
131 | 21 if (_enabled) { |
102
027b8d8b71ec
[svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
lindquist
parents:
94
diff
changeset
|
22 indent_str += "* "; |
027b8d8b71ec
[svn r106] Turns out the last commit wasn't enough, now the D->LLVM process is even more split up.
lindquist
parents:
94
diff
changeset
|
23 } |
1 | 24 } |
25 void undent() | |
26 { | |
131 | 27 if (_enabled) { |
38
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
28 assert(!indent_str.empty()); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
29 indent_str.resize(indent_str.size()-2); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
30 } |
1 | 31 } |
32 std::ostream& cout() | |
33 { | |
131 | 34 if (_enabled) |
38
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
35 return std::cout << indent_str; |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
36 else |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
37 return null_out; |
1 | 38 } |
39 void println(const char* fmt,...) | |
40 { | |
131 | 41 if (_enabled) { |
38
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
42 printf(indent_str.c_str()); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
43 va_list va; |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
44 va_start(va,fmt); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
45 vprintf(fmt,va); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
46 va_end(va); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
47 printf("\n"); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
48 } |
1 | 49 } |
50 void print(const char* fmt,...) | |
51 { | |
131 | 52 if (_enabled) { |
38
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
53 printf(indent_str.c_str()); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
54 va_list va; |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
55 va_start(va,fmt); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
56 vprintf(fmt,va); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
57 va_end(va); |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
58 } |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
59 } |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
60 void enable() |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
61 { |
131 | 62 _enabled = true; |
38
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
63 } |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
64 void disable() |
27b2f40bdb58
[svn r42] Disabled the extensive logging by default. Use the -vv flag to get it back.
lindquist
parents:
4
diff
changeset
|
65 { |
131 | 66 _enabled = false; |
67 } | |
68 bool enabled() | |
69 { | |
70 return _enabled; | |
1 | 71 } |
132 | 72 void attention(const Loc& loc, const char* fmt,...) |
94
61615fa85940
[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca").
lindquist
parents:
86
diff
changeset
|
73 { |
246
b604c56945b0
[svn r263] Changed *** ATTENTION *** to warnings.
lindquist
parents:
132
diff
changeset
|
74 printf("Warning: %s: ", loc.toChars()); |
94
61615fa85940
[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca").
lindquist
parents:
86
diff
changeset
|
75 va_list va; |
61615fa85940
[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca").
lindquist
parents:
86
diff
changeset
|
76 va_start(va,fmt); |
61615fa85940
[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca").
lindquist
parents:
86
diff
changeset
|
77 vprintf(fmt,va); |
61615fa85940
[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca").
lindquist
parents:
86
diff
changeset
|
78 va_end(va); |
61615fa85940
[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca").
lindquist
parents:
86
diff
changeset
|
79 printf("\n"); |
61615fa85940
[svn r98] Added support for std.c.stdlib.alloca via pragma(LLVM_internal, "alloca").
lindquist
parents:
86
diff
changeset
|
80 } |
1 | 81 } |