From f1c05345cfd58790de392470493967dfbaa76684 Mon Sep 17 00:00:00 2001 From: Yan Ke Date: Tue, 2 Jan 2024 14:51:35 -0800 Subject: [PATCH 1/3] Write Arrays as an entire buffer instead of element-wise. --- src/write.tcc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/write.tcc b/src/write.tcc index 728361c..b81f749 100644 --- a/src/write.tcc +++ b/src/write.tcc @@ -56,9 +56,8 @@ template void rpcWrite(Stream& io, Array* data) { size_t size {(*data).size()}; rpcWrite(io, &size); - for (size_t i {0}; i < size; ++i) { - rpcWrite(io, &(*data)[i]); - } + size_t totalSize = size * sizeof(T); + io.write(reinterpret_cast(&(*data)[0]), totalSize); } From e261f0be85b4bee6cec7f807aacf185a6b12b64a Mon Sep 17 00:00:00 2001 From: Yan Ke Date: Tue, 2 Jan 2024 15:57:06 -0800 Subject: [PATCH 2/3] Update bulk write. --- src/print.tcc | 6 +++++- src/write.tcc | 5 ++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/print.tcc b/src/print.tcc index 472612f..9b45245 100644 --- a/src/print.tcc +++ b/src/print.tcc @@ -25,6 +25,10 @@ inline void rpcPrint(Stream& io, char* data) { } } +inline void rpcPrint(Stream& io, const char* data, int len) { + io.write(data, len); +} + /*! \ingroup print * \copydoc rpcPrint(Stream&, T) */ inline void rpcPrint(Stream& io, char const* data) { @@ -34,7 +38,7 @@ inline void rpcPrint(Stream& io, char const* data) { /*! \ingroup print * \copydoc rpcPrint(Stream&, T) */ inline void rpcPrint(Stream& io, String& data) { - rpcPrint(io, data.c_str()); + rpcPrint(io, data.c_str(), data.length() + 1); } /*! \ingroup print diff --git a/src/write.tcc b/src/write.tcc index b81f749..72cd7db 100644 --- a/src/write.tcc +++ b/src/write.tcc @@ -54,10 +54,9 @@ void rpcWrite(Stream& io, Vector* data) { * \copydoc rpcWrite(Stream&, T*) */ template void rpcWrite(Stream& io, Array* data) { - size_t size {(*data).size()}; + size_t size {n}; rpcWrite(io, &size); - size_t totalSize = size * sizeof(T); - io.write(reinterpret_cast(&(*data)[0]), totalSize); + io.write(&((*data)[0]), size * sizeof(T)); } From ab8d5b4dc0b0473838535115d8236fe8a778abf4 Mon Sep 17 00:00:00 2001 From: Yan Ke Date: Wed, 3 Jan 2024 00:26:51 -0800 Subject: [PATCH 3/3] Revert rpcPrint bug. --- src/print.tcc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/print.tcc b/src/print.tcc index 9b45245..8409531 100644 --- a/src/print.tcc +++ b/src/print.tcc @@ -38,7 +38,7 @@ inline void rpcPrint(Stream& io, char const* data) { /*! \ingroup print * \copydoc rpcPrint(Stream&, T) */ inline void rpcPrint(Stream& io, String& data) { - rpcPrint(io, data.c_str(), data.length() + 1); + rpcPrint(io, data.c_str()); } /*! \ingroup print