Raw File
OxFactoryOfModels.h
/*!
 * \file OxFactoryOfFunctions.h
 * \author Konrad Werys
 * \date 2018/08/18
 */

#ifndef Tomato_OXFACTORYOFFUNCTIONS_H
#define Tomato_OXFACTORYOFFUNCTIONS_H

#include "CmakeConfigForTomato.h"
#include "tomatolib_export.h"

#include "OxModel.h"

namespace Ox {

    template<typename TYPE>
    struct TomatoOptions;


    static const char *modelTypeNames[] = {
            "ModelT1ThreeParam",
            "ModelT1TwoParam",
            "ModelT1Shmolli",
            "ModelT2ThreeParam",
            "ModelT2TwoParam"
    };

    enum modelType_t {
        _ModelT1ThreeParam = 0,
        _ModelT1TwoParam = 1,
        _ModelT1Shmolli = 2,
        _ModelT2ThreeParam = 3,
        _ModelT2TwoParam = 4,
        lastFunctorType = _ModelT2TwoParam
    };

    static int modelAvailability[] = {
            1, // ModelT1ThreeParam
            1, // ModelT1TwoParam
            1, // ModelT1Shmolli
            1, // ModelT2ThreeParam
            1  // ModelT2TwoParam
    };

    template<typename TYPE>
    class FactoryOfModels {
    public:

        static Model<TYPE>* newByFactory(TomatoOptions<TYPE> *opts);

        static void disp(int model_type = -1);
    };

} // namespace Ox

#ifndef TOMATOLIB_COMPILED
#include "OxFactoryOfModels.hxx"
#endif // TOMATOLIB_COMPILED

#endif //Tomato_OXFACTORYOFFUNCTIONS_H
back to top