Run Code
|
API
|
Code Wall
|
Users
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
Log
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
//clang 6.0.0 enum QtMsgType { QtDebugMsg = 1, QtInfoMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg }; #include <sstream> #include <iostream> class myQtLog { QtMsgType m_msgType; std::stringstream m_stream; public: explicit myQtLog(QtMsgType msgType = QtInfoMsg) // { QtDebugMsg, QtInfoMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg } : m_msgType(msgType) , m_stream() { } myQtLog() = delete; myQtLog( const myQtLog &) = delete; myQtLog(myQtLog&& other) : m_msgType(other.m_msgType) , m_stream(std::move(other.m_stream)) { other.m_msgType = (QtMsgType)-1; } myQtLog& operator=(const myQtLog &scopeExec) = delete; ~myQtLog() { if(m_msgType != -1) { m_stream.flush(); switch( m_msgType ) { case QtDebugMsg : std::cout << "Debug: " << m_stream.str() << std::endl; break; case QtInfoMsg : std::cout << "Info: " << m_stream.str() << std::endl; break; case QtWarningMsg : std::cout << "Warn: " << m_stream.str() << std::endl; break; case QtCriticalMsg: std::cout << "Crit: " << m_stream.str() << std::endl; break; case QtFatalMsg : std::cout << "Fatal: " << m_stream.str() << std::endl; break; default: ; } } } myQtLog&& operator<<(char c) && { m_stream << c; return std::move(*this); } myQtLog&& operator<<(short i) && { m_stream << i; return std::move(*this); } myQtLog&& operator<<(unsigned short i) && { m_stream << i; return std::move(*this); } // ... }; // myQtLog class myQtLogStream { QtMsgType m_msgType; myQtLog mkLog() { return myQtLog(m_msgType); } // { return myQtLog(m_msgType); } public: myQtLogStream(QtMsgType msgType = QtInfoMsg) // { QtDebugMsg, QtInfoMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg } : m_msgType( msgType ) {} myQtLogStream( const myQtLogStream & ) = default; myQtLogStream& operator=( const myQtLogStream& ) = default; myQtLog operator<<(char c) { return mkLog() << c; } myQtLog operator<<(short i) { return mkLog() << i; } myQtLog operator<<(unsigned short i) { return mkLog() << i; } }; // class myQtLogStream extern myQtLogStream tkfDebug ; extern myQtLogStream tkfInfo ; extern myQtLogStream tkfWarning ; extern myQtLogStream tkfCritical; extern myQtLogStream tkfFatal ; //---------------------------------------------------------------------------- // lib.cpp myQtLogStream myQtDebug = myQtLogStream(QtDebugMsg ); myQtLogStream myQtInfo = myQtLogStream(QtInfoMsg ); myQtLogStream myQtWarning = myQtLogStream(QtWarningMsg ); myQtLogStream myQtCritical = myQtLogStream(QtCriticalMsg); myQtLogStream myQtFatal = myQtLogStream(QtFatalMsg ); //---------------------------------------------------------------------------- int main() { // main.cpp myQtInfo << 'Y'; }
clang++
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
Compilation time: 1.04 sec, absolute running time: 0.18 sec, cpu time: 0.01 sec, memory peak: 5 Mb, absolute service time: 1,41 sec
edit mode
|
history
Info: Y