xtd 0.2.0
control_trace_listener.h
Go to the documentation of this file.
1 #pragma once
5 #include "icontrol_trace.h"
6 #include <xtd/diagnostics/trace_listener>
7 
9 namespace xtd {
11  namespace forms {
22  public:
24 
29  control_trace_listener(xtd::forms::icontrol_trace& control_trace) : control_trace_(&control_trace) {}
31 
35 
37 
41  virtual xtd::forms::icontrol_trace& control_trace() noexcept {return *control_trace_;}
46 
48 
52  static std::shared_ptr<xtd::diagnostics::trace_listener> create(xtd::forms::icontrol_trace& control_trace) {return std::make_shared<control_trace_listener>(control_trace);}
53 
54  void close() override { }
55 
56  void flush() override {
57  #if !defined(NDEBUG) || defined(DEBUG) || defined(TRACE)
58  if (control_trace_) control_trace_->flush();
59  #endif
60  }
61 
62  using trace_listener::write;
65  void write(const xtd::ustring& message) override {
66  #if !defined(NDEBUG) || defined(DEBUG) || defined(TRACE)
67  if (need_indent()) write_indent();
68  if (control_trace_) control_trace_->write(message);
69  #endif
70  }
71 
72  using trace_listener::write_line;
75  void write_line(const xtd::ustring& message) override {
76  #if !defined(NDEBUG) || defined(DEBUG) || defined(TRACE)
77  //write(message + "\n");
78  if (need_indent()) write_indent();
79  if (control_trace_) control_trace_->write_line(message);
80  need_indent(true);
81  #endif
82  }
84 
85  private:
86  xtd::forms::icontrol_trace* control_trace_ = nullptr;
87  };
88  }
89 }
Provides the abstract base class for the listeners who monitor trace and debug output.
Definition: trace_listener.h:35
virtual void write_line(const xtd::ustring &message)=0
Write debug or trace message on this instance control followed by line terminator.
virtual xtd::forms::icontrol_trace & control_trace() noexcept
Gets icontroll_trace object.
Definition: control_trace_listener.h:41
void close() override
When overridden in a derived class, closes the output stream so it no longer receives tracing or debu...
Definition: control_trace_listener.h:54
virtual void control_trace(xtd::forms::icontrol_trace &control_trace)
Sets icontroll_trace object.
Definition: control_trace_listener.h:44
void write(const xtd::ustring &message) override
Writes the message to the listener you create when you implement the trace_listener class...
Definition: control_trace_listener.h:65
Directs tracing or debugging output to a icontrol_trace object.
Definition: control_trace_listener.h:21
The xtd namespace contains all fundamental classes to access Hardware, Os, System, and more.
Definition: system_report.h:17
bool need_indent() const noexcept
Gets a value indicating whether to indent the output.
control_trace_listener(xtd::forms::icontrol_trace &control_trace)
Initializes a new instance of the control_trace_listener class with specified control_trace.
Definition: control_trace_listener.h:29
Represents text as a sequence of UTF-8 code units.
Definition: ustring.h:46
virtual void write_indent()
Writes the indent to the listener you create when you implement this class, and resets the NeedIndent...
Definition: trace_listener.h:335
Contains xtd::forms::icontrol_trace interface.
void write_line(const xtd::ustring &message) override
Writes the message to the listener you create when you implement the trace_listener class...
Definition: control_trace_listener.h:75
Allow a control to be called by control_trace_listener for writing debug or trace message...
Definition: icontrol_trace.h:20
virtual void write(const xtd::ustring &message)=0
Write debug or trace message on this instance control.
virtual void flush()=0
Flushes the output buffer and causes buffered data to write to the control.
static std::shared_ptr< xtd::diagnostics::trace_listener > create(xtd::forms::icontrol_trace &control_trace)
Create new control_trace_listener.
Definition: control_trace_listener.h:52
Implements a Windows message.
Definition: message.h:26
The xtd::forms namespace contains classes for creating Windows-based applications that take full adva...
Definition: about_box.h:13
void flush() override
When overridden in a derived class, flushes the output buffer.
Definition: control_trace_listener.h:56