From 3f26d719bfccf7566cfd80343c8b48bfc731f7ff Mon Sep 17 00:00:00 2001
From: Imdad Sardharwalla <imdad.sardharwalla@autodesk.com>
Date: Thu, 20 May 2021 22:55:06 +0100
Subject: [PATCH] REFORM-1096 Fixes for macOS (#50)

XCode10 lacks support for several C++17 standard library
features. Hence, for macOS, std::size() has been replaced with calls
to sizeof(), and std::map::try_emplace() has been replaced with calls
to std::map::emplace().
---
 Test/TestArgs.cc | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/Test/TestArgs.cc b/Test/TestArgs.cc
index c337c11..04be492 100755
--- a/Test/TestArgs.cc
+++ b/Test/TestArgs.cc
@@ -174,8 +174,13 @@ void Parser::add_option(Option& _option)
   OPTION_THROW_if(help_option(_option.name()),
       _option.name() << " cannot override -h or --help.");
 
+#ifdef __APPLE__
+  OPTION_THROW_if(!options_.emplace(_option.name(), _option).second,
+      _option.name() << " has already been added to the argument parser.");
+#else // __APPLE__
   OPTION_THROW_if(!options_.try_emplace(_option.name(), _option).second,
       _option.name() << " has already been added to the argument parser.");
+#endif // __APPLE__
 }
 
 void Parser::parse()
@@ -349,7 +354,13 @@ Checksum::Level ChecksumLevel::parse_level(const std::string& _arg)
   // Make _arg uppercase
   auto arg = to_upper(_arg);
 
-  size_t num_levels = std::size(Checksum::LEVEL_TEXT);
+#ifdef __APPLE__
+  const size_t num_levels =
+      sizeof(Checksum::LEVEL_TEXT) / sizeof(Checksum::LEVEL_TEXT[0]);
+#else  // __APPLE__
+  const size_t num_levels = std::size(Checksum::LEVEL_TEXT);
+#endif // __APPLE__
+
   for (size_t i = 0; i < num_levels; i++)
   {
     if (arg == Checksum::LEVEL_TEXT[i])
-- 
GitLab