From ca32c59a58d37c1822e185a2d5f3d0d3e8943593 Mon Sep 17 00:00:00 2001 From: Marijn Tamis Date: Thu, 3 May 2018 18:22:48 +0200 Subject: NvCloth 1.1.4 Release. (24070740) --- NvCloth/samples/SampleBase/utils/DataStream.cpp | 67 +++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 NvCloth/samples/SampleBase/utils/DataStream.cpp (limited to 'NvCloth/samples/SampleBase/utils/DataStream.cpp') 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 + +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(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(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 -- cgit v1.2.3