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 <span> 19 #include <string> 20 #include <string_view> 21 22 namespace redfish::registries 23 { 24 struct Header 25 { 26 const char* copyright; 27 const char* type; 28 const char* id; 29 const char* name; 30 const char* language; 31 const char* description; 32 const char* registryPrefix; 33 const char* registryVersion; 34 const char* owningEntity; 35 }; 36 37 struct Message 38 { 39 const char* description; 40 const char* message; 41 const char* messageSeverity; 42 const size_t numberOfArgs; 43 std::array<const char*, 5> paramTypes; 44 const char* resolution; 45 }; 46 using MessageEntry = std::pair<const char*, const Message>; 47 48 inline void fillMessageArgs(const std::span<const std::string_view> messageArgs, 49 std::string& msg) 50 { 51 int i = 0; 52 for (const std::string_view& messageArg : messageArgs) 53 { 54 std::string argStr = "%" + std::to_string(i + 1); 55 size_t argPos = msg.find(argStr); 56 if (argPos != std::string::npos) 57 { 58 msg.replace(argPos, argStr.length(), messageArg); 59 } 60 i++; 61 } 62 } 63 64 } // namespace redfish::registries 65