Skip to content

Commit 5570591

Browse files
committed
style: Use std::unique_ptr<std::istream> in InputStreamBase
Simplified the class by removing its member variables m_DeleteIStream and m_WasmStringStream. Avoided manual memory management.
1 parent 7da4067 commit 5570591

File tree

1 file changed

+13
-27
lines changed

1 file changed

+13
-27
lines changed

include/itkInputStreamBase.h

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -54,21 +54,15 @@ class WebAssemblyInterface_EXPORT InputStreamBase
5454
std::istream *
5555
GetPointer()
5656
{
57-
return m_IStream;
57+
return m_IStream.get();
5858
}
5959

6060
void
6161
SetJSON(const std::string & json)
6262
{
63-
if (m_DeleteIStream && m_IStream != nullptr)
64-
{
65-
delete m_IStream;
66-
}
67-
m_DeleteIStream = false;
68-
m_WasmStringStream = WasmStringStream::New();
69-
m_WasmStringStream->SetJSON(json.c_str());
70-
71-
m_IStream = &(m_WasmStringStream->GetStringStream());
63+
const auto wasmStringStream = WasmStringStream::New();
64+
wasmStringStream->SetJSON(json.c_str());
65+
m_IStream = std::make_unique<std::stringstream>(std::move(wasmStringStream->GetStringStream()));
7266
}
7367

7468
virtual void
@@ -78,28 +72,20 @@ class WebAssemblyInterface_EXPORT InputStreamBase
7872
void
7973
SetFile(const std::string & fileName, const std::ios_base::openmode openMode)
8074
{
81-
if (m_DeleteIStream && m_IStream != nullptr)
82-
{
83-
delete m_IStream;
84-
}
85-
m_IStream = new std::ifstream(fileName, openMode);
86-
m_DeleteIStream = true;
75+
m_IStream = std::make_unique<std::ifstream>(fileName, openMode);
8776
}
8877

8978
InputStreamBase() = default;
90-
virtual ~InputStreamBase()
91-
{
92-
if (m_DeleteIStream && m_IStream != nullptr)
93-
{
94-
delete m_IStream;
95-
}
96-
}
9779

98-
private:
99-
std::istream * m_IStream{ nullptr };
100-
bool m_DeleteIStream{ false };
80+
// Move semantics for its derived classes:
81+
InputStreamBase(InputStreamBase &&) = default;
82+
InputStreamBase &
83+
operator=(InputStreamBase &&) = default;
10184

102-
WasmStringStream::Pointer m_WasmStringStream;
85+
virtual ~InputStreamBase() = default;
86+
87+
private:
88+
std::unique_ptr<std::istream> m_IStream;
10389
};
10490

10591

0 commit comments

Comments
 (0)