| 4022 | #endif // BACKWARD_SYSTEM_LINUX |
| 4023 | |
| 4024 | class Printer { |
| 4025 | public: |
| 4026 | bool snippet; |
| 4027 | ColorMode::type color_mode; |
| 4028 | bool address; |
| 4029 | bool object; |
| 4030 | int inliner_context_size; |
| 4031 | int trace_context_size; |
| 4032 | |
| 4033 | Printer() |
| 4034 | : snippet(true), color_mode(ColorMode::automatic), address(false), object(false), inliner_context_size(5), |
| 4035 | trace_context_size(7) |
| 4036 | { |
| 4037 | } |
| 4038 | |
| 4039 | template <typename ST> |
| 4040 | FILE* print(ST& st, FILE* fp = stderr) |
| 4041 | { |
| 4042 | cfile_streambuf obuf(fp); |
| 4043 | std::ostream os(&obuf); |
| 4044 | Colorize colorize(os); |
| 4045 | colorize.activate(color_mode, fp); |
| 4046 | print_stacktrace(st, os, colorize); |
| 4047 | return fp; |
| 4048 | } |
| 4049 | |
| 4050 | template <typename ST> |
| 4051 | std::ostream& print(ST& st, std::ostream& os) |
| 4052 | { |
| 4053 | Colorize colorize(os); |
| 4054 | colorize.activate(color_mode); |
| 4055 | print_stacktrace(st, os, colorize); |
| 4056 | return os; |
| 4057 | } |
| 4058 | |
| 4059 | template <typename IT> |
| 4060 | FILE* print(IT begin, IT end, FILE* fp = stderr, size_t thread_id = 0) |
| 4061 | { |
| 4062 | cfile_streambuf obuf(fp); |
| 4063 | std::ostream os(&obuf); |
| 4064 | Colorize colorize(os); |
| 4065 | colorize.activate(color_mode, fp); |
| 4066 | print_stacktrace(begin, end, os, thread_id, colorize); |
| 4067 | return fp; |
| 4068 | } |
| 4069 | |
| 4070 | template <typename IT> |
| 4071 | std::ostream& print(IT begin, IT end, std::ostream& os, size_t thread_id = 0) |
| 4072 | { |
| 4073 | Colorize colorize(os); |
| 4074 | colorize.activate(color_mode); |
| 4075 | print_stacktrace(begin, end, os, thread_id, colorize); |
| 4076 | return os; |
| 4077 | } |
| 4078 | |
| 4079 | TraceResolver const& resolver() const { return _resolver; } |
| 4080 | |
| 4081 | private: |