aboutsummaryrefslogtreecommitdiff
path: root/utils/gen_adldata
diff options
context:
space:
mode:
authorWohlstand <admin@wohlnet.ru>2020-11-26 11:51:16 +0300
committerWohlstand <admin@wohlnet.ru>2020-11-26 11:51:16 +0300
commit723abef3094572c76c98cfb0f9e1eccc61af0d4c (patch)
tree7942fa5b179e23b6ba831340a27dd4313e77c3d6 /utils/gen_adldata
parentb0aef655bf30a29875a4b82bdf5e073efe14edc6 (diff)
downloadlibADLMIDI-723abef3094572c76c98cfb0f9e1eccc61af0d4c.tar.gz
libADLMIDI-723abef3094572c76c98cfb0f9e1eccc61af0d4c.tar.bz2
libADLMIDI-723abef3094572c76c98cfb0f9e1eccc61af0d4c.zip
GenAdlData: don't override files if nothing was changed
Diffstat (limited to 'utils/gen_adldata')
-rw-r--r--utils/gen_adldata/gen_adldata.cc17
-rw-r--r--utils/gen_adldata/progs_cache.cpp18
-rw-r--r--utils/gen_adldata/progs_cache.h4
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");
};