fru_gen: reduce map in generated data

Eliminate one level of the generated "frus" map by creating
a structure for the lowest-level member.

This should reduce the impact of a gcc bug that consumes
excessive memory when compiling the generated map.  Also
removed the runtime calculation of the 'delimiter' character
and instead generated it in the fru_gen python script.

Resolves openbmc/openbmc#1441.
Resolves openbmc/openbmc#1166.

Change-Id: Iafe049d034354d58b68d357b4f49fd5e21b2c8c7
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/frup.hpp b/frup.hpp
index ad342fc..09ffc9f 100644
--- a/frup.hpp
+++ b/frup.hpp
@@ -75,12 +75,15 @@
 using IPMIFruInfo = std::array<std::pair<std::string,std::string>,
                            OPENBMC_VPD_KEY_MAX>;
 
-using IPMIFruMetadata = std::string;
-using IPMIFruMetadataValue = std::string;
-using IPMIFruMap = std::map<IPMIFruMetadata,IPMIFruMetadataValue>;
+struct IPMIFruData
+{
+    std::string section;
+    std::string property;
+    std::string delimiter;
+};
 
 using DbusProperty = std::string;
-using DbusPropertyMap = std::map<DbusProperty,IPMIFruMap>;
+using DbusPropertyMap = std::map<DbusProperty,IPMIFruData>;
 
 using DbusInterface = std::string;
 using DbusInterfaceMap = std::map<DbusInterface,DbusPropertyMap>;