diff --git a/alib2std/src/extensions/iostream.cpp b/alib2std/src/extensions/iostream.cpp index e47263d247d3ef60a65c941a226fbe32c141e3d6..2c45e69254c4578d41950865612429c8eb7365c4 100644 --- a/alib2std/src/extensions/iostream.cpp +++ b/alib2std/src/extensions/iostream.cpp @@ -3,16 +3,28 @@ */ #include "iostream.hpp" +#include <bits/../iostream> namespace std { const int CERR_FD = 2; - // used for alib special logging -const int CALOG_FD = 4; -ofdstream calog ( CALOG_FD, CERR_FD ); - // used for measurements output const int CMEASURE_FD = 5; ofdstream cmeasure ( CMEASURE_FD, CERR_FD ); + +const int CLOG_FD = 4; +fdaccessor clog_fdaccessor ( CLOG_FD, CERR_FD ); +fdstreambuf clog_fdstreambuf ( clog_fdaccessor.get_fd ( ) ); + +RelinkIO::RelinkIO ( ) { + std::clog.rdbuf ( & clog_fdstreambuf ); + std::clog.clear ( ); +} + +RelinkIO::~RelinkIO ( ) { + std::clog.flush ( ); +} + +RelinkIO relinkio; } diff --git a/alib2std/src/extensions/iostream.hpp b/alib2std/src/extensions/iostream.hpp index e8152327a21f49fcf56d5b828cf27e74c7b9195f..1f0dc060795d7066e5fe5dd3c373f788a0ed7f78 100644 --- a/alib2std/src/extensions/iostream.hpp +++ b/alib2std/src/extensions/iostream.hpp @@ -11,13 +11,21 @@ namespace std { extern const int CERR_FD; - // used for alib special logging -extern const int CALOG_FD; -extern ofdstream calog; - // used for measurements output extern const int CMEASURE_FD; extern ofdstream cmeasure; + +extern fdaccessor clog_fdaccessor; +extern fdstreambuf clog_fdstreambuf; + +class RelinkIO { +public: + RelinkIO ( ); + ~RelinkIO ( ); +}; + + // following the way of stdlibc++ +extern RelinkIO relinkio; } #endif /* IOSTREAM_HPP_ */