From: <man...@us...> - 2013-07-04 00:13:46
|
Revision: 2490 http://sourceforge.net/p/modplug/code/2490 Author: manxorist Date: 2013-07-04 00:13:36 +0000 (Thu, 04 Jul 2013) Log Message: ----------- Merged revision(s) 2462-2463 from branches/manx/stdstring-song-name: [Ref] Store song name in std::string CSoundFile::songName instead of in the fixed size sample name of unused sample 0. [Mod] .itp file format was prepared to support variable length song name but the code was always saving 27 characters. Actually save fewer bytes now if the song name is not that long. It is, however, still limited to max 25 chars via .it ModSpecifications. Modified Paths: -------------- trunk/OpenMPT/mptrack/Ctrl_gen.cpp trunk/OpenMPT/mptrack/Moddoc.cpp trunk/OpenMPT/soundlib/LOAD_AMF.CPP trunk/OpenMPT/soundlib/LOAD_DBM.CPP trunk/OpenMPT/soundlib/LOAD_DMF.CPP trunk/OpenMPT/soundlib/LOAD_DSM.CPP trunk/OpenMPT/soundlib/Load_669.cpp trunk/OpenMPT/soundlib/Load_ams.cpp trunk/OpenMPT/soundlib/Load_digi.cpp trunk/OpenMPT/soundlib/Load_far.cpp trunk/OpenMPT/soundlib/Load_gdm.cpp trunk/OpenMPT/soundlib/Load_imf.cpp trunk/OpenMPT/soundlib/Load_it.cpp trunk/OpenMPT/soundlib/Load_itp.cpp trunk/OpenMPT/soundlib/Load_mdl.cpp trunk/OpenMPT/soundlib/Load_med.cpp trunk/OpenMPT/soundlib/Load_mid.cpp trunk/OpenMPT/soundlib/Load_mod.cpp trunk/OpenMPT/soundlib/Load_mt2.cpp trunk/OpenMPT/soundlib/Load_mtm.cpp trunk/OpenMPT/soundlib/Load_okt.cpp trunk/OpenMPT/soundlib/Load_psm.cpp trunk/OpenMPT/soundlib/Load_ptm.cpp trunk/OpenMPT/soundlib/Load_s3m.cpp trunk/OpenMPT/soundlib/Load_stm.cpp trunk/OpenMPT/soundlib/Load_ult.cpp trunk/OpenMPT/soundlib/Load_xm.cpp trunk/OpenMPT/soundlib/Sndfile.cpp trunk/OpenMPT/soundlib/Sndfile.h trunk/OpenMPT/soundlib/load_j2b.cpp trunk/OpenMPT/soundlib/pattern.cpp trunk/OpenMPT/soundlib/pattern.h trunk/OpenMPT/test/test.cpp Property Changed: ---------------- trunk/OpenMPT/ Index: trunk/OpenMPT =================================================================== --- trunk/OpenMPT 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT 2013-07-04 00:13:36 UTC (rev 2490) Property changes on: trunk/OpenMPT ___________________________________________________________________ Modified: svn:mergeinfo ## -8,4 +8,6 ## /branches/manx/project-files-cleanups:1378-1382 /branches/manx/serialization-utils-cleanup:2382-2386,2395 /branches/manx/snddev-fixes:1605-1713 +/branches/manx/stdstring-names:2223,2228 +/branches/manx/stdstring-song-name:2462-2463 /branches/manx/unarchiver:1887-1888 \ No newline at end of property Modified: trunk/OpenMPT/mptrack/Ctrl_gen.cpp =================================================================== --- trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/mptrack/Ctrl_gen.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -174,7 +174,7 @@ { if (!m_bEditsLocked) { - m_EditTitle.SetWindowText(m_sndFile.m_szNames[0]); + m_EditTitle.SetWindowText(m_sndFile.GetTitle().c_str()); wsprintf(s, "%d", m_sndFile.m_nDefaultTempo); m_EditTempo.SetWindowText(s); wsprintf(s, "%d", m_sndFile.m_nDefaultSpeed); Modified: trunk/OpenMPT/mptrack/Moddoc.cpp =================================================================== --- trunk/OpenMPT/mptrack/Moddoc.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/mptrack/Moddoc.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -683,7 +683,7 @@ } MemsetZero(m_SndFile.m_szNames); - //strcpy(m_SndFile.m_szNames[0], "untitled"); + //m_SndFile.SetTitle("untitled"); m_SndFile.m_nMusicTempo = m_SndFile.m_nDefaultTempo = 125; m_SndFile.m_nMusicSpeed = m_SndFile.m_nDefaultSpeed = 6; @@ -1868,7 +1868,7 @@ strcat(s, fext); } CLayer3Convert wsdlg(&m_SndFile, pMainFrm, acmConvert); - if (m_SndFile.m_szNames[0][0]) wsdlg.m_bSaveInfoField = TRUE; + if(!m_SndFile.GetTitle().empty()) wsdlg.m_bSaveInfoField = TRUE; if (wsdlg.DoModal() != IDOK) return; wsdlg.GetFormat(&wfx, &hadid); // Saving as mpeg file @@ -2847,7 +2847,7 @@ //---------------------------- { // Song title - mpt::String::FixNullString(m_SndFile.m_szNames[0]); + mpt::String::FixNullString(m_SndFile.songName); // Sample names + filenames for(SAMPLEINDEX nSmp = 1; nSmp <= m_SndFile.GetNumSamples(); nSmp++) Modified: trunk/OpenMPT/soundlib/LOAD_AMF.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_AMF.CPP 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/LOAD_AMF.CPP 2013-07-04 00:13:36 UTC (rev 2490) @@ -128,7 +128,7 @@ { m_nRestartPos = fileHeader.restartPos; } - m_szNames[0][0] = '\0'; + songName = ""; Order.ReadAsByte(file, 256, fileHeader.numOrders); @@ -385,7 +385,7 @@ m_nChannels = fileHeader.numChannels; m_nSamples = fileHeader.numSamples; - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], fileHeader.title); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, fileHeader.title); if(fileHeader.version < 10) { Modified: trunk/OpenMPT/soundlib/LOAD_DBM.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_DBM.CPP 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/LOAD_DBM.CPP 2013-07-04 00:13:36 UTC (rev 2490) @@ -227,10 +227,10 @@ if(pfh->songname[0]) { - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], pfh->songname); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, pfh->songname); } else { - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], pfh->songname2); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, pfh->songname2); } Modified: trunk/OpenMPT/soundlib/LOAD_DMF.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_DMF.CPP 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/LOAD_DMF.CPP 2013-07-04 00:13:36 UTC (rev 2490) @@ -975,7 +975,7 @@ } InitializeGlobals(); - mpt::String::Read<mpt::String::spacePadded>(m_szNames[0], fileHeader.songname); + mpt::String::Read<mpt::String::spacePadded>(songName, fileHeader.songname); #ifdef MODPLUG_TRACKER if(GetpModDoc() != nullptr) Modified: trunk/OpenMPT/soundlib/LOAD_DSM.CPP =================================================================== --- trunk/OpenMPT/soundlib/LOAD_DSM.CPP 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/LOAD_DSM.CPP 2013-07-04 00:13:36 UTC (rev 2490) @@ -146,7 +146,7 @@ } } - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], psong->songname); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, psong->songname); nPat = 0; nSmp = 1; Modified: trunk/OpenMPT/soundlib/Load_669.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_669.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_669.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -134,7 +134,7 @@ } // Copy first song message line into song title - mpt::String::Read<mpt::String::spacePadded>(m_szNames[0], fileHeader.songMessage, 36); + mpt::String::Read<mpt::String::spacePadded>(songName, fileHeader.songMessage, 36); // Song Message songMessage.ReadFixedLineLength(fileHeader.songMessage, 108, 36, 0); Modified: trunk/OpenMPT/soundlib/Load_ams.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_ams.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_ams.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -46,7 +46,15 @@ return file.ReadString<mpt::String::spacePadded>(destBuffer, length); } +// Read variable-length AMS string (we ignore the maximum text length specified by the AMS specs and accept any length). +bool ReadAMSString(std::string &dest, FileReader &file) +//----------------------------------------------------- +{ + const size_t length = file.ReadUint8(); + return file.ReadString<mpt::String::spacePadded>(dest, length); +} + // Read AMS or AMS2 (newVersion = true) pattern. At least this part of the format is more or less identical between the two trackers... void ReadAMSPattern(CPattern &pattern, bool newVersion, FileReader &patternChunk, CSoundFile &sndFile) //---------------------------------------------------------------------------------------------------- @@ -417,7 +425,7 @@ } // Texts - ReadAMSString(m_szNames[0], file); + ReadAMSString(songName, file); // Read sample names for(SAMPLEINDEX smp = 1; smp <= GetNumSamples(); smp++) @@ -749,7 +757,7 @@ AMS2FileHeader fileHeader; if(!file.ReadMagic("AMShdr\x1A") - || !ReadAMSString(m_szNames[0], file) + || !ReadAMSString(songName, file) || !file.ReadConvertEndianness(fileHeader)) { return false; Modified: trunk/OpenMPT/soundlib/Load_digi.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_digi.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_digi.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -139,7 +139,7 @@ } // Read song + sample names - file.ReadString<mpt::String::maybeNullTerminated>(m_szNames[0], 32); + file.ReadString<mpt::String::maybeNullTerminated>(songName, 32); for(SAMPLEINDEX smp = 1; smp <= 31; smp++) { file.ReadString<mpt::String::maybeNullTerminated>(m_szNames[smp], 30); Modified: trunk/OpenMPT/soundlib/Load_far.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_far.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_far.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -158,7 +158,7 @@ m_nDefaultTempo = 80; m_nDefaultGlobalVolume = MAX_GLOBAL_VOLUME; - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], fileHeader.songName); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, fileHeader.songName); // Read channel settings for(CHANNELINDEX chn = 0; chn < 16; chn++) Modified: trunk/OpenMPT/soundlib/Load_gdm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_gdm.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_gdm.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -161,7 +161,7 @@ madeWithTracker = mpt::String::Format("BWSB 2GDM %d.%d (converted from %s)", fileHeader.trackerMajorVer, fileHeader.formatMinorVer, ModTypeToTracker(GetType()).c_str()); // Song name - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], fileHeader.songTitle); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, fileHeader.songTitle); // Read channel pan map... 0...15 = channel panning, 16 = surround channel, 255 = channel does not exist m_nChannels = 32; Modified: trunk/OpenMPT/soundlib/Load_imf.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_imf.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_imf.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -461,7 +461,7 @@ SetModFlag(MSF_COMPATIBLE_PLAY, true); // Song Name - mpt::String::Read<mpt::String::nullTerminated>(m_szNames[0], fileHeader.title); + mpt::String::Read<mpt::String::nullTerminated>(songName, fileHeader.title); m_SongFlags = (fileHeader.flags & IMFFileHeader::linearSlides) ? SONG_LINEARSLIDES : SongFlags(0); m_nDefaultSpeed = fileHeader.tempo; Modified: trunk/OpenMPT/soundlib/Load_it.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_it.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_it.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -441,7 +441,7 @@ m_SongFlags.set(SONG_EMBEDMIDICFG, (fileHeader.flags & ITFileHeader::reqEmbeddedMIDIConfig) || (fileHeader.special & ITFileHeader::embedMIDIConfiguration)); m_SongFlags.set(SONG_EXFILTERRANGE, (fileHeader.flags & ITFileHeader::extendedFilterRange) != 0); - mpt::String::Read<mpt::String::spacePadded>(m_szNames[0], fileHeader.songname); + mpt::String::Read<mpt::String::spacePadded>(songName, fileHeader.songname); // Global Volume m_nDefaultGlobalVolume = fileHeader.globalvol << 1; @@ -1121,7 +1121,7 @@ MemsetZero(itHeader); dwChnNamLen = 0; itHeader.id = ITFileHeader::itMagic; - mpt::String::Write<mpt::String::nullTerminated>(itHeader.songname, m_szNames[0]); + mpt::String::Write<mpt::String::nullTerminated>(itHeader.songname, songName); itHeader.highlight_minor = (uint8)std::min(m_nDefaultRowsPerBeat, ROWINDEX(uint8_max)); itHeader.highlight_major = (uint8)std::min(m_nDefaultRowsPerMeasure, ROWINDEX(uint8_max)); Modified: trunk/OpenMPT/soundlib/Load_itp.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_itp.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_itp.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -35,6 +35,14 @@ } +// Read variable-length ITP string. +static inline bool ReadITPString(std::string &dest, FileReader &file) +//------------------------------------------------------------------- +{ + return file.ReadString<mpt::String::maybeNullTerminated>(dest, file.ReadUint32LE()); +} + + bool CSoundFile::ReadITProject(FileReader &file, ModLoadingFlags loadFlags) //------------------------------------------------------------------------- { @@ -53,7 +61,7 @@ if(!file.CanRead(12 + 4 + 24 + 4) || file.ReadUint32LE() != ITP_FILE_ID // Magic bytes || (version = file.ReadUint32LE()) > ITP_VERSION // Format version - || !ReadITPString(m_szNames[0], file)) // Song name + || !ReadITPString(songName, file)) // Song name { return false; } else if(loadFlags == onlyVerifyHeader) @@ -304,13 +312,13 @@ fwrite(&id, 1, sizeof(id), f); // Song name - + std::vector<char> tempSongName(songName.length() + 1); // name string length - id = 27; + id = tempSongName.size(); fwrite(&id, 1, sizeof(id), f); - // song name - fwrite(&m_szNames[0], 1, 27, f); + mpt::String::Write<mpt::String::maybeNullTerminated>(tempSongName, songName); + fwrite(&tempSongName[0], 1, tempSongName.size(), f); // Song comments Modified: trunk/OpenMPT/soundlib/Load_mdl.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mdl.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_mdl.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -338,7 +338,7 @@ Log("infoblock: %d bytes\n", blocklen); #endif pmib = (MDLInfoBlock *)(lpStream+dwMemPos); - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], pmib->songname); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, pmib->songname); norders = pmib->norders; if (norders > MAX_ORDERS) norders = MAX_ORDERS; Modified: trunk/OpenMPT/soundlib/Load_med.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_med.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_med.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -11,6 +11,7 @@ #include "stdafx.h" #include "Loaders.h" +#include "../common/StringFixer.h" //#define MED_LOG @@ -231,7 +232,7 @@ // Each offset points to the play sequence itself. typedef struct PACKED tagMMD2PLAYSEQ { - CHAR name[32]; + char name[32]; DWORD command_offs; // filepos of command table DWORD reserved; WORD length; @@ -704,7 +705,7 @@ if ((pseq) && (pseq < dwMemLength - sizeof(MMD2PLAYSEQ))) { MMD2PLAYSEQ *pmps = (MMD2PLAYSEQ *)(lpStream + pseq); - if (!m_szNames[0][0]) memcpy(m_szNames[0], pmps->name, 31); + if(songName.empty()) mpt::String::Read<mpt::String::maybeNullTerminated>(songName, pmps->name); uint16 n = BigEndianW(pmps->length); if (pseq+n <= dwMemLength) { @@ -746,7 +747,7 @@ UINT songnamelen = BigEndian(pmex->songnamelen); if ((songname) && (songnamelen) && (songname <= dwMemLength) && (songnamelen <= dwMemLength-songname)) { - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], reinterpret_cast<const char *>(lpStream + songname), songnamelen); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, reinterpret_cast<const char *>(lpStream + songname), songnamelen); } // Sample Names DWORD smpinfoex = BigEndian(pmex->iinfo); Modified: trunk/OpenMPT/soundlib/Load_mid.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mid.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_mid.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -530,7 +530,7 @@ m_nType = MOD_TYPE_MID; m_nChannels = 32; m_SongFlags = SONG_LINEARSLIDES; - m_szNames[0][0] = 0; + songName = ""; // MIDI->MOD Tempo Conversion division = BigEndianW(pmfh->wDivision); @@ -714,10 +714,9 @@ // FF.01 [text]: Song Information case 0x01: if (!len) break; - if ((len < 32) && (!m_szNames[0][0])) + if ((len < 32) && songName.empty()) { - memcpy(m_szNames[0], ptrk->ptracks, len); - m_szNames[0][len] = 0; + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, reinterpret_cast<const char*>(ptrk->ptracks), len); } else if (songMessage.empty() && (ptrk->ptracks[0]) && (ptrk->ptracks[0] < 0x7F)) { @@ -738,14 +737,12 @@ case 0x06: if ((len > 1) && (!trk)) { - UINT k = (len < 32) ? len : 31; - CHAR s[32]; - memcpy(s, ptrk->ptracks, k); - s[k] = 0; - if ((!mpt::strnicmp(s, "Copyri", 6)) || (!s[0])) break; + std::string s; + mpt::String::Read<mpt::String::maybeNullTerminated>(s, reinterpret_cast<const char*>(ptrk->ptracks), len); + if ((!mpt::strnicmp(s.c_str(), "Copyri", 6)) || s.empty()) break; if (i == 0x03) { - if (!m_szNames[0][0]) strcpy(m_szNames[0], s); + if(songName.empty()) mpt::String::Copy(songName, s); } else if (!trk) { Modified: trunk/OpenMPT/soundlib/Load_mod.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mod.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_mod.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -540,7 +540,7 @@ // Reading song title file.Seek(0); - file.ReadString<mpt::String::spacePadded>(m_szNames[0], 20); + file.ReadString<mpt::String::spacePadded>(songName, 20); // Load Samples size_t totalSampleLen = 0; @@ -892,7 +892,7 @@ m_nMaxPeriod = 3424 * 4; m_nSamplePreAmp = 64; m_SongFlags.reset(); - mpt::String::Read<mpt::String::spacePadded>(m_szNames[0], songname); + mpt::String::Read<mpt::String::spacePadded>(songName, songname); // Setup channel pan positions and volume SetupMODPanning(); @@ -1103,7 +1103,7 @@ // Write song title { char name[20]; - mpt::String::Write<mpt::String::maybeNullTerminated>(name, m_szNames[0]); + mpt::String::Write<mpt::String::maybeNullTerminated>(name, songName); fwrite(name, 20, 1, f); } Modified: trunk/OpenMPT/soundlib/Load_mt2.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mt2.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_mt2.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -259,7 +259,7 @@ Order[iOrd] = (PATTERNINDEX)pfh->Orders[iOrd]; } - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], pfh->szSongName); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, pfh->szSongName); dwMemPos = sizeof(MT2FILEHEADER); nDrumDataLen = *(WORD *)(lpStream + dwMemPos); @@ -267,7 +267,7 @@ if (nDrumDataLen >= 2) pdd = (MT2DRUMSDATA *)(lpStream+dwDrumDataPos); dwMemPos += 2 + nDrumDataLen; #ifdef MT2DEBUG - Log("MT2 v%03X: \"%s\" (flags=%04X)\n", pfh->wVersion, m_szNames[0], pfh->fulFlags); + Log("MT2 v%03X: \"%s\" (flags=%04X)\n", pfh->wVersion, songName.c_str(), pfh->fulFlags); Log("%d Channels, %d Patterns, %d Instruments, %d Samples\n", pfh->wChannels, pfh->wPatterns, pfh->wInstruments, pfh->wSamples); Log("Drum Data: %d bytes @%04X\n", nDrumDataLen, dwDrumDataPos); #endif Modified: trunk/OpenMPT/soundlib/Load_mtm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_mtm.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_mtm.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -119,7 +119,7 @@ } InitializeGlobals(); - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], fileHeader.songName); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, fileHeader.songName); m_nType = MOD_TYPE_MTM; m_nSamples = fileHeader.numSamples; m_nChannels = fileHeader.numChannels; Modified: trunk/OpenMPT/soundlib/Load_okt.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_okt.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_okt.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -295,7 +295,7 @@ ORDERINDEX nOrders = 0; InitializeGlobals(); - m_szNames[0][0] = '\0'; + songName = ""; // Go through IFF chunks... while(file.AreBytesLeft()) Modified: trunk/OpenMPT/soundlib/Load_psm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_psm.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_psm.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -310,7 +310,7 @@ // "TITL" - Song Title FileReader titleChunk = chunks.GetChunk(PSMChunk::idTITL); - titleChunk.ReadString<mpt::String::spacePadded>(m_szNames[0], titleChunk.GetLength()); + titleChunk.ReadString<mpt::String::spacePadded>(songName, titleChunk.GetLength()); // "SDFT" - Format info (song data starts here) if(!chunks.GetChunk(PSMChunk::idSDFT).ReadMagic("MAINSONG")) @@ -1174,7 +1174,7 @@ m_nDefaultSpeed = fileHeader.songSpeed; m_nDefaultTempo = fileHeader.songTempo; - mpt::String::Read<mpt::String::spacePadded>(m_szNames[0], fileHeader.songName); + mpt::String::Read<mpt::String::spacePadded>(songName, fileHeader.songName); // Read orders if(fileHeader.orderOffset > 4 && file.Seek(fileHeader.orderOffset - 4) && file.ReadUint32LE() == PSM16FileHeader::idPORD) Modified: trunk/OpenMPT/soundlib/Load_ptm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_ptm.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_ptm.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -154,7 +154,7 @@ return true; } - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], fileHeader.songname); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, fileHeader.songname); InitializeGlobals(); madeWithTracker = mpt::String::Format("PolyTracker %d.%02x", fileHeader.versionHi, fileHeader.versionLo); Modified: trunk/OpenMPT/soundlib/Load_s3m.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_s3m.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_s3m.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -272,7 +272,7 @@ } m_nType = MOD_TYPE_S3M; - mpt::String::Read<mpt::String::nullTerminated>(m_szNames[0], fileHeader.name); + mpt::String::Read<mpt::String::nullTerminated>(songName, fileHeader.name); m_nMinPeriod = 64; m_nMaxPeriod = 32767; @@ -555,7 +555,7 @@ S3MFileHeader fileHeader; MemsetZero(fileHeader); - mpt::String::Write<mpt::String::nullTerminated>(fileHeader.name, m_szNames[0]); + mpt::String::Write<mpt::String::nullTerminated>(fileHeader.name, songName); fileHeader.dosEof = S3MFileHeader::idEOF; fileHeader.fileType = S3MFileHeader::idS3MType; Modified: trunk/OpenMPT/soundlib/Load_stm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_stm.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_stm.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -132,7 +132,7 @@ return true; } - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], fileHeader.songname); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, fileHeader.songname); // Read STM header InitializeGlobals(); Modified: trunk/OpenMPT/soundlib/Load_ult.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_ult.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_ult.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -393,7 +393,7 @@ } InitializeGlobals(); - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], fileHeader.songName); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, fileHeader.songName); const char *versions[] = {"<1.4", "1.4", "1.5", "1.6"}; madeWithTracker = "UltraTracker "; Modified: trunk/OpenMPT/soundlib/Load_xm.cpp =================================================================== --- trunk/OpenMPT/soundlib/Load_xm.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Load_xm.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -310,7 +310,7 @@ madeWithTracker = mpt::String::RTrim(madeWithTracker); } - mpt::String::Read<mpt::String::spacePadded>(m_szNames[0], fileHeader.songName); + mpt::String::Read<mpt::String::spacePadded>(songName, fileHeader.songName); m_nMinPeriod = 27; m_nMaxPeriod = 54784; @@ -666,7 +666,7 @@ MemsetZero(fileHeader); memcpy(fileHeader.signature, "Extended Module: ", 17); - mpt::String::Write<mpt::String::spacePadded>(fileHeader.songName, m_szNames[0]); + mpt::String::Write<mpt::String::spacePadded>(fileHeader.songName, songName); fileHeader.eof = 0x1A; std::string openMptTrackerName = MptVersion::GetOpenMPTVersionStr(); mpt::String::Write<mpt::String::spacePadded>(fileHeader.trackerName, openMptTrackerName); Modified: trunk/OpenMPT/soundlib/Sndfile.cpp =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Sndfile.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -1823,9 +1823,9 @@ bool CSoundFile::SetTitle(const std::string & newTitle) //----------------------------------------------------- { - if(m_szNames[0] != newTitle) + if(songName != newTitle) { - mpt::String::CopyN(m_szNames[0], &newTitle[0], newTitle.length()); + mpt::String::Copy(songName, newTitle); return true; } return false; Modified: trunk/OpenMPT/soundlib/Sndfile.h =================================================================== --- trunk/OpenMPT/soundlib/Sndfile.h 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/Sndfile.h 2013-07-04 00:13:36 UTC (rev 2490) @@ -443,6 +443,9 @@ RowVisitor visitedSongRows; public: + + std::string songName; + // Song message SongMessage songMessage; std::string madeWithTracker; @@ -520,7 +523,7 @@ void DontLoopPattern(PATTERNINDEX nPat, ROWINDEX nRow = 0); //rewbs.playSongFromCursor void SetCurrentPos(UINT nPos); void SetCurrentOrder(ORDERINDEX nOrder); - std::string GetTitle() const { return m_szNames[0]; } + std::string GetTitle() const { return songName; } bool SetTitle(const std::string &newTitle); // Return true if title was changed. LPCTSTR GetSampleName(UINT nSample) const; const char *GetInstrumentName(INSTRUMENTINDEX nInstr) const; Modified: trunk/OpenMPT/soundlib/load_j2b.cpp =================================================================== --- trunk/OpenMPT/soundlib/load_j2b.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/load_j2b.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -793,7 +793,7 @@ ASSERT(mainChunk.unknown == LittleEndian(0xFF0001C5) || mainChunk.unknown == LittleEndian(0x35800716) || mainChunk.unknown == LittleEndian(0xFF00FFFF)); - mpt::String::Read<mpt::String::maybeNullTerminated>(m_szNames[0], mainChunk.songname); + mpt::String::Read<mpt::String::maybeNullTerminated>(songName, mainChunk.songname); // It seems like there's no way to differentiate between // Muted and Surround channels (they're all 0xA0) - might Modified: trunk/OpenMPT/soundlib/pattern.cpp =================================================================== --- trunk/OpenMPT/soundlib/pattern.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/pattern.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -210,6 +210,14 @@ } +bool CPattern::SetName(const std::string &newName) +//------------------------------------------------ +{ + m_PatternName.assign(newName); + return true; +} + + bool CPattern::SetName(const char *newName, size_t maxChars) //---------------------------------------------------------- { Modified: trunk/OpenMPT/soundlib/pattern.h =================================================================== --- trunk/OpenMPT/soundlib/pattern.h 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/soundlib/pattern.h 2013-07-04 00:13:36 UTC (rev 2490) @@ -89,6 +89,7 @@ void RemoveSignature() { m_RowsPerBeat = m_RowsPerMeasure = 0; } // Pattern name functions - bool functions return true on success. + bool SetName(const std::string &newName); bool SetName(const char *newName, size_t maxChars = MAX_PATTERNNAME); template<size_t bufferSize> bool SetName(const char (&buffer)[bufferSize]) Modified: trunk/OpenMPT/test/test.cpp =================================================================== --- trunk/OpenMPT/test/test.cpp 2013-07-03 23:57:30 UTC (rev 2489) +++ trunk/OpenMPT/test/test.cpp 2013-07-04 00:13:36 UTC (rev 2490) @@ -627,7 +627,7 @@ #endif // MODPLUG_TRACKER // Global Variables - VERIFY_EQUAL_NONCONT(strcmp(sndFile.m_szNames[0], "Test Module"), 0); + VERIFY_EQUAL_NONCONT(sndFile.GetTitle(), "Test Module"); VERIFY_EQUAL_NONCONT(sndFile.songMessage.at(0), 'O'); VERIFY_EQUAL_NONCONT(sndFile.m_nDefaultTempo, 139); VERIFY_EQUAL_NONCONT(sndFile.m_nDefaultSpeed, 5); @@ -826,7 +826,7 @@ #endif // MODPLUG_TRACKER // Global Variables - VERIFY_EQUAL_NONCONT(strcmp(sndFile.m_szNames[0], "Test Module_____________X"), 0); + VERIFY_EQUAL_NONCONT(sndFile.GetTitle(), "Test Module_____________X"); VERIFY_EQUAL_NONCONT(sndFile.songMessage.at(0), 'O'); VERIFY_EQUAL_NONCONT(sndFile.m_nDefaultTempo, 139); VERIFY_EQUAL_NONCONT(sndFile.m_nDefaultSpeed, 5); @@ -1085,7 +1085,7 @@ { // Global Variables - VERIFY_EQUAL_NONCONT(strcmp(sndFile.m_szNames[0], "S3M_Test__________________X"), 0); + VERIFY_EQUAL_NONCONT(sndFile.GetTitle(), "S3M_Test__________________X"); VERIFY_EQUAL_NONCONT(sndFile.m_nDefaultTempo, 33); VERIFY_EQUAL_NONCONT(sndFile.m_nDefaultSpeed, 254); VERIFY_EQUAL_NONCONT(sndFile.m_nGlobalVolume, 32 * 4); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |