MCPcopy Create free account
hub / github.com/HertzDevil/0CC-FamiTracker / Save

Method Save

Source/FamiTrackerDocIO.cpp:168–198  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

166}
167
168bool CFamiTrackerDocIO::Save(const CFamiTrackerModule &modfile) {
169 using block_info_t = std::tuple<void (CFamiTrackerDocIO::*)(const CFamiTrackerModule &, int), int, std::string_view>;
170 const block_info_t MODULE_WRITE_FUNC[] = { // // //
171 {&CFamiTrackerDocIO::SaveParams, 6, FILE_BLOCK_PARAMS},
172 {&CFamiTrackerDocIO::SaveSongInfo, 1, FILE_BLOCK_INFO},
173 {&CFamiTrackerDocIO::SaveHeader, 3, FILE_BLOCK_HEADER},
174 {&CFamiTrackerDocIO::SaveInstruments, 6, FILE_BLOCK_INSTRUMENTS},
175 {&CFamiTrackerDocIO::SaveSequences, 6, FILE_BLOCK_SEQUENCES},
176 {&CFamiTrackerDocIO::SaveFrames, 3, FILE_BLOCK_FRAMES},
177 {&CFamiTrackerDocIO::SavePatterns, 5, FILE_BLOCK_PATTERNS},
178 {&CFamiTrackerDocIO::SaveDSamples, 1, FILE_BLOCK_DSAMPLES},
179 {&CFamiTrackerDocIO::SaveComments, 1, FILE_BLOCK_COMMENTS},
180 {&CFamiTrackerDocIO::SaveSequencesVRC6, 6, FILE_BLOCK_SEQUENCES_VRC6}, // // //
181 {&CFamiTrackerDocIO::SaveSequencesN163, 1, FILE_BLOCK_SEQUENCES_N163},
182 {&CFamiTrackerDocIO::SaveSequencesS5B, 1, FILE_BLOCK_SEQUENCES_S5B},
183 {&CFamiTrackerDocIO::SaveParamsExtra, 2, FILE_BLOCK_PARAMS_EXTRA}, // // //
184 {&CFamiTrackerDocIO::SaveDetuneTables, 1, FILE_BLOCK_DETUNETABLES}, // // //
185 {&CFamiTrackerDocIO::SaveGrooves, 1, FILE_BLOCK_GROOVES}, // // //
186 {&CFamiTrackerDocIO::SaveBookmarks, 1, FILE_BLOCK_BOOKMARKS}, // // //
187 };
188
189 file_.BeginDocument();
190 for (auto [fn, ver, name] : MODULE_WRITE_FUNC) {
191 file_.CreateBlock(name.data(), ver);
192 (this->*fn)(modfile, ver);
193 if (!file_.FlushBlock())
194 return false;
195 }
196 file_.EndDocument();
197 return true;
198}
199
200void CFamiTrackerDocIO::PostLoad(CFamiTrackerModule &modfile) {
201 if (file_.GetFileVersion() <= 0x0201)

Callers 2

mainFunction · 0.80
SaveDocumentMethod · 0.80

Calls 5

BeginDocumentMethod · 0.80
CreateBlockMethod · 0.80
FlushBlockMethod · 0.80
EndDocumentMethod · 0.80
dataMethod · 0.45

Tested by 1

mainFunction · 0.64