1/*! 2 * \file mfront/include/MFront/MaterialPropertyInterfaceProxy.ixx 3 * \brief 4 * 5 * \author Thomas Helfer 6 * \date 09 nov 2006 7 * \copyright Copyright (C) 2006-2018 CEA/DEN, EDF R&D. All rights 8 * reserved. 9 * This project is publicly released under either the GNU GPL Licence 10 * or the CECILL-A licence. A copy of thoses licences are delivered 11 * with the sources of TFEL. CEA or EDF may also distribute this 12 * project under specific licensing conditions. 13 */ 14 15#ifndef LIB_MFRONTLAWINTERFACEPROXY_IXX 16#define LIB_MFRONTLAWINTERFACEPROXY_IXX 17 18namespace mfront{ 19 20 template<typename Interface> 21 MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy() 22 { 23 typedef MaterialPropertyInterfaceFactory MLIF; 24 auto& mlif = MLIF::getMaterialPropertyInterfaceFactory(); 25 mlif.registerInterfaceCreator(Interface::getName(),&createInterface); 26 mlif.registerInterfaceAlias(Interface::getName(),Interface::getName()); 27 } 28 29 template<typename Interface> 30 MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy(const std::string& name) 31 { 32 typedef MaterialPropertyInterfaceFactory MLIF; 33 auto& mlif = MLIF::getMaterialPropertyInterfaceFactory(); 34 mlif.registerInterfaceCreator(Interface::getName(),&createInterface); 35 mlif.registerInterfaceAlias(Interface::getName(),name); 36 } 37 38 template<typename Interface> 39 template<typename InputIterator> 40 MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy(const std::string& name, 41 const InputIterator b, 42 const InputIterator e) 43 { 44 typedef MaterialPropertyInterfaceFactory MLIF; 45 auto& mlif = MLIF::getMaterialPropertyInterfaceFactory(); 46 InputIterator p; 47 mlif.registerInterfaceCreator(Interface::getName(),&createInterface); 48 mlif.registerInterfaceAlias(Interface::getName(),name); 49 for(p=b;p!=e;++p){ 50 mlif.registerInterfaceDependency(Interface::getName(),*p); 51 } 52 } // end of MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy 53 54 55 template<typename Interface> 56 template<typename InputIterator> 57 MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy(const InputIterator b, 58 const InputIterator e) 59 { 60 typedef MaterialPropertyInterfaceFactory MLIF; 61 auto& mlif = MLIF::getMaterialPropertyInterfaceFactory(); 62 InputIterator p; 63 mlif.registerInterfaceCreator(Interface::getName(),&createInterface); 64 for(p=b;p!=e;++p){ 65 mlif.registerInterfaceAlias(Interface::getName(),*p); 66 } 67 } // end of MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy 68 69 template<typename Interface> 70 MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy(const std::string& name, 71 const std::string& dep) 72 { 73 typedef MaterialPropertyInterfaceFactory MLIF; 74 auto& mlif = MLIF::getMaterialPropertyInterfaceFactory(); 75 mlif.registerInterfaceCreator(Interface::getName(),&createInterface); 76 mlif.registerInterfaceAlias(Interface::getName(),name); 77 mlif.registerInterfaceDependency(Interface::getName(),dep); 78 } // end of MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy 79 80 template<typename Interface> 81 template<typename InputIterator> 82 MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy(const InputIterator b, 83 const InputIterator e, 84 const std::string& dep) 85 { 86 typedef MaterialPropertyInterfaceFactory MLIF; 87 auto& mlif = MLIF::getMaterialPropertyInterfaceFactory(); 88 InputIterator p; 89 mlif.registerInterfaceCreator(Interface::getName(),&createInterface); 90 for(p=b;p!=e;++p){ 91 mlif.registerInterfaceAlias(Interface::getName(),*p); 92 } 93 mlif.registerInterfaceDependency(Interface::getName(),dep); 94 } // end of MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy 95 96 template<typename Interface> 97 template<typename InputIterator, 98 typename InputIterator2> 99 MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy(const InputIterator b, 100 const InputIterator e, 101 const InputIterator2 b2, 102 const InputIterator2 e2) 103 { 104 typedef MaterialPropertyInterfaceFactory MLIF; 105 auto& mlif = MLIF::getMaterialPropertyInterfaceFactory(); 106 InputIterator p; 107 InputIterator2 p2; 108 mlif.registerInterfaceCreator(Interface::getName(),&createInterface); 109 for(p=b;p!=e;++p){ 110 mlif.registerInterfaceAlias(Interface::getName(),*p); 111 } 112 for(p2=b2;p2!=e2;++p2){ 113 mlif.registerInterfaceDependency(Interface::getName(),*p2); 114 } 115 } // end of MaterialPropertyInterfaceProxy<Interface>::MaterialPropertyInterfaceProxy 116 117 template<typename Interface> 118 std::shared_ptr<AbstractMaterialPropertyInterface> 119 MaterialPropertyInterfaceProxy<Interface>::createInterface() 120 { 121 return std::make_shared<Interface>(); 122 } 123 124} // end of namespace mfront 125 126#endif /* LIB_MFRONTLAWINTERFACEPROXY_IXX */ 127