diff --git a/src/commons/Parameters.h b/src/commons/Parameters.h index 1112e261c..6db7ddbfc 100644 --- a/src/commons/Parameters.h +++ b/src/commons/Parameters.h @@ -59,6 +59,8 @@ struct MMseqsParameter { } }; +void initParameterSingleton(void); +#define DEFAULT_PARAMETER_SINGLETON_INIT void initParameterSingleton() { new Parameters; } class Parameters { public: @@ -712,13 +714,11 @@ class Parameters { static Parameters& getInstance() { if (instance == NULL) { - initInstance(); + initParameterSingleton(); } return *instance; } - static void initInstance() { - new Parameters; - } + friend void initParameterSingleton(void); void setDefaults(); void initMatrices(); diff --git a/src/mmseqs.cpp b/src/mmseqs.cpp index f0a5be091..5c7287a81 100644 --- a/src/mmseqs.cpp +++ b/src/mmseqs.cpp @@ -1,6 +1,7 @@ #include "Command.h" #include "DownloadDatabase.h" #include "Prefiltering.h" +#include "Parameters.h" const char* binary_name = "mmseqs"; const char* tool_name = "MMseqs2"; @@ -19,6 +20,8 @@ void init() { } void (*initCommands)(void) = init; +DEFAULT_PARAMETER_SINGLETON_INIT; + std::vector externalDownloads = {}; std::vector externalThreshold = {}; diff --git a/src/test/TestAlignment.cpp b/src/test/TestAlignment.cpp index 62f528a3a..65ee95d0a 100644 --- a/src/test/TestAlignment.cpp +++ b/src/test/TestAlignment.cpp @@ -20,6 +20,7 @@ #include "Matcher.h" const char* binary_name = "test_alignment"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { const size_t kmer_size=6; diff --git a/src/test/TestAlignmentPerformance.cpp b/src/test/TestAlignmentPerformance.cpp index 225bd2b84..ed74223c6 100644 --- a/src/test/TestAlignmentPerformance.cpp +++ b/src/test/TestAlignmentPerformance.cpp @@ -24,6 +24,7 @@ #include "StripedSmithWaterman.h" const char* binary_name = "test_alignmentperformance"; +DEFAULT_PARAMETER_SINGLETON_INIT; #define MAX_FILENAME_LIST_FILES 4096 diff --git a/src/test/TestAlignmentTraceback.cpp b/src/test/TestAlignmentTraceback.cpp index 6e66bedb7..ade3abebb 100644 --- a/src/test/TestAlignmentTraceback.cpp +++ b/src/test/TestAlignmentTraceback.cpp @@ -18,6 +18,7 @@ #include "Parameters.h" const char* binary_name = "test_alignmenttraceback"; +DEFAULT_PARAMETER_SINGLETON_INIT; struct scores{ short H; diff --git a/src/test/TestAlp.cpp b/src/test/TestAlp.cpp index d3b98a4b7..7cd701bd1 100644 --- a/src/test/TestAlp.cpp +++ b/src/test/TestAlp.cpp @@ -43,6 +43,7 @@ Contents: pairwise alignment algorithms #include "sls_alignment_evaluer.hpp" const char* binary_name = "test_alp"; +DEFAULT_PARAMETER_SINGLETON_INIT; using namespace Sls; using namespace std; diff --git a/src/test/TestBacktraceTranslator.cpp b/src/test/TestBacktraceTranslator.cpp index 39328d0ff..b8a7bfd9c 100644 --- a/src/test/TestBacktraceTranslator.cpp +++ b/src/test/TestBacktraceTranslator.cpp @@ -1,5 +1,4 @@ #include "BacktraceTranslator.h" -#include "Parameters.h" const char* binary_name = "test_backtracetranslator"; diff --git a/src/test/TestBestAlphabet.cpp b/src/test/TestBestAlphabet.cpp index fb432c53b..028977593 100644 --- a/src/test/TestBestAlphabet.cpp +++ b/src/test/TestBestAlphabet.cpp @@ -14,7 +14,6 @@ #include "DBReader.h" #include "Sequence.h" #include "Indexer.h" -#include "Parameters.h" const char* binary_name = "test_bestalphabet"; diff --git a/src/test/TestCompositionBias.cpp b/src/test/TestCompositionBias.cpp index 1a3e69914..f55315c13 100644 --- a/src/test/TestCompositionBias.cpp +++ b/src/test/TestCompositionBias.cpp @@ -9,6 +9,7 @@ #include "Parameters.h" const char* binary_name = "test_compositionbias"; +DEFAULT_PARAMETER_SINGLETON_INIT; void calcLocalAaBiasCorrection(Sequence* seq, SubstitutionMatrix * m){ const int windowSize = 40; diff --git a/src/test/TestDiagonalScoring.cpp b/src/test/TestDiagonalScoring.cpp index cdb5b45d8..adb055885 100644 --- a/src/test/TestDiagonalScoring.cpp +++ b/src/test/TestDiagonalScoring.cpp @@ -14,6 +14,7 @@ #include "Parameters.h" const char* binary_name = "test_diagonalscoring"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { size_t kmer_size = 6; diff --git a/src/test/TestDiagonalScoringPerformance.cpp b/src/test/TestDiagonalScoringPerformance.cpp index 3f224d29b..bb260a080 100644 --- a/src/test/TestDiagonalScoringPerformance.cpp +++ b/src/test/TestDiagonalScoringPerformance.cpp @@ -20,6 +20,7 @@ KSEQ_INIT(int, read) #include "Parameters.h" const char* binary_name = "test_diagonalscoringperformance"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { size_t kmer_size = 6; diff --git a/src/test/TestKmerGenerator.cpp b/src/test/TestKmerGenerator.cpp index a74568918..c9d35d535 100644 --- a/src/test/TestKmerGenerator.cpp +++ b/src/test/TestKmerGenerator.cpp @@ -15,6 +15,7 @@ #include "Parameters.h" const char* binary_name = "test_kmergenerator"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { const size_t kmer_size=6; diff --git a/src/test/TestKmerNucl.cpp b/src/test/TestKmerNucl.cpp index 745615944..4a5666caf 100644 --- a/src/test/TestKmerNucl.cpp +++ b/src/test/TestKmerNucl.cpp @@ -6,6 +6,7 @@ #include "Orf.h" const char* binary_name = "test_kmernucl"; +DEFAULT_PARAMETER_SINGLETON_INIT; std::string kmerToSting(size_t idx, int size) { char output[32]; diff --git a/src/test/TestKmerScore.cpp b/src/test/TestKmerScore.cpp index 77a6bf981..834e98ffb 100644 --- a/src/test/TestKmerScore.cpp +++ b/src/test/TestKmerScore.cpp @@ -8,6 +8,7 @@ #include "Parameters.h" const char* binary_name = "test_kmerscore"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { const size_t kmer_size = 6; diff --git a/src/test/TestKwayMerge.cpp b/src/test/TestKwayMerge.cpp index 864ce52f1..d62619dc7 100644 --- a/src/test/TestKwayMerge.cpp +++ b/src/test/TestKwayMerge.cpp @@ -8,7 +8,6 @@ #include "SubstitutionMatrix.h" #include "Sequence.h" -#include "Parameters.h" const char* binary_name = "test_kwaymerge"; struct KmerEntry{ diff --git a/src/test/TestMultipleAlignment.cpp b/src/test/TestMultipleAlignment.cpp index 38c7aec16..b01aa55d0 100644 --- a/src/test/TestMultipleAlignment.cpp +++ b/src/test/TestMultipleAlignment.cpp @@ -14,6 +14,7 @@ #include "Parameters.h" const char* binary_name = "test_multiplealignment"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main(int, const char**) { Parameters& par = Parameters::getInstance(); diff --git a/src/test/TestPSSM.cpp b/src/test/TestPSSM.cpp index 4e38f9dca..f6beed89c 100644 --- a/src/test/TestPSSM.cpp +++ b/src/test/TestPSSM.cpp @@ -15,6 +15,7 @@ #include "MultipleAlignment.h" const char* binary_name = "test_pssm"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { Parameters& par = Parameters::getInstance(); diff --git a/src/test/TestPSSMPrune.cpp b/src/test/TestPSSMPrune.cpp index cb36036f6..ce296917c 100644 --- a/src/test/TestPSSMPrune.cpp +++ b/src/test/TestPSSMPrune.cpp @@ -16,6 +16,7 @@ #include const char* binary_name = "test_pssmprune"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { Parameters& par = Parameters::getInstance(); diff --git a/src/test/TestProfileAlignment.cpp b/src/test/TestProfileAlignment.cpp index 6e54ad657..83ae457b1 100644 --- a/src/test/TestProfileAlignment.cpp +++ b/src/test/TestProfileAlignment.cpp @@ -19,6 +19,7 @@ #include "Parameters.h" const char* binary_name = "test_profilealignment"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { const size_t kmer_size=6; diff --git a/src/test/TestReduceMatrix.cpp b/src/test/TestReduceMatrix.cpp index b75975d4d..f388d80d8 100644 --- a/src/test/TestReduceMatrix.cpp +++ b/src/test/TestReduceMatrix.cpp @@ -12,6 +12,7 @@ #include "Parameters.h" const char* binary_name = "test_reducematrix"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { const int reductionAlphabetSize = 17; diff --git a/src/test/TestScoreMatrixSerialization.cpp b/src/test/TestScoreMatrixSerialization.cpp index 0f383c453..6eee841ae 100644 --- a/src/test/TestScoreMatrixSerialization.cpp +++ b/src/test/TestScoreMatrixSerialization.cpp @@ -5,6 +5,7 @@ #include "Debug.h" const char* binary_name = "test_scorematrixserialization"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { Parameters& par = Parameters::getInstance(); diff --git a/src/test/TestSequenceIndex.cpp b/src/test/TestSequenceIndex.cpp index ffdbebfeb..eac38a379 100644 --- a/src/test/TestSequenceIndex.cpp +++ b/src/test/TestSequenceIndex.cpp @@ -11,6 +11,7 @@ #include "Parameters.h" const char* binary_name = "test_sequenceindex"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { size_t kmer_size = 6; diff --git a/src/test/TestTanTan.cpp b/src/test/TestTanTan.cpp index fe1fc0b7f..65a25c7cc 100644 --- a/src/test/TestTanTan.cpp +++ b/src/test/TestTanTan.cpp @@ -11,6 +11,7 @@ #include "Parameters.h" const char* binary_name = "test_tantan"; +DEFAULT_PARAMETER_SINGLETON_INIT; int main (int, const char**) { const size_t kmer_size = 6;