diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/gen_adldata/gen_adldata.cc | 17 | ||||
-rw-r--r-- | utils/gen_adldata/progs_cache.cpp | 18 | ||||
-rw-r--r-- | utils/gen_adldata/progs_cache.h | 4 |
3 files changed, 34 insertions, 5 deletions
diff --git a/utils/gen_adldata/gen_adldata.cc b/utils/gen_adldata/gen_adldata.cc index 45f0c7c..375ea79 100644 --- a/utils/gen_adldata/gen_adldata.cc +++ b/utils/gen_adldata/gen_adldata.cc @@ -210,6 +210,7 @@ int main(int argc, char**argv) } MeasureThreaded measureCounter; + bool dontOverride = false; { measureCounter.LoadCache("fm_banks/adldata-cache.dat"); @@ -225,10 +226,22 @@ int main(int argc, char**argv) } std::fflush(stdout); measureCounter.waitAll(); - measureCounter.SaveCache("fm_banks/adldata-cache.dat"); + if(measureCounter.m_cache_matches != measureCounter.m_total) + { + std::printf("-- Cache data was changed, saving...\n"); + std::fflush(stdout); + measureCounter.SaveCache("fm_banks/adldata-cache.dat"); + dontOverride = false; + } + else + { + std::printf("-- Cache data was not changes.\n"); + std::fflush(stdout); + dontOverride = true; + } } - db.exportBanks(std::string(outFile_s)); + db.exportBanks(std::string(outFile_s), dontOverride); std::printf("Generation of ADLMIDI data has been completed!\n"); std::fflush(stdout); diff --git a/utils/gen_adldata/progs_cache.cpp b/utils/gen_adldata/progs_cache.cpp index 60518ba..72e1fbc 100644 --- a/utils/gen_adldata/progs_cache.cpp +++ b/utils/gen_adldata/progs_cache.cpp @@ -129,9 +129,23 @@ void BanksDump::addInstrument(BanksDump::MidiBank &bank, size_t patchId, bank.instruments[patchId] = static_cast<int_fast32_t>(e.instId); } -void BanksDump::exportBanks(const std::string &outPath, const std::string &headerName) +void BanksDump::exportBanks(const std::string &outPath, bool donntOverride, const std::string &headerName) { - FILE *out = std::fopen(outPath.c_str(), "w"); + FILE *out; + + // Check if file exist + if(donntOverride) + { + out = std::fopen(outPath.c_str(), "r"); + if(out) + { + // File exist, don't override it + std::fclose(out); + return; + } + } + + out = std::fopen(outPath.c_str(), "w"); std::fprintf(out, "/**********************************************************\n" " This file is generated by `gen_adldata` automatically\n" diff --git a/utils/gen_adldata/progs_cache.h b/utils/gen_adldata/progs_cache.h index 668c253..5193b1d 100644 --- a/utils/gen_adldata/progs_cache.h +++ b/utils/gen_adldata/progs_cache.h @@ -308,7 +308,9 @@ struct BanksDump size_t initBank(size_t bankId, const std::string &title, uint_fast16_t bankSetup); void addMidiBank(size_t bankId, bool percussion, MidiBank b); void addInstrument(MidiBank &bank, size_t patchId, InstrumentEntry e, Operator *ops, const std::string &meta = std::string()); - void exportBanks(const std::string &outPath, const std::string &headerName = "adlmidi_db.h"); + void exportBanks(const std::string &outPath, + bool donntOverride, + const std::string &headerName = "adlmidi_db.h"); }; |