[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lmi-commits] [lmi] valyuta/002 594bd68 07/14: Allow floating currency::
From: |
Greg Chicares |
Subject: |
[lmi-commits] [lmi] valyuta/002 594bd68 07/14: Allow floating currency::data_type |
Date: |
Thu, 17 Sep 2020 16:27:15 -0400 (EDT) |
branch: valyuta/002
commit 594bd68831bdee3ca54f076a6cab33e1a687d4b1
Author: Gregory W. Chicares <gchicares@sbcglobal.net>
Commit: Gregory W. Chicares <gchicares@sbcglobal.net>
Allow floating currency::data_type
A macro toggle (as opposed to std::is_integral(), say) is justified
because it is desirable to inhibit warnings (with #pragma) as narrowly
as possible.
---
currency.hpp | 24 +++++++++++++++++++-----
1 file changed, 19 insertions(+), 5 deletions(-)
diff --git a/currency.hpp b/currency.hpp
index 8c0825a..4321525 100644
--- a/currency.hpp
+++ b/currency.hpp
@@ -32,9 +32,14 @@
#include <iostream> // ostream
#include <vector>
-#if defined __GNUC__
-# pragma GCC diagnostic ignored "-Wuseless-cast"
-#endif // defined __GNUC__
+#define CURRENCY_HAS_INTEGER_DATATYPE
+
+#if !defined CURRENCY_HAS_INTEGER_DATATYPE
+# if defined __GNUC__
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wuseless-cast"
+# endif // defined __GNUC__
+#endif // !CURRENCY_HAS_INTEGER_DATATYPE
class currency
{
@@ -42,9 +47,12 @@ class currency
friend class currency_test;
public:
-// using data_type = double;
-// using data_type = long double;
+#if defined CURRENCY_HAS_INTEGER_DATATYPE
using data_type = std::int64_t;
+#else // !defined CURRENCY_HAS_INTEGER_DATATYPE
+// using data_type = long double;
+ using data_type = double;
+#endif // !defined CURRENCY_HAS_INTEGER_DATATYPE
static constexpr int cents_digits = 2;
static constexpr int cents_per_dollar = 100; // 10 ^ cents_digits
@@ -233,4 +241,10 @@ inline std::vector<double> doubleize(std::vector<currency>
const& z)
return r;
}
+#if !defined CURRENCY_HAS_INTEGER_DATATYPE
+# if defined __GNUC__
+# pragma GCC diagnostic pop
+# endif // defined __GNUC__
+#endif // !CURRENCY_HAS_INTEGER_DATATYPE
+
#endif // currency_hpp
- [lmi-commits] [lmi] valyuta/002 updated (9433c8e -> 3f71218), Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 53de040 01/14: Add an extra argument to currency(data_type), Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 c5e0b01 04/14: Make currency class mandatory, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 c80d1eb 09/14: Add two experimental options, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 e4cb0f1 10/14: Make it float, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 cfe336c 11/14: Make it faster, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 4a6bc6c 02/14: Resolve confusion, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 0d47d8d 03/14: Refine an assertion, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 27c198e 05/14: fixup, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 3d1ff11 06/14: Remove useless casts, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 594bd68 07/14: Allow floating currency::data_type,
Greg Chicares <=
- [lmi-commits] [lmi] valyuta/002 1fbef51 13/14: Make it even faster, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 420fac7 08/14: Allow currency to be dollars rather than cents, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 3f71218 14/14: Trivially avoid spurious regression errors, Greg Chicares, 2020/09/17
- [lmi-commits] [lmi] valyuta/002 e262406 12/14: Make it more faster, Greg Chicares, 2020/09/17