PEL: Use ordered_json in code instead of fifo_map

JSON objects are defined as 'unordered collections' of zero or more
name/value pairs. The implementation doesn't need to preserve specific
orders of inputs objects and where it did (say in older versions)
external fifo_map header method was used. Now with built-in ordered_json
supported (nlohmann::ordered_json), the specific 'order of inputs
objects are preserved' automatically and are not jumbled up or external
header needed to preserve input objects anymore.

Signed-off-by: Sumit Kumar <sumit_kumar@in.ibm.com>
Change-Id: I9abc1220b9fbefbae412efc6ac128d797d0faa16
diff --git a/configure.ac b/configure.ac
index 6cebfae..2600f60 100644
--- a/configure.ac
+++ b/configure.ac
@@ -209,10 +209,6 @@
             nlohmann/json.hpp,
             [],
             [AC_MSG_ERROR([Could not find nlohmann/json.hpp])])
-       AC_CHECK_HEADER(
-            fifo_map.hpp,
-            [],
-            [AC_MSG_ERROR([Could not find fifo_map.hpp])])
 
        AX_PKG_CHECK_MODULES([LIBPLDM], [libpldm])
        PKG_CHECK_MODULES([FMT], [fmt])
diff --git a/extensions/openpower-pels/src.cpp b/extensions/openpower-pels/src.cpp
index 398cfaa..e41de8c 100644
--- a/extensions/openpower-pels/src.cpp
+++ b/extensions/openpower-pels/src.cpp
@@ -22,7 +22,6 @@
 #ifdef PELTOOL
 #include <Python.h>
 
-#include <fifo_map.hpp>
 #include <nlohmann/json.hpp>
 #include <sstream>
 #endif
@@ -42,11 +41,7 @@
 constexpr size_t ccinSize = 4;
 
 #ifdef PELTOOL
-// Use fifo_map as nlohmann::json's map. We are just ignoring the 'less'
-// compare.  With this map the keys are kept in FIFO order.
-template <class K, class V, class dummy_compare, class A>
-using fifoMap = nlohmann::fifo_map<K, V, nlohmann::fifo_map_compare<K>, A>;
-using fifoJSON = nlohmann::basic_json<fifoMap>;
+using orderedJSON = nlohmann::ordered_json;
 
 void pyDecRef(PyObject* pyObj)
 {
@@ -64,9 +59,9 @@
  *
  * @return std::string - The JSON string
  */
-std::string prettyJSON(const fifoJSON& json)
+std::string prettyJSON(const orderedJSON& json)
 {
-    fifoJSON output;
+    orderedJSON output;
     if (!json.is_object())
     {
         output["SRC Details"] = json;
@@ -187,7 +182,7 @@
                 const char* output = PyBytes_AS_STRING(pBytes);
                 try
                 {
-                    fifoJSON json = nlohmann::json::parse(output);
+                    orderedJSON json = nlohmann::json::parse(output);
                     return prettyJSON(json);
                 }
                 catch (std::exception& e)
diff --git a/extensions/openpower-pels/user_data_json.cpp b/extensions/openpower-pels/user_data_json.cpp
index 934a4b8..4e15284 100644
--- a/extensions/openpower-pels/user_data_json.cpp
+++ b/extensions/openpower-pels/user_data_json.cpp
@@ -24,7 +24,6 @@
 
 #include <Python.h>
 
-#include <fifo_map.hpp>
 #include <iomanip>
 #include <nlohmann/json.hpp>
 #include <phosphor-logging/log.hpp>
@@ -34,12 +33,7 @@
 {
 namespace pv = openpower::pels::pel_values;
 using namespace phosphor::logging;
-
-// Use fifo_map as nlohmann::json's map. We are just ignoring the 'less'
-// compare.  With this map the keys are kept in FIFO order.
-template <class K, class V, class dummy_compare, class A>
-using fifoMap = nlohmann::fifo_map<K, V, nlohmann::fifo_map_compare<K>, A>;
-using fifoJSON = nlohmann::basic_json<fifoMap>;
+using orderedJSON = nlohmann::ordered_json;
 
 void pyDecRef(PyObject* pyObj)
 {
@@ -58,9 +52,9 @@
  * @return std::string - The JSON string
  */
 std::string prettyJSON(uint16_t componentID, uint8_t subType, uint8_t version,
-                       const fifoJSON& json)
+                       const orderedJSON& json)
 {
-    fifoJSON output;
+    orderedJSON output;
     output[pv::sectionVer] = std::to_string(version);
     output[pv::subSection] = std::to_string(subType);
     output[pv::createdBy] = getNumberString("0x%04X", componentID);
@@ -134,7 +128,7 @@
         cborData.resize(data.size() - sizeof(pad) - pad);
     }
 
-    fifoJSON json = nlohmann::json::from_cbor(cborData);
+    orderedJSON json = nlohmann::json::from_cbor(cborData);
 
     return prettyJSON(componentID, subType, version, json);
 }
@@ -187,7 +181,7 @@
         text.push_back(std::move(line));
     }
 
-    fifoJSON json = text;
+    orderedJSON json = text;
     return prettyJSON(componentID, subType, version, json);
 }
 
@@ -213,7 +207,7 @@
         {
             std::string jsonString{data.begin(), data.begin() + data.size()};
 
-            fifoJSON json = nlohmann::json::parse(jsonString);
+            orderedJSON json = nlohmann::json::parse(jsonString);
 
             return prettyJSON(componentID, subType, version, json);
         }
@@ -315,7 +309,7 @@
                 const char* output = PyBytes_AS_STRING(pBytes);
                 try
                 {
-                    fifoJSON json = nlohmann::json::parse(output);
+                    orderedJSON json = nlohmann::json::parse(output);
                     return prettyJSON(componentID, subType, version, json);
                 }
                 catch (std::exception& e)