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