Make temperature and pressure coupling enums enum classes
[alexxy/gromacs.git] / src / gromacs / utility / compare.h
index 6ab41cd3d3e113ee327325041f6ecfbe61abc765..e8e39484cea25645e9a9e81638261a84f5fb02e3 100644 (file)
@@ -4,7 +4,7 @@
  * Copyright (c) 1991-2000, University of Groningen, The Netherlands.
  * Copyright (c) 2001-2004, The GROMACS development team.
  * Copyright (c) 2013,2014,2015,2016,2017 by the GROMACS development team.
- * Copyright (c) 2018,2019,2020, by the GROMACS development team, led by
+ * Copyright (c) 2018,2019,2020,2021, by the GROMACS development team, led by
  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
  * and including many others, as listed in the AUTHORS file in the
  * top-level source directory and at http://www.gromacs.org.
@@ -47,6 +47,7 @@
 
 #include <cstdio>
 
+#include "gromacs/mdtypes/md_enums.h"
 #include "gromacs/utility/basedefinitions.h"
 #include "gromacs/utility/real.h"
 
@@ -84,4 +85,18 @@ void cmp_float(FILE* fp, const char* s, int index, float i1, float i2, float fto
 //! Compares two doubles and prints differences.
 void cmp_double(FILE* fp, const char* s, int index, double i1, double i2, double ftol, double abstol);
 
+//! Compare two enums of generic type and print differences.
+template<typename EnumType>
+void cmpEnum(FILE* fp, const char* s, EnumType value1, EnumType value2)
+{
+    if (value1 != value2)
+    {
+        fprintf(fp, "%s (", s);
+        fprintf(fp, "%s", enumValueToString(value1));
+        fprintf(fp, " - ");
+        fprintf(fp, "%s", enumValueToString(value2));
+        fprintf(fp, ")\n");
+    }
+}
+
 #endif