//--------------------------------------------------------------------- void GpuProgramManager::saveMicrocodeCache( DataStreamPtr stream ) const { if (!stream->isWriteable()) { OGRE_EXCEPT(Exception::ERR_CANNOT_WRITE_TO_FILE, "Unable to write to stream " + stream->getName(), "GpuProgramManager::saveMicrocodeCache"); } // write the size of the array size_t sizeOfArray = mMicrocodeCache.size(); stream->write(&sizeOfArray, sizeof(size_t)); // loop the array and save it MicrocodeMap::const_iterator iter = mMicrocodeCache.begin(); MicrocodeMap::const_iterator iterE = mMicrocodeCache.end(); for ( ; iter != iterE ; iter++ ) { // saves the name of the shader { const String & nameOfShader = iter->first; size_t stringLength = nameOfShader.size(); stream->write(&stringLength, sizeof(size_t)); stream->write(&nameOfShader[0], stringLength); } // saves the microcode { const Microcode & microcodeOfShader = iter->second; size_t microcodeLength = microcodeOfShader->size(); stream->write(µcodeLength, sizeof(size_t)); stream->write(microcodeOfShader->getPtr(), microcodeLength); } } }
void FileSystemArchiveTests::testCreateAndRemoveFile() { FileSystemArchive arch("./", "FileSystem"); arch.load(); CPPUNIT_ASSERT(!arch.isReadOnly()); String fileName = "a_test_file.txt"; DataStreamPtr stream = arch.create(fileName); String testString = "Some text here"; size_t written = stream->write((void*)testString.c_str(), testString.size()); CPPUNIT_ASSERT_EQUAL(testString.size(), written); stream->close(); arch.remove(fileName); CPPUNIT_ASSERT(!arch.exists(fileName)); }