From b05dec36bcd75c8aa6f7840310b96a9d94aa89b1 Mon Sep 17 00:00:00 2001
From: Mark Rogers <mark.rogers@powermapper.com>
Date: Tue, 10 Jan 2017 14:00:29 +0000
Subject: [PATCH] PoDoFo: change sizeof EPdfDataType enum from sizeof(int) to
 sizeof(char) which saves 8 bytes per PdfObject due to removal of compiler
 alignment padding

---
 Electrum/Mapper/Libs/podofo/src/base/PdfCompilerCompat.h | 10 ++++++++++
 Electrum/Mapper/Libs/podofo/src/base/PdfDefines.h        |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/Electrum/Mapper/Libs/podofo/src/base/PdfCompilerCompat.h b/Electrum/Mapper/Libs/podofo/src/base/PdfCompilerCompat.h
index c71702c..c645bc5 100644
--- a/Electrum/Mapper/Libs/podofo/src/base/PdfCompilerCompat.h
+++ b/Electrum/Mapper/Libs/podofo/src/base/PdfCompilerCompat.h
@@ -198,6 +198,16 @@ namespace PoDoFo {
 
 #endif // defined(_WIN32)
 
+// Visual C++ 2015 (_MSC_VER 1900) still uses __cplusplus = 199711 so, we need both tests
+// this shrinks enum types from sizeof(int) to sizeof(char) which creates significant
+// space savings on PdfObject / PdfVariant
+#if (defined(_MSC_VER) && _MSC_VER < 1900) || (!defined(_MSC_VER) &&  __cplusplus < 201103)
+#define PODOFO_ENUM_UINT8
+#else 
+#define PODOFO_ENUM_UINT8	: uint8_t
+#endif 
+
+
 /**
  * \page PoDoFo PdfCompilerCompat Header
  * 
diff --git a/Electrum/Mapper/Libs/podofo/src/base/PdfDefines.h b/Electrum/Mapper/Libs/podofo/src/base/PdfDefines.h
index a7fbf47..c379eed 100644
--- a/Electrum/Mapper/Libs/podofo/src/base/PdfDefines.h
+++ b/Electrum/Mapper/Libs/podofo/src/base/PdfDefines.h
@@ -194,7 +194,7 @@ const EPdfWriteMode ePdfWriteMode_Default = ePdfWriteMode_Compact;
  *
  * Remember to update PdfVariant::GetDataTypeString() when adding members here.
  */
-enum EPdfDataType {
+enum EPdfDataType PODOFO_ENUM_UINT8 {
     ePdfDataType_Bool,                  /**< Boolean datatype: Accepts the values "true" and "false" */
     ePdfDataType_Number,                /**< Number datatype for integer values */
     ePdfDataType_Real,                  /**< Real datatype for floating point numbers */
-- 
2.2.1

