stream::ConsistentOutputStream. Add convenience methods for all oatpp-predefined-types.

This commit is contained in:
lganzzzo 2020-01-25 00:36:11 +07:00
parent e4ea48bf3c
commit aa61aa7a44
2 changed files with 117 additions and 34 deletions

View File

@ -325,6 +325,42 @@ async::CoroutineStarter IOStream::initContextsAsync() {
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ConsistentOutputStream
v_io_size ConsistentOutputStream::writeAsString(v_int8 value){
v_char8 a[16];
auto size = utils::conversion::int32ToCharSequence(value, &a[0], 16);
if(size > 0){
return writeSimple(&a[0], size);
}
return 0;
}
v_io_size ConsistentOutputStream::writeAsString(v_uint8 value){
v_char8 a[16];
auto size = utils::conversion::uint32ToCharSequence(value, &a[0], 16);
if(size > 0){
return writeSimple(&a[0], size);
}
return 0;
}
v_io_size ConsistentOutputStream::writeAsString(v_int16 value){
v_char8 a[16];
auto size = utils::conversion::int32ToCharSequence(value, &a[0], 16);
if(size > 0){
return writeSimple(&a[0], size);
}
return 0;
}
v_io_size ConsistentOutputStream::writeAsString(v_uint16 value){
v_char8 a[16];
auto size = utils::conversion::uint32ToCharSequence(value, &a[0], 16);
if(size > 0){
return writeSimple(&a[0], size);
}
return 0;
}
v_io_size ConsistentOutputStream::writeAsString(v_int32 value){
v_char8 a[16];
auto size = utils::conversion::int32ToCharSequence(value, &a[0], 16);
@ -408,6 +444,14 @@ ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int8& valu
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt8& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
}
s.writeSimple("[<UInt8(null)>]");
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int16& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
@ -416,6 +460,14 @@ ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int16& val
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt16& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
}
s.writeSimple("[<UInt16(null)>]");
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int32& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
@ -424,6 +476,14 @@ ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int32& val
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt32& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
}
s.writeSimple("[<UInt32(null)>]");
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int64& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
@ -432,6 +492,14 @@ ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int64& val
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt64& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
}
s.writeSimple("[<UInt64(null)>]");
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Float32& value) {
if(value.getPtr()) {
return operator << (s, value->getValue());
@ -465,35 +533,6 @@ ConsistentOutputStream& operator << (ConsistentOutputStream& s, const char* str)
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int32 value) {
s.writeAsString(value);
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int64 value) {
s.writeAsString(value);
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_float32 value) {
s.writeAsString(value);
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_float64 value) {
s.writeAsString(value);
return s;
}
ConsistentOutputStream& operator << (ConsistentOutputStream& s, bool value) {
if(value) {
s.OutputStream::writeSimple("true");
} else {
s.OutputStream::writeSimple("false");
}
return s;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// DataTransferProcessor

View File

@ -374,6 +374,34 @@ public:
class ConsistentOutputStream : public OutputStream {
public:
/**
* Convert value to string and write to stream.
* @param value
* @return - actual number of bytes written. &id:oatpp::v_io_size;. <br>
*/
v_io_size writeAsString(v_int8 value);
/**
* Convert value to string and write to stream.
* @param value
* @return - actual number of bytes written. &id:oatpp::v_io_size;. <br>
*/
v_io_size writeAsString(v_uint8 value);
/**
* Convert value to string and write to stream.
* @param value
* @return - actual number of bytes written. &id:oatpp::v_io_size;. <br>
*/
v_io_size writeAsString(v_int16 value);
/**
* Convert value to string and write to stream.
* @param value
* @return - actual number of bytes written. &id:oatpp::v_io_size;. <br>
*/
v_io_size writeAsString(v_uint16 value);
/**
* Convert value to string and write to stream.
* @param value
@ -427,19 +455,35 @@ public:
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const oatpp::String& str);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int8& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt8& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int16& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt16& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int32& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt32& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Int64& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const UInt64& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Float32& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Float64& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const Boolean& value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, const char* str);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int32 value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int64 value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_float32 value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_float64 value);
ConsistentOutputStream& operator << (ConsistentOutputStream& s, bool value);
template<typename T>
ConsistentOutputStream& operator << (ConsistentOutputStream& s, T value) {
s.writeAsString(value);
return s;
}
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int8 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_uint8 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int16 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_uint16 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int32 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_uint32 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_int64 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_uint64 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_float32 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, v_float64 value);
//ConsistentOutputStream& operator << (ConsistentOutputStream& s, bool value);
/**
* Error of Asynchronous stream transfer.