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 18*d5c80ad9SNan Zhou #include <array> 19*d5c80ad9SNan Zhou #include <cstddef> 20c5ba4c27SEd Tanous #include <span> 21c5ba4c27SEd Tanous #include <string> 22c5ba4c27SEd Tanous #include <string_view> 23*d5c80ad9SNan Zhou #include <utility> 24*d5c80ad9SNan Zhou 25*d5c80ad9SNan Zhou // IWYU pragma: no_include <stddef.h> 26c5ba4c27SEd Tanous 27fffb8c1fSEd Tanous namespace redfish::registries 2870304cb5SJason M. Bills { 29351d3063SJason M. Bills struct Header 30351d3063SJason M. Bills { 31351d3063SJason M. Bills const char* copyright; 32351d3063SJason M. Bills const char* type; 33351d3063SJason M. Bills const char* id; 34351d3063SJason M. Bills const char* name; 35351d3063SJason M. Bills const char* language; 36351d3063SJason M. Bills const char* description; 37351d3063SJason M. Bills const char* registryPrefix; 38351d3063SJason M. Bills const char* registryVersion; 39351d3063SJason M. Bills const char* owningEntity; 40351d3063SJason M. Bills }; 4170304cb5SJason M. Bills 4270304cb5SJason M. Bills struct Message 4370304cb5SJason M. Bills { 4470304cb5SJason M. Bills const char* description; 4570304cb5SJason M. Bills const char* message; 46e7808c93SGunnar Mills const char* messageSeverity; 47271584abSEd Tanous const size_t numberOfArgs; 4870304cb5SJason M. Bills std::array<const char*, 5> paramTypes; 4970304cb5SJason M. Bills const char* resolution; 5070304cb5SJason M. Bills }; 5170304cb5SJason M. Bills using MessageEntry = std::pair<const char*, const Message>; 52c5ba4c27SEd Tanous 53c5ba4c27SEd Tanous inline void fillMessageArgs(const std::span<const std::string_view> messageArgs, 54c5ba4c27SEd Tanous std::string& msg) 55c5ba4c27SEd Tanous { 56c5ba4c27SEd Tanous int i = 0; 57c5ba4c27SEd Tanous for (const std::string_view& messageArg : messageArgs) 58c5ba4c27SEd Tanous { 59c5ba4c27SEd Tanous std::string argStr = "%" + std::to_string(i + 1); 60c5ba4c27SEd Tanous size_t argPos = msg.find(argStr); 61c5ba4c27SEd Tanous if (argPos != std::string::npos) 62c5ba4c27SEd Tanous { 63c5ba4c27SEd Tanous msg.replace(argPos, argStr.length(), messageArg); 64c5ba4c27SEd Tanous } 65c5ba4c27SEd Tanous i++; 66c5ba4c27SEd Tanous } 67c5ba4c27SEd Tanous } 68c5ba4c27SEd Tanous 69fffb8c1fSEd Tanous } // namespace redfish::registries 70