Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #include "MaterialPropertyRegistry.h" 11 : 12 : #include "MooseError.h" 13 : 14 : unsigned int 15 118873 : MaterialPropertyRegistry::addOrGetID(const std::string & name, 16 : const MaterialPropertyRegistry::WriteKey) 17 : { 18 118873 : const auto it = _name_to_id.find(name); 19 118873 : if (it != _name_to_id.end()) 20 100736 : return it->second; 21 : 22 18137 : const auto id = _id_to_name.size(); 23 18137 : _name_to_id.emplace(name, id); 24 18137 : _id_to_name.push_back(name); 25 18137 : return id; 26 : } 27 : 28 : unsigned int 29 169821 : MaterialPropertyRegistry::getID(const std::string & name) const 30 : { 31 169821 : const auto id = queryID(name); 32 169821 : if (!id) 33 0 : mooseError("MaterialPropertyRegistry: Property '" + name + "' is not declared"); 34 169821 : return *id; 35 : } 36 : 37 : std::optional<unsigned int> 38 170049 : MaterialPropertyRegistry::queryID(const std::string & name) const 39 : { 40 170049 : const auto it = _name_to_id.find(name); 41 170049 : if (it == _name_to_id.end()) 42 0 : return {}; 43 170049 : return it->second; 44 : } 45 : 46 : const std::string & 47 852 : MaterialPropertyRegistry::getName(const unsigned int id) const 48 : { 49 852 : if (!hasProperty(id)) 50 0 : mooseError("MaterialPropertyRegistry: Property with ID ", id, " is not declared"); 51 852 : return _id_to_name[id]; 52 : }