From: <m97...@us...> - 2010-08-12 21:45:55
|
Revision: 11637 http://openmsx.svn.sourceforge.net/openmsx/?rev=11637&view=rev Author: m9710797 Date: 2010-08-12 21:45:48 +0000 (Thu, 12 Aug 2010) Log Message: ----------- Replaced some usages of vector<T> with MemBuffer<T> In most of these cases the vector was created with some fixed size and later never resized. Also the vector was initialized soon after creation. So the default zero-initialization of the vector was useless. Modified Paths: -------------- openmsx/trunk/src/fdc/DiskImageUtils.cc openmsx/trunk/src/fdc/DiskImageUtils.hh openmsx/trunk/src/fdc/MSXtar.hh openmsx/trunk/src/ide/MB89352.cc openmsx/trunk/src/ide/MB89352.hh openmsx/trunk/src/ide/WD33C93.cc openmsx/trunk/src/ide/WD33C93.hh openmsx/trunk/src/memory/AmdFlash.hh openmsx/trunk/src/memory/Rom.cc openmsx/trunk/src/memory/Rom.hh openmsx/trunk/src/serialize.cc openmsx/trunk/src/sound/WavData.cc openmsx/trunk/src/sound/WavData.hh openmsx/trunk/src/sound/YMF278.cc openmsx/trunk/src/video/SDLGLOutputSurface.cc Modified: openmsx/trunk/src/fdc/DiskImageUtils.cc =================================================================== --- openmsx/trunk/src/fdc/DiskImageUtils.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/fdc/DiskImageUtils.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -269,7 +269,7 @@ cylinder = tmp / 16; } -void partition(SectorAccessibleDisk& disk, std::vector<unsigned> sizes) +void partition(SectorAccessibleDisk& disk, const std::vector<unsigned>& sizes) { assert(sizes.size() <= 31); Modified: openmsx/trunk/src/fdc/DiskImageUtils.hh =================================================================== --- openmsx/trunk/src/fdc/DiskImageUtils.hh 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/fdc/DiskImageUtils.hh 2010-08-12 21:45:48 UTC (rev 11637) @@ -52,7 +52,8 @@ * @param disk The disk to partition. * @param sizes The number of sectors for each partition. */ - void partition(SectorAccessibleDisk& disk, std::vector<unsigned> sizes); + void partition(SectorAccessibleDisk& disk, + const std::vector<unsigned>& sizes); }; } // namespace openmsx Modified: openmsx/trunk/src/fdc/MSXtar.hh =================================================================== --- openmsx/trunk/src/fdc/MSXtar.hh 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/fdc/MSXtar.hh 2010-08-12 21:45:48 UTC (rev 11637) @@ -9,10 +9,10 @@ #ifndef MSXTAR_HH #define MSXTAR_HH +#include "MemBuffer.hh" #include "openmsx.hh" #include "noncopyable.hh" #include <string> -#include <vector> namespace openmsx { @@ -102,7 +102,7 @@ SectorAccessibleDisk& disk; - std::vector<byte> fatBuffer; + MemBuffer<byte> fatBuffer; unsigned maxCluster; unsigned sectorsPerCluster; Modified: openmsx/trunk/src/ide/MB89352.cc =================================================================== --- openmsx/trunk/src/ide/MB89352.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/ide/MB89352.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -116,10 +116,10 @@ const XMLElement& typeElem = target.getChild("type"); const string& type = typeElem.getData(); if (type == "SCSIHD") { - dev[id].reset(new SCSIHD(motherBoard, target, &buffer[0], + dev[id].reset(new SCSIHD(motherBoard, target, buffer.data(), SCSIDevice::MODE_SCSI2 | SCSIDevice::MODE_MEGASCSI)); } else if (type == "SCSILS120") { - dev[id].reset(new SCSILS120(motherBoard, target, &buffer[0], + dev[id].reset(new SCSILS120(motherBoard, target, buffer.data(), SCSIDevice::MODE_SCSI2 | SCSIDevice::MODE_MEGASCSI)); } else { throw MSXException("Unknown SCSI device: " + type); @@ -776,7 +776,7 @@ template<typename Archive> void MB89352::serialize(Archive& ar, unsigned /*version*/) { - ar.serialize_blob("buffer", &buffer[0], unsigned(buffer.size())); + ar.serialize_blob("buffer", buffer.data(), buffer.size()); char tag[8] = { 'd', 'e', 'v', 'i', 'c', 'e', 'X', 0 }; for (unsigned i = 0; i < MAX_DEV; ++i) { tag[6] = char('0' + i); Modified: openmsx/trunk/src/ide/MB89352.hh =================================================================== --- openmsx/trunk/src/ide/MB89352.hh 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/ide/MB89352.hh 2010-08-12 21:45:48 UTC (rev 11637) @@ -13,8 +13,8 @@ #define MB89352_HH #include "SCSI.hh" +#include "MemBuffer.hh" #include <memory> -#include <vector> namespace openmsx { @@ -47,7 +47,7 @@ byte getSSTS() const; std::auto_ptr<SCSIDevice> dev[8]; - std::vector<byte> buffer; // buffer for transfer + MemBuffer<byte> buffer; // buffer for transfer unsigned cdbIdx; // cdb index unsigned bufIdx; // buffer index int msgin; // Message In flag Modified: openmsx/trunk/src/ide/WD33C93.cc =================================================================== --- openmsx/trunk/src/ide/WD33C93.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/ide/WD33C93.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -127,11 +127,11 @@ const XMLElement& typeElem = target.getChild("type"); const std::string& type = typeElem.getData(); if (type == "SCSIHD") { - dev[id].reset(new SCSIHD(motherBoard, target, &buffer[0], + dev[id].reset(new SCSIHD(motherBoard, target, buffer.data(), SCSIDevice::MODE_SCSI1 | SCSIDevice::MODE_UNITATTENTION | SCSIDevice::MODE_NOVAXIS)); } else if (type == "SCSILS120") { - dev[id].reset(new SCSILS120(motherBoard, target, &buffer[0], + dev[id].reset(new SCSILS120(motherBoard, target, buffer.data(), SCSIDevice::MODE_SCSI1 | SCSIDevice::MODE_UNITATTENTION | SCSIDevice::MODE_NOVAXIS)); } else { @@ -483,7 +483,7 @@ template<typename Archive> void WD33C93::serialize(Archive& ar, unsigned /*version*/) { - ar.serialize_blob("buffer", &buffer[0], unsigned(buffer.size())); + ar.serialize_blob("buffer", buffer.data(), buffer.size()); char tag[8] = { 'd', 'e', 'v', 'i', 'c', 'e', 'X', 0 }; for (unsigned i = 0; i < MAX_DEV; ++i) { tag[6] = char('0' + i); Modified: openmsx/trunk/src/ide/WD33C93.hh =================================================================== --- openmsx/trunk/src/ide/WD33C93.hh 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/ide/WD33C93.hh 2010-08-12 21:45:48 UTC (rev 11637) @@ -13,8 +13,8 @@ #define WD33C93_HH #include "SCSI.hh" +#include "MemBuffer.hh" #include <memory> -#include <vector> namespace openmsx { @@ -44,7 +44,7 @@ void disconnect(); void execCmd(byte value); - std::vector<byte> buffer; + MemBuffer<byte> buffer; std::auto_ptr<SCSIDevice> dev[8]; unsigned bufIdx; int counter; Modified: openmsx/trunk/src/memory/AmdFlash.hh =================================================================== --- openmsx/trunk/src/memory/AmdFlash.hh 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/memory/AmdFlash.hh 2010-08-12 21:45:48 UTC (rev 11637) @@ -3,9 +3,9 @@ #ifndef AMDFLASH_HH #define AMDFLASH_HH +#include "MemBuffer.hh" #include "openmsx.hh" #include "noncopyable.hh" -#include <vector> #include <memory> namespace openmsx { @@ -62,8 +62,8 @@ MSXMotherBoard& motherBoard; const Rom& rom; std::auto_ptr<SRAM> ram; - std::vector<int> writeAddress; - std::vector<const byte*> readAddress; + MemBuffer<int> writeAddress; + MemBuffer<const byte*> readAddress; const unsigned logSectorSize; const unsigned sectorMask; const unsigned size; Modified: openmsx/trunk/src/memory/Rom.cc =================================================================== --- openmsx/trunk/src/memory/Rom.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/memory/Rom.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -173,8 +173,9 @@ // the size of the mapper (and you don't care about initial // content) size = config.getChildDataAsInt("size", 0) * 1024; // in kb - extendedRom.assign(size, 0xff); - rom = size ? &extendedRom[0] : NULL; + extendedRom.resize(size); + memset(extendedRom.data(), 0xff, size); + rom = extendedRom.data(); // Content does not depend on external files. No need to check checkResolvedSha1 = false; @@ -203,8 +204,8 @@ } else { size = patchSize; extendedRom.resize(size); - patch->copyBlock(0, &extendedRom[0], size); - rom = &extendedRom[0]; + patch->copyBlock(0, extendedRom.data(), size); + rom = extendedRom.data(); } // calculated because it's different from original Modified: openmsx/trunk/src/memory/Rom.hh =================================================================== --- openmsx/trunk/src/memory/Rom.hh 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/memory/Rom.hh 2010-08-12 21:45:48 UTC (rev 11637) @@ -3,10 +3,10 @@ #ifndef ROM_HH #define ROM_HH +#include "MemBuffer.hh" #include "openmsx.hh" #include "noncopyable.hh" #include <string> -#include <vector> #include <memory> #include <cassert> @@ -44,7 +44,7 @@ bool checkSHA1(const XMLElement& config); const byte* rom; - std::vector<byte> extendedRom; + MemBuffer<byte> extendedRom; std::auto_ptr<File> file; Modified: openmsx/trunk/src/serialize.cc =================================================================== --- openmsx/trunk/src/serialize.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/serialize.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -89,13 +89,13 @@ } else { encoding = "gz-base64"; uLongf dstLen = len + len / 1000 + 12 + 1; // worst-case - std::vector<char> buf(dstLen); - if (compress2(reinterpret_cast<Bytef*>(&buf[0]), &dstLen, + MemBuffer<byte> buf(dstLen); + if (compress2(buf.data(), &dstLen, reinterpret_cast<const Bytef*>(data), len, 9) != Z_OK) { throw MSXException("Error while compressing blob."); } - tmp = Base64::encode(&buf[0], dstLen); + tmp = Base64::encode(buf.data(), dstLen); } this->self().beginTag(tag); this->self().attribute("encoding", encoding); Modified: openmsx/trunk/src/sound/WavData.cc =================================================================== --- openmsx/trunk/src/sound/WavData.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/sound/WavData.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -39,10 +39,10 @@ throw MSXException("Couldn't build wav converter"); } - buffer.assign(wavBuf, wavBuf + wavLen); + buffer.resize(wavLen * audioCVT.len_mult); + memcpy(buffer.data(), wavBuf, wavLen); SDL_FreeWAV(wavBuf); - buffer.resize(wavLen * audioCVT.len_mult); // possibly we need more space - audioCVT.buf = &buffer[0]; + audioCVT.buf = buffer.data(); audioCVT.len = wavLen; if (SDL_ConvertAudio(&audioCVT) == -1) { @@ -73,7 +73,7 @@ const void* WavData::getData() const { - return &buffer[0]; + return buffer.data(); } } // namespace openmsx Modified: openmsx/trunk/src/sound/WavData.hh =================================================================== --- openmsx/trunk/src/sound/WavData.hh 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/sound/WavData.hh 2010-08-12 21:45:48 UTC (rev 11637) @@ -3,9 +3,9 @@ #ifndef WAVDATA_HH #define WAVDATA_HH +#include "MemBuffer.hh" #include "openmsx.hh" #include <string> -#include <vector> namespace openmsx { @@ -21,7 +21,7 @@ const void* getData() const; private: - std::vector<byte> buffer; + MemBuffer<byte> buffer; unsigned bits; unsigned freq; unsigned length; Modified: openmsx/trunk/src/sound/YMF278.cc =================================================================== --- openmsx/trunk/src/sound/YMF278.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/sound/YMF278.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -11,11 +11,11 @@ #include "GlobalSettings.hh" #include "Reactor.hh" #include "Clock.hh" +#include "MemBuffer.hh" #include "serialize.hh" #include <algorithm> #include <cmath> #include <cstring> -#include <vector> namespace openmsx { @@ -166,7 +166,7 @@ int pcm_l, pcm_r; const std::auto_ptr<Rom> rom; - std::vector<byte> ram; + MemBuffer<byte> ram; const unsigned endRom; const unsigned endRam; @@ -941,7 +941,7 @@ , rom(new Rom(motherBoard, name + " ROM", "rom", config)) , ram(ramSize * 1024) // in kB , endRom(rom->getSize()) - , endRam(unsigned(endRom + ram.size())) + , endRam(endRom + ram.size()) { memadr = 0; // avoid UMR setOutputRate(44100); // make valgrind happy @@ -965,7 +965,7 @@ void YMF278Impl::clearRam() { - memset(&ram[0], 0, ram.size()); + memset(ram.data(), 0, ram.size()); } void YMF278Impl::reset(EmuTime::param time) @@ -1063,7 +1063,7 @@ ar.serialize("busyTime", busyTime); ar.serialize("slots", slots); ar.serialize("eg_cnt", eg_cnt); - ar.serialize_blob("ram", &ram[0], unsigned(ram.size())); + ar.serialize_blob("ram", ram.data(), ram.size()); ar.serialize_blob("registers", regs, sizeof(regs)); // TODO restore more state from registers Modified: openmsx/trunk/src/video/SDLGLOutputSurface.cc =================================================================== --- openmsx/trunk/src/video/SDLGLOutputSurface.cc 2010-08-12 21:03:37 UTC (rev 11636) +++ openmsx/trunk/src/video/SDLGLOutputSurface.cc 2010-08-12 21:45:48 UTC (rev 11637) @@ -5,8 +5,8 @@ #include "PNG.hh" #include "build-info.hh" #include "Math.hh" +#include "MemBuffer.hh" #include "vla.hh" -#include <vector> #include <SDL.h> namespace openmsx { @@ -132,11 +132,11 @@ const std::string& filename, unsigned width, unsigned height) { VLA(const void*, rowPointers, height); - std::vector<byte> buffer(width * height * 3); + MemBuffer<byte> buffer(width * height * 3); for (unsigned i = 0; i < height; ++i) { rowPointers[height - 1 - i] = &buffer[width * 3 * i]; } - glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, &buffer[0]); + glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, buffer.data()); PNG::save(width, height, rowPointers, filename); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |