aboutsummaryrefslogtreecommitdiff
path: root/NvCloth/samples/SampleBase/utils/DataStream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NvCloth/samples/SampleBase/utils/DataStream.cpp')
-rw-r--r--NvCloth/samples/SampleBase/utils/DataStream.cpp67
1 files changed, 67 insertions, 0 deletions
diff --git a/NvCloth/samples/SampleBase/utils/DataStream.cpp b/NvCloth/samples/SampleBase/utils/DataStream.cpp
new file mode 100644
index 0000000..c61badc
--- /dev/null
+++ b/NvCloth/samples/SampleBase/utils/DataStream.cpp
@@ -0,0 +1,67 @@
+/*
+* Copyright (c) 2008-2017, NVIDIA CORPORATION. All rights reserved.
+*
+* NVIDIA CORPORATION and its licensors retain all intellectual property
+* and proprietary rights in and to this software, related documentation
+* and any modifications thereto. Any use, reproduction, disclosure or
+* distribution of this software and related documentation without an express
+* license agreement from NVIDIA CORPORATION is strictly prohibited.
+*/
+
+#include "DataStream.h"
+#include <fstream>
+
+DataStream::DataStream()
+ :
+ mReadPos(0),
+ mWritePos(0)
+{
+
+}
+DataStream::DataStream(void* data, int sizeInBytes)
+ :
+ mReadPos(0),
+ mWritePos(0)
+{
+ write(data, sizeInBytes);
+}
+DataStream::DataStream(const char* filename)
+ :
+ mReadPos(0),
+ mWritePos(0)
+{
+ std::ifstream file;
+ file.open(filename,std::ifstream::binary | std::ios::ate);
+ assert(file.good());
+
+ std::streamsize size = file.tellg();
+ mBuffer.resize(size);
+ file.seekg(0, std::ios::beg);
+ file.read(reinterpret_cast<char*>(mBuffer.data()), size);
+
+ mWritePos = size;
+ file.close();
+}
+
+bool DataStream::fileExists(const char* filename)
+{
+ std::ifstream file;
+ file.open(filename, std::ifstream::binary | std::ios::ate);
+ return file.good();
+}
+
+void DataStream::saveToFile(const char* filename)
+{
+ std::ofstream file(filename, std::fstream::binary | std::fstream::trunc);
+ file.write(reinterpret_cast<char*>(mBuffer.data()), mBuffer.size());
+ file.flush();
+ file.close();
+}
+
+void DataStream::write(void* data, int sizeInBytes)
+{
+ if((int)mBuffer.size() < mWritePos + sizeInBytes)
+ mBuffer.resize(mWritePos + sizeInBytes);
+ memcpy(&mBuffer[mWritePos], data, sizeInBytes);
+ mWritePos += sizeInBytes;
+} \ No newline at end of file