Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(631)

Unified Diff: src/xps/SkConstexprMath.h

Issue 2000853003: SkXPS: clean up SkConstexprMath (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: 2016-05-22 (Sunday) 13:44:31 EDT Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/xps/SkXPSDevice.cpp » ('j') | src/xps/SkXPSDevice.cpp » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/xps/SkConstexprMath.h
diff --git a/src/xps/SkConstexprMath.h b/src/xps/SkConstexprMath.h
index 9625d5112b13b492952113fc9d25af8678037c14..0383ab3e67898505565f48c6088933788e926c4e 100644
--- a/src/xps/SkConstexprMath.h
+++ b/src/xps/SkConstexprMath.h
@@ -8,47 +8,24 @@
#ifndef SkConstexprMath_DEFINED
#define SkConstexprMath_DEFINED
-#include "SkTypes.h"
-#include <limits.h>
+#include <stdint.h>
+#include <limits>
-template <uintmax_t N, uintmax_t B>
-struct SK_LOG {
- //! Compile-time constant ceiling(logB(N)).
- static const uintmax_t value = 1 + SK_LOG<N/B, B>::value;
-};
-template <uintmax_t B>
-struct SK_LOG<1, B> {
- static const uintmax_t value = 0;
-};
-template <uintmax_t B>
-struct SK_LOG<0, B> {
- static const uintmax_t value = 0;
-};
+/** Compile-time constant floor(log_{b}(n)) */
bungeman-skia 2016/05/23 15:04:49 We don't want floor, we want ceiling. I think that
hal.canary 2016/05/23 16:55:39 function deleted.
+constexpr size_t SkLog(uintmax_t n, uintmax_t b) {
+ return n <= 1 ? 0 : 1 + SkLog(n / b, b);
+}
-template<uintmax_t N>
-struct SK_2N1 {
- //! Compile-time constant (2^N)-1.
- static const uintmax_t value = (SK_2N1<N-1>::value << 1) + 1;
-};
-template<>
-struct SK_2N1<1> {
- static const uintmax_t value = 1;
-};
-
-/** Compile-time constant number of base n digits in type t
- if the bits of type t are considered as unsigned base two.
-*/
-#define SK_BASE_N_DIGITS_IN(n, t) (\
- SK_LOG<SK_2N1<(sizeof(t) * CHAR_BIT)>::value, n>::value\
-)
/** Compile-time constant number of base 10 digits in type t
bungeman-skia 2016/05/23 15:04:49 nit: 'type T' (capitalized, since that's how its
hal.canary 2016/05/23 16:55:39 function deleted
- if the bits of type t are considered as unsigned base two.
-*/
-#define SK_DIGITS_IN(t) SK_BASE_N_DIGITS_IN(10, (t))
+ if the bits of type t are considered as unsigned base two. */
+template <typename T>
+constexpr size_t SkDigitsIn() {
bungeman-skia 2016/05/23 15:04:49 Actually, now that I look, "std::numeric_limits::d
hal.canary 2016/05/23 16:55:39 Done.
+ return SkLog(std::numeric_limits<T>::max(), 10);
+}
-// Compile-time constant maximum value of two unsigned values.
-template <uintmax_t a, uintmax_t b> struct SkTUMax {
- static const uintmax_t value = (b < a) ? a : b;
-};
+/** Compile-time constant maximum value of two size_t. */
+constexpr size_t SkSMax(size_t a, size_t b) {
bungeman-skia 2016/05/23 15:04:49 If this is just used for size_t, just use SkTMax d
hal.canary 2016/05/23 16:55:39 Done.
+ return b < a ? a : b;
+}
#endif
« no previous file with comments | « no previous file | src/xps/SkXPSDevice.cpp » ('j') | src/xps/SkXPSDevice.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698