summary refs log tree commit diff
path: root/pkgs/applications/science/astronomy/openspace/constexpr.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/science/astronomy/openspace/constexpr.patch')
-rw-r--r--pkgs/applications/science/astronomy/openspace/constexpr.patch91
1 files changed, 91 insertions, 0 deletions
diff --git a/pkgs/applications/science/astronomy/openspace/constexpr.patch b/pkgs/applications/science/astronomy/openspace/constexpr.patch
new file mode 100644
index 00000000000..d9fc91d7c27
--- /dev/null
+++ b/pkgs/applications/science/astronomy/openspace/constexpr.patch
@@ -0,0 +1,91 @@
+diff --git a/include/openspace/util/distanceconversion.h b/include/openspace/util/distanceconversion.h
+index 80a3a96..7059752 100755
+--- a/include/openspace/util/distanceconversion.h
++++ b/include/openspace/util/distanceconversion.h
+@@ -159,24 +159,34 @@ constexpr const char* nameForDistanceUnit(DistanceUnit unit, bool pluralForm = f
+ }
+ 
+ constexpr DistanceUnit distanceUnitFromString(const char* unitName) {
++    int result = -1;
++  
+     int i = 0;
+     for (const char* val : DistanceUnitNamesSingular) {
+         if (ghoul::equal(unitName, val)) {
+-            return static_cast<DistanceUnit>(i);
++            result = i;
++            break;
+         }
+         ++i;
+     }
+ 
+-    i = 0;
+-    for (const char* val : DistanceUnitNamesPlural) {
+-        if (ghoul::equal(unitName, val)) {
+-            return static_cast<DistanceUnit>(i);
++    if (result == -1) {
++        i = 0;
++        for (const char* val : DistanceUnitNamesPlural) {
++            if (ghoul::equal(unitName, val)) {
++                result = i;
++                break;
++            }
++            ++i;
+         }
+-        ++i;
+     }
+ 
+-    ghoul_assert(false, "Unit name is not a valid name");
+-    throw ghoul::MissingCaseException();
++    if (result != -1)
++        return static_cast<DistanceUnit>(result);
++    else {
++        ghoul_assert(false, "Unit name is not a valid name");
++        throw ghoul::MissingCaseException();
++    }
+ }
+ 
+ 
+diff --git a/include/openspace/util/timeconversion.h b/include/openspace/util/timeconversion.h
+index a36c92a..699bca9 100755
+--- a/include/openspace/util/timeconversion.h
++++ b/include/openspace/util/timeconversion.h
+@@ -142,23 +142,32 @@ constexpr const char* nameForTimeUnit(TimeUnit unit, bool pluralForm = false) {
+ }
+ 
+ constexpr TimeUnit timeUnitFromString(const char* unitName) {
++    int result = -1;
++    
+     int i = 0;
+     for (const char* val : TimeUnitNamesSingular) {
+         if (ghoul::equal(unitName, val)) {
+-            return static_cast<TimeUnit>(i);
++            result = i;
++            break;
+         }
+         ++i;
+     }
+ 
+-    i = 0;
+-    for (const char* val : TimeUnitNamesPlural) {
+-        if (ghoul::equal(unitName, val)) {
+-            return static_cast<TimeUnit>(i);
++    if (result == -1) {
++        i = 0;
++        for (const char* val : TimeUnitNamesPlural) {
++            if (ghoul::equal(unitName, val)) {
++                result = i;
++                break;
++            }
++            ++i;
+         }
+-        ++i;
+     }
+ 
+-    throw ghoul::MissingCaseException();
++    if (result != -1)
++        return static_cast<TimeUnit>(result);
++    else
++        throw ghoul::MissingCaseException();
+ }
+ 
+ std::pair<double, std::string> simplifyTime(double seconds,