1 /* 2 // Copyright (c) 2019 Intel Corporation 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 */ 16 #pragma once 17 18 #include <array> 19 #include <cstddef> 20 #include <span> 21 #include <string> 22 #include <string_view> 23 #include <utility> 24 25 // IWYU pragma: no_include <stddef.h> 26 27 namespace redfish::registries 28 { 29 struct Header 30 { 31 const char* copyright; 32 const char* type; 33 const char* id; 34 const char* name; 35 const char* language; 36 const char* description; 37 const char* registryPrefix; 38 const char* registryVersion; 39 const char* owningEntity; 40 }; 41 42 struct Message 43 { 44 const char* description; 45 const char* message; 46 const char* messageSeverity; 47 const size_t numberOfArgs; 48 std::array<const char*, 5> paramTypes; 49 const char* resolution; 50 }; 51 using MessageEntry = std::pair<const char*, const Message>; 52 53 inline void fillMessageArgs(const std::span<const std::string_view> messageArgs, 54 std::string& msg) 55 { 56 int i = 0; 57 for (const std::string_view& messageArg : messageArgs) 58 { 59 std::string argStr = "%" + std::to_string(i + 1); 60 size_t argPos = msg.find(argStr); 61 if (argPos != std::string::npos) 62 { 63 msg.replace(argPos, argStr.length(), messageArg); 64 } 65 i++; 66 } 67 } 68 69 } // namespace redfish::registries 70