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 126571 : MaterialPropertyRegistry::addOrGetID(const std::string & name, 16 : const MaterialPropertyRegistry::WriteKey) 17 : { 18 126571 : const auto it = _name_to_id.find(name); 19 126571 : if (it != _name_to_id.end()) 20 107130 : return it->second; 21 : 22 19441 : const auto id = _id_to_name.size(); 23 19441 : _name_to_id.emplace(name, id); 24 19441 : _id_to_name.push_back(name); 25 19441 : return id; 26 : } 27 : 28 : unsigned int 29 181057 : MaterialPropertyRegistry::getID(const std::string & name) const 30 : { 31 181057 : const auto id = queryID(name); 32 181057 : if (!id) 33 0 : mooseError("MaterialPropertyRegistry: Property '" + name + "' is not declared"); 34 181057 : return *id; 35 : } 36 : 37 : std::optional<unsigned int> 38 181288 : MaterialPropertyRegistry::queryID(const std::string & name) const 39 : { 40 181288 : const auto it = _name_to_id.find(name); 41 181288 : if (it == _name_to_id.end()) 42 0 : return {}; 43 181288 : return it->second; 44 : } 45 : 46 : const std::string & 47 916 : MaterialPropertyRegistry::getName(const unsigned int id) const 48 : { 49 916 : if (!hasProperty(id)) 50 0 : mooseError("MaterialPropertyRegistry: Property with ID ", id, " is not declared"); 51 916 : return _id_to_name[id]; 52 : }