00001 #ifndef ASG_TOOLS__MESSAGE_PRINTER_OVERLAY_H
00002 #define ASG_TOOLS__MESSAGE_PRINTER_OVERLAY_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 namespace asg
00015 {
00016 class IMessagePrinter;
00017
00029
00030 class MessagePrinterOverlay final
00031 {
00032
00033
00034
00035
00036 MessagePrinterOverlay (MessagePrinterOverlay&) = delete;
00037 MessagePrinterOverlay operator = (MessagePrinterOverlay&) = delete;
00038
00039
00044 public:
00045 MessagePrinterOverlay (IMessagePrinter *val_printer) noexcept;
00046
00050 public:
00051 ~MessagePrinterOverlay () noexcept;
00052
00056 public:
00057 static IMessagePrinter& current () noexcept;
00058
00059
00060
00061
00062
00063
00064
00070 private:
00071 static IMessagePrinter*& getCurrent () noexcept;
00072
00074 private:
00075 IMessagePrinter *m_saved = nullptr;
00076
00078 private:
00079 IMessagePrinter *m_current = nullptr;
00080 };
00081 }
00082
00083 #endif