#pragma once #include //#include "EndFramec.h" #include "EndFrameqct.h" #include "AtPointConstraintIqctJqc.h" #include "DirectionCosineConstraintIqctJqc.h" #include "TranslationConstraintIqctJqc.h" #include "DispCompIeqctJeqcKeqct.h" #include "DispCompIeqctJeqcO.h" namespace MbD { template class CREATE { public: static std::shared_ptr With(const char* name) { auto inst = std::make_shared(name); inst->initialize(); return inst; } static std::shared_ptr With() { auto inst = std::make_shared(); inst->initialize(); return inst; } static std::shared_ptr With(int n) { auto inst = std::make_shared(n); inst->initialize(); return inst; } static std::shared_ptr With(std::initializer_list listD) { auto inst = std::make_shared(listD); inst->initialize(); return inst; } static std::shared_ptr With(EndFrmcptr frmi, EndFrmcptr frmj, int axis) { auto inst = std::make_shared(frmi, frmj, axis); inst->initialize(); return inst; } static std::shared_ptr With(EndFrmcptr frmi, EndFrmcptr frmj, EndFrmcptr frmk, int axisk) { auto inst = std::make_shared(frmi, frmj, frmk, axisk); inst->initialize(); return inst; } static std::shared_ptr ConstraintWith(EndFrmcptr frmi, EndFrmcptr frmj, int axis) { std::shared_ptr inst; std::string str = typeid(T(frmi, frmj, axis)).name(); if (str == "class MbD::AtPointConstraintIJ") { if (std::dynamic_pointer_cast(frmi)) { inst = std::make_shared(frmi, frmj, axis); } else { inst = std::make_shared(frmi, frmj, axis); } } else if(str == "class MbD::TranslationConstraintIJ") { if (std::dynamic_pointer_cast(frmi)) { inst = std::make_shared(frmi, frmj, axis); } else { inst = std::make_shared(frmi, frmj, axis); } } inst->initialize(); return inst; } static std::shared_ptr With(EndFrmcptr frmi, EndFrmcptr frmj, int axisi, int axisj) { auto inst = std::make_shared(frmi, frmj, axisi, axisj); inst->initialize(); return inst; } static std::shared_ptr ConstraintWith(EndFrmcptr frmi, EndFrmcptr frmj, int axisi, int axisj) { std::shared_ptr inst; std::string str = typeid(T(frmi, frmj, axisi, axisj)).name(); if (str == "class MbD::DirectionCosineConstraintIJ") { if (std::dynamic_pointer_cast(frmi)) { inst = std::make_shared(frmi, frmj, axisi, axisj); } else { inst = std::make_shared(frmi, frmj, axisi, axisj); } } inst->initialize(); return inst; } }; }