170304cb5SJason M. Bills /* 270304cb5SJason M. Bills // Copyright (c) 2019 Intel Corporation 370304cb5SJason M. Bills // 470304cb5SJason M. Bills // Licensed under the Apache License, Version 2.0 (the "License"); 570304cb5SJason M. Bills // you may not use this file except in compliance with the License. 670304cb5SJason M. Bills // You may obtain a copy of the License at 770304cb5SJason M. Bills // 870304cb5SJason M. Bills // http://www.apache.org/licenses/LICENSE-2.0 970304cb5SJason M. Bills // 1070304cb5SJason M. Bills // Unless required by applicable law or agreed to in writing, software 1170304cb5SJason M. Bills // distributed under the License is distributed on an "AS IS" BASIS, 1270304cb5SJason M. Bills // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1370304cb5SJason M. Bills // See the License for the specific language governing permissions and 1470304cb5SJason M. Bills // limitations under the License. 1570304cb5SJason M. Bills */ 1670304cb5SJason M. Bills #pragma once 17c5ba4c27SEd Tanous 18c5ba4c27SEd Tanous #include <span> 19c5ba4c27SEd Tanous #include <string> 20c5ba4c27SEd Tanous #include <string_view> 21c5ba4c27SEd Tanous 22*fffb8c1fSEd Tanous namespace redfish::registries 2370304cb5SJason M. Bills { 24351d3063SJason M. Bills struct Header 25351d3063SJason M. Bills { 26351d3063SJason M. Bills const char* copyright; 27351d3063SJason M. Bills const char* type; 28351d3063SJason M. Bills const char* id; 29351d3063SJason M. Bills const char* name; 30351d3063SJason M. Bills const char* language; 31351d3063SJason M. Bills const char* description; 32351d3063SJason M. Bills const char* registryPrefix; 33351d3063SJason M. Bills const char* registryVersion; 34351d3063SJason M. Bills const char* owningEntity; 35351d3063SJason M. Bills }; 3670304cb5SJason M. Bills 3770304cb5SJason M. Bills struct Message 3870304cb5SJason M. Bills { 3970304cb5SJason M. Bills const char* description; 4070304cb5SJason M. Bills const char* message; 4170304cb5SJason M. Bills const char* severity; 42e7808c93SGunnar Mills const char* messageSeverity; 43271584abSEd Tanous const size_t numberOfArgs; 4470304cb5SJason M. Bills std::array<const char*, 5> paramTypes; 4570304cb5SJason M. Bills const char* resolution; 4670304cb5SJason M. Bills }; 4770304cb5SJason M. Bills using MessageEntry = std::pair<const char*, const Message>; 48c5ba4c27SEd Tanous 49c5ba4c27SEd Tanous inline void fillMessageArgs(const std::span<const std::string_view> messageArgs, 50c5ba4c27SEd Tanous std::string& msg) 51c5ba4c27SEd Tanous { 52c5ba4c27SEd Tanous int i = 0; 53c5ba4c27SEd Tanous for (const std::string_view& messageArg : messageArgs) 54c5ba4c27SEd Tanous { 55c5ba4c27SEd Tanous std::string argStr = "%" + std::to_string(i + 1); 56c5ba4c27SEd Tanous size_t argPos = msg.find(argStr); 57c5ba4c27SEd Tanous if (argPos != std::string::npos) 58c5ba4c27SEd Tanous { 59c5ba4c27SEd Tanous msg.replace(argPos, argStr.length(), messageArg); 60c5ba4c27SEd Tanous } 61c5ba4c27SEd Tanous i++; 62c5ba4c27SEd Tanous } 63c5ba4c27SEd Tanous } 64c5ba4c27SEd Tanous 65*fffb8c1fSEd Tanous } // namespace redfish::registries 66