Entropy Piano Tuner  1.1.3 (documentation not yet complete)
An open-source experimental software for piano tuning by entropy minimization
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
algorithmfactory.cpp
Go to the documentation of this file.
1 /*****************************************************************************
2  * Copyright 2015 Haye Hinrichsen, Christoph Wick
3  *
4  * This file is part of Entropy Piano Tuner.
5  *
6  * Entropy Piano Tuner is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by the
8  * Free Software Foundation, either version 3 of the License, or (at your
9  * option) any later version.
10  *
11  * Entropy Piano Tuner is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along with
17  * Entropy Piano Tuner. If not, see http://www.gnu.org/licenses/.
18  *****************************************************************************/
19 
20 #include "algorithmfactory.h"
21 #include "calculationmanager.h"
22 #include "algorithminformation.h"
24 
26  mDescription(description)
27 {
29 }
30 
32  // load algorithm information from xml file
33  // add all params with default value if not in algorithm description
35 
36  for (const AlgorithmParameter &param : info->getParameters()) {
37  switch (param.getType()) {
39  if (mDescription.hasDoubleParameter(param.getID())) {continue;}
40  mDescription.setDoubleParameter(param.getID(), param.getDoubleDefaultValue());
41  break;
43  if (mDescription.hasIntParameter(param.getID())) {continue;}
44  mDescription.setIntParameter(param.getID(), param.getIntDefaultValue());
45  break;
47  if (mDescription.hasStringParameter(param.getID())) {continue;}
48  mDescription.setStringParameter(param.getID(), param.getStringDefaultValue());
49  break;
50  default:
51  EPT_EXCEPT(EptException::ERR_NOT_IMPLEMENTED, "Parsing of default parameter not implemented");
52  break;
53  }
54  }
55 
56 }
static CalculationManager & getSingleton()
AlgorithmFactoryDescription mDescription
void setDoubleParameter(const std::string &s, double p)
bool hasDoubleParameter(const std::string &s) const
const std::string & getAlgorithmName() const
bool hasIntParameter(const std::string &s) const
AlgorithmFactoryBase(const AlgorithmFactoryDescription &description)
#define EPT_EXCEPT(num, desc)
Definition: eptexception.h:119
void setStringParameter(const std::string &id, const std::string &s)
void registerFactory(const std::string &name, AlgorithmFactoryBase *factory)
std::shared_ptr< const AlgorithmInformation > loadAlgorithmInformation(const std::string &algorithmName) const
void setIntParameter(const std::string &s, int i)
bool hasStringParameter(const std::string &id) const