From c866bfe7345d009b20f6fd76865118070e13a2e4 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Tue, 23 Oct 2018 22:06:57 +0200 Subject: [PATCH] [DEV] add stream operator in io interface --- etk/io/Interface.cpp | 28 ++++++++++++++++++++++++++++ etk/io/Interface.hpp | 17 +++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/etk/io/Interface.cpp b/etk/io/Interface.cpp index bfbb6f8..33ee913 100644 --- a/etk/io/Interface.cpp +++ b/etk/io/Interface.cpp @@ -43,3 +43,31 @@ bool etk::io::Interface::puts(const etk::String& _input) { } return false; } + +etk::io::Interface& etk::io::Interface::operator<< (const etk::Stream& _data) { + write(_data.c_str(), 1, _data.size()); + return *this; +} +etk::io::Interface& etk::io::Interface::operator<< (const etk::String& _data) { + write(_data.c_str(), 1, _data.size()); + return *this; +} +etk::io::Interface& etk::io::Interface::operator<< (const char* _data) { + write(_data, 1, strlen(_data)); + return *this; +} +etk::io::Interface& etk::io::Interface::operator<< (const int32_t _data) { + etk::String sss = etk::toString(_data); + write(sss.c_str(), 1, sss.size()); + return *this; +} +etk::io::Interface& etk::io::Interface::operator<< (const uint32_t _data) { + etk::String sss = etk::toString(_data); + write(sss.c_str(), 1, sss.size()); + return *this; +} +etk::io::Interface& etk::io::Interface::operator<< (const float _data) { + etk::String sss = etk::toString(_data); + write(sss.c_str(), 1, sss.size()); + return *this; +} \ No newline at end of file diff --git a/etk/io/Interface.hpp b/etk/io/Interface.hpp index 792efb9..ebc562a 100644 --- a/etk/io/Interface.hpp +++ b/etk/io/Interface.hpp @@ -141,6 +141,23 @@ namespace etk { bool writeAll(const etk::String& _value) { return int64_t(_value.size()) == write(static_cast(&(_value[0])), sizeof(char), _value.size()/sizeof(char)); } + /** + * @brief Stream write mode + * @param[in] _data Stream to write + * @return The current FSNode reference to add other stream. + * @note not stable API ... + */ + etk::io::Interface& operator<< (const etk::Stream& _data); + //! @copydoc etk::io::Interface::operator<<(const etk::Stringstream&) + etk::io::Interface& operator<< (const etk::String& _data); + //! @copydoc etk::io::Interface::operator<<(const etk::Stringstream&) + etk::io::Interface& operator<< (const char* _data); + //! @copydoc etk::io::Interface::operator<<(const etk::Stringstream&) + etk::io::Interface& operator<< (const int32_t _data); + //! @copydoc etk::io::Interface::operator<<(const etk::Stringstream&) + etk::io::Interface& operator<< (const uint32_t _data); + //! @copydoc etk::io::Interface::operator<<(const etk::Stringstream&) + etk::io::Interface& operator<< (const float _data); }; } }