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::message_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* severity; 42 const char* messageSeverity; 43 const size_t numberOfArgs; 44 std::array<const char*, 5> paramTypes; 45 const char* resolution; 46 }; 47 using MessageEntry = std::pair<const char*, const Message>; 48 49 inline void fillMessageArgs(const std::span<const std::string_view> messageArgs, 50 std::string& msg) 51 { 52 int i = 0; 53 for (const std::string_view& messageArg : messageArgs) 54 { 55 std::string argStr = "%" + std::to_string(i + 1); 56 size_t argPos = msg.find(argStr); 57 if (argPos != std::string::npos) 58 { 59 msg.replace(argPos, argStr.length(), messageArg); 60 } 61 i++; 62 } 63 } 64 65 } // namespace redfish::message_registries 66