xref: /openbmc/bmcweb/redfish-core/include/registries.hpp (revision fffb8c1fae42bc5ed3b07a700b71fdaf7b59eab8)
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