1 /** 2 * 3 * Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(_at_LIP6) & Christophe GONZALES(_at_AMU) 4 * info_at_agrum_dot_org 5 * 6 * This library is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU Lesser General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public License 17 * along with this library. If not, see <http://www.gnu.org/licenses/>. 18 * 19 */ 20 21 22 /** 23 * @file 24 * @brief Implementation of gum::PRMParameter. 25 * 26 * @author Lionel TORTI and Pierre-Henri WUILLEMIN(_at_LIP6) 27 */ 28 29 namespace gum { 30 namespace prm { 31 32 template < typename GUM_SCALAR > PRMParameter(const std::string & name,ParameterType type,GUM_SCALAR value)33 PRMParameter< GUM_SCALAR >::PRMParameter(const std::string& name, 34 ParameterType type, 35 GUM_SCALAR value) : 36 PRMClassElement< GUM_SCALAR >(name), 37 _type_(type), _value_(value) { 38 GUM_CONSTRUCTOR(PRMParameter); 39 this->safeName_ = name; 40 } 41 42 template < typename GUM_SCALAR > PRMParameter(const PRMParameter<GUM_SCALAR> & source)43 PRMParameter< GUM_SCALAR >::PRMParameter(const PRMParameter< GUM_SCALAR >& source) : 44 PRMClassElement< GUM_SCALAR >(source.name()), _type_(source.valueType()), 45 _value_(source.value()) { 46 GUM_ERROR(OperationNotAllowed, "cannot copy Paramter<GUM_SCALAR") 47 } 48 49 template < typename GUM_SCALAR > 50 PRMParameter< GUM_SCALAR >& 51 PRMParameter< GUM_SCALAR >::operator=(const PRMParameter< GUM_SCALAR >& from) { 52 GUM_ERROR(OperationNotAllowed, "cannot copy Paramter<GUM_SCALAR") 53 } 54 55 template < typename GUM_SCALAR > ~PRMParameter()56 PRMParameter< GUM_SCALAR >::~PRMParameter() { 57 GUM_DESTRUCTOR(PRMParameter); 58 } 59 60 template < typename GUM_SCALAR > 61 typename PRMClassElement< GUM_SCALAR >::ClassElementType elt_type()62 PRMParameter< GUM_SCALAR >::elt_type() const { 63 return PRMClassElement< GUM_SCALAR >::ClassElementType::prm_parameter; 64 } 65 66 template < typename GUM_SCALAR > value()67 GUM_SCALAR PRMParameter< GUM_SCALAR >::value() const { 68 return _value_; 69 } 70 71 template < typename GUM_SCALAR > value(GUM_SCALAR value)72 void PRMParameter< GUM_SCALAR >::value(GUM_SCALAR value) { 73 _value_ = value; 74 } 75 76 template < typename GUM_SCALAR > 77 typename PRMParameter< GUM_SCALAR >::ParameterType valueType()78 PRMParameter< GUM_SCALAR >::valueType() const { 79 return _type_; 80 } 81 82 template < typename GUM_SCALAR > type()83 PRMType& PRMParameter< GUM_SCALAR >::type() { 84 GUM_ERROR(OperationNotAllowed, "Parameters do not have a type") 85 } 86 87 template < typename GUM_SCALAR > type()88 const PRMType& PRMParameter< GUM_SCALAR >::type() const { 89 GUM_ERROR(OperationNotAllowed, "Parameters do not have a type") 90 } 91 92 template < typename GUM_SCALAR > cpf()93 Potential< GUM_SCALAR >& PRMParameter< GUM_SCALAR >::cpf() { 94 GUM_ERROR(OperationNotAllowed, "Parameters do not have a cpf") 95 } 96 97 template < typename GUM_SCALAR > cpf()98 const Potential< GUM_SCALAR >& PRMParameter< GUM_SCALAR >::cpf() const { 99 GUM_ERROR(OperationNotAllowed, "Parameters do not have a cpf") 100 } 101 102 template < typename GUM_SCALAR > addParent(const gum::prm::PRMClassElement<GUM_SCALAR> &)103 void PRMParameter< GUM_SCALAR >::addParent(const gum::prm::PRMClassElement< GUM_SCALAR >&) { 104 GUM_ERROR(OperationNotAllowed, "Parameters can not have parents") 105 } 106 107 template < typename GUM_SCALAR > addChild(const gum::prm::PRMClassElement<GUM_SCALAR> &)108 void PRMParameter< GUM_SCALAR >::addChild(const gum::prm::PRMClassElement< GUM_SCALAR >&) { 109 GUM_ERROR(OperationNotAllowed, "Parameters can not have children") 110 } 111 112 template < typename GUM_SCALAR > getCastDescendant()113 PRMAttribute< GUM_SCALAR >* PRMParameter< GUM_SCALAR >::getCastDescendant() const { 114 GUM_ERROR(OperationNotAllowed, "Parameters can have cast descendants") 115 } 116 117 } /* namespace prm */ 118 } // namespace gum 119