From: <man...@us...> - 2013-10-26 12:24:11
|
Revision: 3038 http://sourceforge.net/p/modplug/code/3038 Author: manxorist Date: 2013-10-26 12:24:03 +0000 (Sat, 26 Oct 2013) Log Message: ----------- [Ref] serialization-utils: Read and Write functionalities share almost no code or data at all. Trivially seperate them into two seperate classes with a tiny common base class. Modified Paths: -------------- trunk/OpenMPT/common/serialization_utils.cpp trunk/OpenMPT/common/serialization_utils.h trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/ModSequence.cpp trunk/OpenMPT/soundlib/pattern.cpp trunk/OpenMPT/soundlib/patternContainer.cpp trunk/OpenMPT/soundlib/tuning.cpp trunk/OpenMPT/soundlib/tuningCollection.cpp Modified: trunk/OpenMPT/common/serialization_utils.cpp =================================================================== --- trunk/OpenMPT/common/serialization_utils.cpp 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/common/serialization_utils.cpp 2013-10-26 12:24:03 UTC (rev 3038) @@ -250,45 +250,44 @@ const char strReadNote[] = "Read note: "; -#define SSB_INITIALIZATION_LIST \ - m_Status(SNT_NONE), \ - m_nFixedEntrySize(0), \ - m_posStart(0), \ - m_nReadVersion(0), \ - m_nMaxReadEntryCount(16000), \ - m_rposMapBegin(0), \ - m_posMapEnd(0), \ - m_posDataBegin(0), \ - m_rposEndofHdrData(0), \ - m_nReadEntrycount(0), \ - m_nIdbytes(IdSizeVariable), \ - m_nCounter(0), \ - m_nNextReadHint(0), \ - m_Flags(s_DefaultFlags), \ - m_nMapReserveSize(0), \ - m_posEntrycount(0), \ - m_posMapPosField(0), \ - m_posMapStart(0) \ +Ssb::Ssb() + : m_Status(SNT_NONE) + , m_nFixedEntrySize(0) + , m_posStart(0) + , m_nIdbytes(IdSizeVariable) + , m_nCounter(0) + , m_Flags((1 << RwfWMapStartPosEntry) + (1 << RwfWMapSizeEntry) + (1 << RwfWVersionNum) + (1 << RwfRPartialIdMatch)) +{ + return; +} -Ssb::Ssb(std::ostream& oStrm) : - m_pOstrm(&oStrm), - m_pIstrm(nullptr), - SSB_INITIALIZATION_LIST -//------------------------------ -{} +SsbWrite::SsbWrite(std::ostream& oStrm) + : m_pOstrm(&oStrm) + , m_nMapReserveSize(0) + , m_posEntrycount(0) + , m_posMapPosField(0) + , m_posMapStart(0) +{ + return; +} -Ssb::Ssb(std::istream& iStrm) : - m_pOstrm(nullptr), - m_pIstrm(&iStrm), - SSB_INITIALIZATION_LIST -//------------------------------ -{} +SsbRead::SsbRead(std::istream& iStrm) + : m_pIstrm(&iStrm) + , m_nReadVersion(0) + , m_nMaxReadEntryCount(16000) + , m_rposMapBegin(0) + , m_posMapEnd(0) + , m_posDataBegin(0) + , m_rposEndofHdrData(0) + , m_nReadEntrycount(0) + , m_nNextReadHint(0) +{ + return; +} -#undef SSB_INITIALIZATION_LIST - typedef void (*fpLogFunc_t)(const char*, ...); static fpLogFunc_t const m_fpLogFunc = nullptr; // Pointer to log function. @@ -311,11 +310,11 @@ m_fpLogFunc("%s: 0x%x\n", sz, s); } -void Ssb::AddWriteNote(const SsbStatus s) {AddNote(s, strWriteNote);} -void Ssb::AddReadNote(const SsbStatus s) {AddNote(s, strReadNote);} +void SsbWrite::AddWriteNote(const SsbStatus s) {AddNote(s, strWriteNote);} +void SsbRead::AddReadNote(const SsbStatus s) {AddNote(s, strReadNote);} -void Ssb::AddReadNote(const ReadEntry* const pRe, const NumType nNum) +void SsbRead::AddReadNote(const ReadEntry* const pRe, const NumType nNum) //------------------------------------------------------------------- { m_Status |= SNT_PROGRESS; @@ -334,7 +333,7 @@ // Called after writing an entry. -void Ssb::AddWriteNote(const char* pId, const size_t nIdSize, const NumType nEntryNum, const DataSize nBytecount, const RposType rposStart) +void SsbWrite::AddWriteNote(const char* pId, const size_t nIdSize, const NumType nEntryNum, const DataSize nBytecount, const RposType rposStart) //---------------------------------------------------------------------------- { m_Status |= SNT_PROGRESS; @@ -347,7 +346,7 @@ } -void Ssb::ResetReadstatus() +void SsbRead::ResetReadstatus() //------------------------- { m_Status = SNT_NONE; @@ -356,7 +355,7 @@ } -void Ssb::WriteMapItem( const char* pId, +void SsbWrite::WriteMapItem( const char* pId, const size_t nIdSize, const RposType& rposDataStart, const DataSize& nDatasize, @@ -390,7 +389,7 @@ } -void Ssb::ReserveMapSize(uint32 nSize) +void SsbWrite::ReserveMapSize(uint32 nSize) //------------------------------------ { std::ostream& oStrm = *m_pOstrm; @@ -404,7 +403,7 @@ } -void Ssb::SetIdSize(uint16 nSize) +void SsbWrite::SetIdSize(uint16 nSize) //------------------------------- { if (nSize == IdSizeVariable || nSize > IdSizeMaxFixedSize) @@ -414,7 +413,7 @@ } -void Ssb::IncrementWriteCounter() +void SsbWrite::IncrementWriteCounter() //------------------------------- { m_nCounter++; @@ -426,7 +425,7 @@ } -void Ssb::BeginWrite(const char* pId, const size_t nIdSize, const uint64& nVersion) +void SsbWrite::BeginWrite(const char* pId, const size_t nIdSize, const uint64& nVersion) //--------------------------------------------------------------------------------- { std::ostream& oStrm = *m_pOstrm; @@ -505,7 +504,7 @@ } -Ssb::ReadRv Ssb::OnReadEntry(const ReadEntry* pE, const char* pId, const size_t nIdSize, const Postype& posReadBegin) +SsbRead::ReadRv SsbRead::OnReadEntry(const ReadEntry* pE, const char* pId, const size_t nIdSize, const Postype& posReadBegin) //------------------------------------------------------------------------------------------------------------------- { if (pE != nullptr) @@ -528,7 +527,7 @@ } -void Ssb::OnWroteItem(const char* pId, const size_t nIdSize, const Postype& posBeforeWrite) +void SsbWrite::OnWroteItem(const char* pId, const size_t nIdSize, const Postype& posBeforeWrite) //----------------------------------------------------------------------------------------- { const Offtype nRawEntrySize = m_pOstrm->tellp() - posBeforeWrite; @@ -562,7 +561,7 @@ } -void Ssb::CompareId(std::istream& iStrm, const char* pId, const size_t nIdlength) +void SsbRead::CompareId(std::istream& iStrm, const char* pId, const size_t nIdlength) //--------------------------------------------------------------------------- { uint8 tempU8 = 0; @@ -581,7 +580,7 @@ } -void Ssb::BeginRead(const char* pId, const size_t nLength, const uint64& nVersion) +void SsbRead::BeginRead(const char* pId, const size_t nLength, const uint64& nVersion) //--------------------------------------------------------------------------------- { std::istream& iStrm = *m_pIstrm; @@ -726,7 +725,7 @@ } -void Ssb::CacheMap() +void SsbRead::CacheMap() //------------------ { std::istream& iStrm = *m_pIstrm; @@ -820,7 +819,7 @@ } -const ReadEntry* Ssb::Find(const char* pId, const size_t nIdLength) +const ReadEntry* SsbRead::Find(const char* pId, const size_t nIdLength) //----------------------------------------------------------------- { m_pIstrm->clear(); @@ -850,7 +849,7 @@ } -void Ssb::FinishWrite() +void SsbWrite::FinishWrite() //--------------------- { std::ostream& oStrm = *m_pOstrm; Modified: trunk/OpenMPT/common/serialization_utils.h =================================================================== --- trunk/OpenMPT/common/serialization_utils.h 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/common/serialization_utils.h 2013-10-26 12:24:03 UTC (rev 3038) @@ -259,11 +259,59 @@ } + class Ssb -//======= { + +protected: + + Ssb(); + public: + // When writing, returns the number of entries written. + // When reading, returns the number of entries read not including unrecognized entries. + NumType GetCounter() const {return m_nCounter;} + + void SetFlag(Rwf flag, bool val) {m_Flags.set(flag, val);} + bool GetFlag(Rwf flag) const {return m_Flags[flag];} + + // Write given string to log if log func is defined. + void AddToLog(const char *psz); + +protected: + + void AddNote(const SsbStatus s, const char* sz); + +public: + + SsbStatus m_Status; + uint32 m_nFixedEntrySize; // Read/write: If > 0, data entries have given fixed size. + +protected: + + Postype m_posStart; // Read/write: Stream position at the beginning of object. + + uint16 m_nIdbytes; // Read/Write: Tells map ID entry size in bytes. If size is variable, value is IdSizeVariable. + NumType m_nCounter; // Read/write: Keeps count of entries written/read. + + std::bitset<RwfNumFlags> m_Flags; // Read/write: Various flags. + +public: + + static const uint8 s_DefaultFlagbyte = 0; + static const char s_EntryID[3]; + +}; + + + +class SsbRead + : public Ssb +{ + +public: + enum ReadRv // Read return value. { EntryRead, @@ -275,25 +323,12 @@ }; typedef std::vector<ReadEntry>::const_iterator ReadIterator; - Ssb(std::ostream& oStrm); - Ssb(std::istream& iStrm); + SsbRead(std::istream& iStrm); - ~Ssb() {} - - // Sets map ID size in writing. - void SetIdSize(uint16 idSize); - - // Write header - void BeginWrite(const char* pId, const size_t nIdSize, const uint64& nVersion); - void BeginWrite(const char* pszId, const uint64& nVersion) {BeginWrite(pszId, strlen(pszId), nVersion);} - // Call this to begin reading: must be called before other read functions. void BeginRead(const char* pId, const size_t nLength, const uint64& nVersion); void BeginRead(const char* pszId, const uint64& nVersion) {return BeginRead(pszId, strlen(pszId), nVersion);} - // Reserves space for map to current position. Call after BeginWrite and before writing any entries. - void ReserveMapSize(uint32 nSize); - // After calling BeginRead(), this returns number of entries in the file. NumType GetNumEntries() const {return m_nReadEntrycount;} @@ -309,10 +344,6 @@ IdMatchStatus CompareId(const ReadIterator& iter, const char* pszId) {return CompareId(iter, pszId, strlen(pszId));} IdMatchStatus CompareId(const ReadIterator& iter, const char* pId, const size_t nIdSize); - // When writing, returns the number of entries written. - // When reading, returns the number of entries read not including unrecognized entries. - NumType GetCounter() const {return m_nCounter;} - uint64 GetReadVersion() {return m_nReadVersion;} // Read item using default read implementation. @@ -332,27 +363,8 @@ template <class T, class FuncObj> ReadRv ReadItem(const ReadIterator& iter, T& obj, FuncObj func); - // Write item using default write implementation. - template <class T> - void WriteItem(const T& obj, const char* pszId) {WriteItem(obj, pszId, strlen(pszId), &srlztn::WriteItem<T>);} +private: - template <class T> - void WriteItem(const T& obj, const char* pId, const size_t nIdSize) {WriteItem(obj, pId, nIdSize, &srlztn::WriteItem<T>);} - - // Write item using given function. - template <class T, class FuncObj> - void WriteItem(const T& obj, const char* pId, const size_t nIdSize, FuncObj); - - // Writes mapping. - void FinishWrite(); - - void SetFlag(Rwf flag, bool val) {m_Flags.set(flag, val);} - bool GetFlag(Rwf flag) const {return m_Flags[flag];} - - // Write given string to log if log func is defined. - void AddToLog(const char *psz); - -private: // Reads map to cache. void CacheMap(); @@ -367,50 +379,21 @@ // Called after reading an object. ReadRv OnReadEntry(const ReadEntry* pE, const char* pId, const size_t nIdSize, const Postype& posReadBegin); - // Called after writing an item. - void OnWroteItem(const char* pId, const size_t nIdSize, const Postype& posBeforeWrite); - - void AddNote(const SsbStatus s, const char* sz); - void AddReadNote(const SsbStatus s); // Called after reading entry. pRe is a pointer to associated map entry if exists. void AddReadNote(const ReadEntry* const pRe, const NumType nNum); - void AddWriteNote(const SsbStatus s); - void AddWriteNote(const char* pId, - const size_t nIdLength, - const NumType nEntryNum, - const DataSize nBytecount, - const RposType rposStart); - - // Writes mapping item to mapstream. - void WriteMapItem(const char* pId, - const size_t nIdSize, - const RposType& rposDataStart, - const DataSize& nDatasize, - const char* pszDesc); - void ResetReadstatus(); - void ResetWritestatus() {m_Status = SNT_NONE;} - void IncrementWriteCounter(); - private: - std::ostream* m_pOstrm; // Write: Pointer to write stream. std::istream* m_pIstrm; // Read: Pointer to read stream. -public: - - SsbStatus m_Status; - uint32 m_nFixedEntrySize; // Read/write: If > 0, data entries have given fixed size. - private: std::vector<char> m_Idarray; // Read: Holds entry ids. - Postype m_posStart; // Read/write: Stream position at the beginning of object. std::vector<ReadEntry> mapData; // Read: Contains map information. uint64 m_nReadVersion; // Read: Version is placed here when reading. NumType m_nMaxReadEntryCount; // Read: Limits the number of entries allowed to be read. @@ -420,25 +403,83 @@ RposType m_rposEndofHdrData; // Read: rpos of end of header data. NumType m_nReadEntrycount; // Read: Number of entries. - uint16 m_nIdbytes; // Read/Write: Tells map ID entry size in bytes. If size is variable, value is IdSizeVariable. - NumType m_nCounter; // Read/write: Keeps count of entries written/read. NumType m_nNextReadHint; // Read: Hint where to start looking for the next read entry. - std::bitset<RwfNumFlags> m_Flags; // Read/write: Various flags. +}; + + + +class SsbWrite + : public Ssb +{ + +public: + + SsbWrite(std::ostream& oStrm); + + // Sets map ID size in writing. + void SetIdSize(uint16 idSize); + + // Write header + void BeginWrite(const char* pId, const size_t nIdSize, const uint64& nVersion); + void BeginWrite(const char* pszId, const uint64& nVersion) {BeginWrite(pszId, strlen(pszId), nVersion);} + + // Reserves space for map to current position. Call after BeginWrite and before writing any entries. + void ReserveMapSize(uint32 nSize); + + // Write item using default write implementation. + template <class T> + void WriteItem(const T& obj, const char* pszId) {WriteItem(obj, pszId, strlen(pszId), &srlztn::WriteItem<T>);} + + template <class T> + void WriteItem(const T& obj, const char* pId, const size_t nIdSize) {WriteItem(obj, pId, nIdSize, &srlztn::WriteItem<T>);} + + // Write item using given function. + template <class T, class FuncObj> + void WriteItem(const T& obj, const char* pId, const size_t nIdSize, FuncObj); + + // Writes mapping. + void FinishWrite(); + +private: + + // Called after writing an item. + void OnWroteItem(const char* pId, const size_t nIdSize, const Postype& posBeforeWrite); + + void AddWriteNote(const SsbStatus s); + void AddWriteNote(const char* pId, + const size_t nIdLength, + const NumType nEntryNum, + const DataSize nBytecount, + const RposType rposStart); + + // Writes mapping item to mapstream. + void WriteMapItem(const char* pId, + const size_t nIdSize, + const RposType& rposDataStart, + const DataSize& nDatasize, + const char* pszDesc); + + void ResetWritestatus() {m_Status = SNT_NONE;} + + void IncrementWriteCounter(); + +private: + + std::ostream* m_pOstrm; // Write: Pointer to write stream. + +private: + uint32 m_nMapReserveSize; // Write: Number of bytes to reserve for map if writing it before data. Postype m_posEntrycount; // Write: Pos of entrycount field. Postype m_posMapPosField; // Write: Pos of map position field. Postype m_posMapStart; // Write: Pos of map start. std::ostringstream m_MapStream; // Write: Map stream. -public: - static const uint8 s_DefaultFlagbyte = 0; - static const char s_EntryID[3]; - static const int32 s_DefaultFlags = (1 << RwfWMapStartPosEntry) + - (1 << RwfWMapSizeEntry) + (1 << RwfWVersionNum) + - (1 << RwfRPartialIdMatch); }; + + template<typename T> struct IdLE { @@ -461,7 +502,7 @@ template <class T, class FuncObj> -void Ssb::WriteItem(const T& obj, const char* pId, const size_t nIdSize, FuncObj Func) +void SsbWrite::WriteItem(const T& obj, const char* pId, const size_t nIdSize, FuncObj Func) //------------------------------------------------------------------------------------ { const Postype pos = m_pOstrm->tellp(); @@ -470,7 +511,7 @@ } template <class T, class FuncObj> -Ssb::ReadRv Ssb::ReadItem(T& obj, const char* pId, const size_t nIdSize, FuncObj Func) +SsbRead::ReadRv SsbRead::ReadItem(T& obj, const char* pId, const size_t nIdSize, FuncObj Func) //------------------------------------------------------------------------------------ { const ReadEntry* pE = Find(pId, nIdSize); @@ -482,7 +523,7 @@ template <class T, class FuncObj> -Ssb::ReadRv Ssb::ReadItem(const ReadIterator& iter, T& obj, FuncObj func) +SsbRead::ReadRv SsbRead::ReadItem(const ReadIterator& iter, T& obj, FuncObj func) //----------------------------------------------------------------------- { m_pIstrm->clear(); @@ -494,7 +535,7 @@ } -inline Ssb::IdMatchStatus Ssb::CompareId(const ReadIterator& iter, const char* pId, const size_t nIdSize) +inline SsbRead::IdMatchStatus SsbRead::CompareId(const ReadIterator& iter, const char* pId, const size_t nIdSize) //------------------------------------------------------------------------------------------------------- { if (nIdSize == iter->nIdLength && memcmp(&m_Idarray[iter->nIdpos], pId, iter->nIdLength) == 0) @@ -504,7 +545,7 @@ } -inline Ssb::ReadIterator Ssb::GetReadBegin() +inline SsbRead::ReadIterator SsbRead::GetReadBegin() //------------------------------------------ { ASSERT(GetFlag(RwfRMapHasId) && (GetFlag(RwfRMapHasStartpos) || GetFlag(RwfRMapHasSize) || m_nFixedEntrySize > 0)); @@ -514,7 +555,7 @@ } -inline Ssb::ReadIterator Ssb::GetReadEnd() +inline SsbRead::ReadIterator SsbRead::GetReadEnd() //---------------------------------------- { if (GetFlag(RwfRMapCached) == false) Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2013-10-26 12:24:03 UTC (rev 3038) @@ -1016,7 +1016,7 @@ if(version >= 0x88D) { - srlztn::Ssb ssb(iStrm); + srlztn::SsbRead ssb(iStrm); ssb.BeginRead("mptm", MptVersion::num); ssb.ReadItem(GetTuneSpecificTunings(), "0", 1, &ReadTuningCollection); ssb.ReadItem(*this, "1", 1, &ReadTuningMap); @@ -1632,7 +1632,7 @@ // catch standard library truncating files ALWAYS_ASSERT(MPTStartPos > 0); - srlztn::Ssb ssb(fout); + srlztn::SsbWrite ssb(fout); ssb.BeginWrite("mptm", MptVersion::num); if(GetTuneSpecificTunings().GetNumTunings() > 0) Modified: trunk/OpenMPT/soundlib/ModSequence.cpp =================================================================== --- trunk/OpenMPT/soundlib/ModSequence.cpp 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/soundlib/ModSequence.cpp 2013-10-26 12:24:03 UTC (rev 3038) @@ -798,7 +798,7 @@ void WriteModSequence(std::ostream& oStrm, const ModSequence& seq) //---------------------------------------------------------------- { - srlztn::Ssb ssb(oStrm); + srlztn::SsbWrite ssb(oStrm); ssb.BeginWrite(FileIdSequence, MptVersion::num); ssb.WriteItem(seq.m_sName.c_str(), "n"); const uint16 nLength = seq.GetLengthTailTrimmed(); @@ -811,7 +811,7 @@ void ReadModSequence(std::istream& iStrm, ModSequence& seq, const size_t) //----------------------------------------------------------------------- { - srlztn::Ssb ssb(iStrm); + srlztn::SsbRead ssb(iStrm); ssb.BeginRead(FileIdSequence, MptVersion::num); if ((ssb.m_Status & srlztn::SNT_FAILURE) != 0) return; @@ -829,7 +829,7 @@ void WriteModSequences(std::ostream& oStrm, const ModSequenceSet& seq) //-------------------------------------------------------------------- { - srlztn::Ssb ssb(oStrm); + srlztn::SsbWrite ssb(oStrm); ssb.BeginWrite(FileIdSequences, MptVersion::num); const uint8 nSeqs = seq.GetNumSequences(); const uint8 nCurrent = seq.GetCurrentSequenceIndex(); @@ -849,7 +849,7 @@ void ReadModSequences(std::istream& iStrm, ModSequenceSet& seq, const size_t) //--------------------------------------------------------------------------- { - srlztn::Ssb ssb(iStrm); + srlztn::SsbRead ssb(iStrm); ssb.BeginRead(FileIdSequences, MptVersion::num); if ((ssb.m_Status & srlztn::SNT_FAILURE) != 0) return; Modified: trunk/OpenMPT/soundlib/pattern.cpp =================================================================== --- trunk/OpenMPT/soundlib/pattern.cpp 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/soundlib/pattern.cpp 2013-10-26 12:24:03 UTC (rev 3038) @@ -481,7 +481,7 @@ void WriteModPattern(std::ostream& oStrm, const CPattern& pat) //------------------------------------------------------------ { - srlztn::Ssb ssb(oStrm); + srlztn::SsbWrite ssb(oStrm); ssb.BeginWrite(FileIdPattern, MptVersion::num); ssb.WriteItem(pat, "data", strlen("data"), &WriteData); // pattern time signature @@ -497,7 +497,7 @@ void ReadModPattern(std::istream& iStrm, CPattern& pat, const size_t) //------------------------------------------------------------------- { - srlztn::Ssb ssb(iStrm); + srlztn::SsbRead ssb(iStrm); ssb.BeginRead(FileIdPattern, MptVersion::num); if ((ssb.m_Status & srlztn::SNT_FAILURE) != 0) return; Modified: trunk/OpenMPT/soundlib/patternContainer.cpp =================================================================== --- trunk/OpenMPT/soundlib/patternContainer.cpp 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/soundlib/patternContainer.cpp 2013-10-26 12:24:03 UTC (rev 3038) @@ -195,7 +195,7 @@ void WriteModPatterns(std::ostream& oStrm, const CPatternContainer& patc) //---------------------------------------------------------------------- { - srlztn::Ssb ssb(oStrm); + srlztn::SsbWrite ssb(oStrm); ssb.BeginWrite(FileIdPatterns, MptVersion::num); const PATTERNINDEX nPatterns = patc.Size(); uint16 nCount = 0; @@ -212,13 +212,13 @@ void ReadModPatterns(std::istream& iStrm, CPatternContainer& patc, const size_t) //-------------------------------------------------------------------------------- { - srlztn::Ssb ssb(iStrm); + srlztn::SsbRead ssb(iStrm); ssb.BeginRead(FileIdPatterns, MptVersion::num); if ((ssb.m_Status & srlztn::SNT_FAILURE) != 0) return; PATTERNINDEX nPatterns = patc.Size(); uint16 nCount = uint16_max; - if (ssb.ReadItem(nCount, "num") != srlztn::Ssb::EntryNotFound) + if (ssb.ReadItem(nCount, "num") != srlztn::SsbRead::EntryNotFound) nPatterns = nCount; LimitMax(nPatterns, ModSpecs::mptm.patternsMax); if (nPatterns > patc.Size()) Modified: trunk/OpenMPT/soundlib/tuning.cpp =================================================================== --- trunk/OpenMPT/soundlib/tuning.cpp 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/soundlib/tuning.cpp 2013-10-26 12:24:03 UTC (rev 3038) @@ -379,7 +379,7 @@ CTuningRTI* pTuning = new CTuningRTI; - srlztn::Ssb ssb(iStrm); + srlztn::SsbRead ssb(iStrm); ssb.BeginRead("CTB244RTI", (CTuning::GetVersion() << 24) + GetVersion()); ssb.ReadItem(pTuning->m_TuningName, "0", 1, ReadStr); ssb.ReadItem(pTuning->m_EditMask, "1"); @@ -470,7 +470,7 @@ CTuning::SERIALIZATION_RETURN_TYPE CTuningRTI::Serialize(std::ostream& outStrm) const //---------------------------------------------------------------------------------- { - srlztn::Ssb ssb(outStrm); + srlztn::SsbWrite ssb(outStrm); ssb.BeginWrite("CTB244RTI", (GetVersion() << 24) + GetClassVersion()); if (m_TuningName.length() > 0) ssb.WriteItem(m_TuningName, "0", 1, WriteStr); Modified: trunk/OpenMPT/soundlib/tuningCollection.cpp =================================================================== --- trunk/OpenMPT/soundlib/tuningCollection.cpp 2013-10-26 10:31:29 UTC (rev 3037) +++ trunk/OpenMPT/soundlib/tuningCollection.cpp 2013-10-26 12:24:03 UTC (rev 3038) @@ -102,7 +102,7 @@ CTuningCollection::SERIALIZATION_RETURN_TYPE CTuningCollection::Serialize(std::ostream& oStrm) const //-------------------------------------------------------------------------------------------------- { - srlztn::Ssb ssb(oStrm); + srlztn::SsbWrite ssb(oStrm); ssb.BeginWrite("TC", s_SerializationVersion); ssb.WriteItem(m_Name, "0", 1, &WriteStr); ssb.WriteItem(m_EditMask, "1"); @@ -160,18 +160,18 @@ { // An old version was not recognised - trying new version. iStrm.clear(); iStrm.seekg(startpos); - srlztn::Ssb ssb(iStrm); + srlztn::SsbRead ssb(iStrm); ssb.BeginRead("TC", s_SerializationVersion); - const srlztn::Ssb::ReadIterator iterBeg = ssb.GetReadBegin(); - const srlztn::Ssb::ReadIterator iterEnd = ssb.GetReadEnd(); - for(srlztn::Ssb::ReadIterator iter = iterBeg; iter != iterEnd; iter++) + const srlztn::SsbRead::ReadIterator iterBeg = ssb.GetReadBegin(); + const srlztn::SsbRead::ReadIterator iterEnd = ssb.GetReadEnd(); + for(srlztn::SsbRead::ReadIterator iter = iterBeg; iter != iterEnd; iter++) { - if (ssb.CompareId(iter, "0") == srlztn::Ssb::IdMatch) + if (ssb.CompareId(iter, "0") == srlztn::SsbRead::IdMatch) ssb.ReadItem(iter, m_Name, &ReadStr); - else if (ssb.CompareId(iter, "1") == srlztn::Ssb::IdMatch) + else if (ssb.CompareId(iter, "1") == srlztn::SsbRead::IdMatch) ssb.ReadItem(iter, m_EditMask); - else if (ssb.CompareId(iter, "2") == srlztn::Ssb::IdMatch) + else if (ssb.CompareId(iter, "2") == srlztn::SsbRead::IdMatch) ssb.ReadItem(iter, *this, &ReadTuning); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |