diff options
author | Hal Canary <halcanary@google.com> | 2018-06-11 21:44:01 -0400 |
---|---|---|
committer | Mike Klein <mtklein@google.com> | 2018-06-12 15:03:21 +0000 |
commit | 2a2f67592602b18527bc3fd449132d420cd5b62e (patch) | |
tree | 0f6078db2af3b904f08e8cc0118055bf1db621a5 /include/private/SkTo.h | |
parent | 7c525e62d405d57ae7a7742cf607b9770a83a0ab (diff) |
SkTypes: extract SkTo
Change-Id: I8de790d5013db2105ad885fa2683303d7c250b09
Reviewed-on: https://skia-review.googlesource.com/133620
Reviewed-by: Mike Klein <mtklein@google.com>
Diffstat (limited to 'include/private/SkTo.h')
-rw-r--r-- | include/private/SkTo.h | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/include/private/SkTo.h b/include/private/SkTo.h new file mode 100644 index 0000000000..9b5b7fd164 --- /dev/null +++ b/include/private/SkTo.h @@ -0,0 +1,28 @@ +/* + * Copyright 2018 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#ifndef SkTo_DEFINED +#define SkTo_DEFINED + +#include "SkTypes.h" +#include "SkTFitsIn.h" + +template <typename D, typename S> constexpr D SkTo(S s) { + return SkASSERT(SkTFitsIn<D>(s)), + static_cast<D>(s); +} + +template <typename S> constexpr int8_t SkToS8(S x) { return SkTo<int8_t>(x); } +template <typename S> constexpr uint8_t SkToU8(S x) { return SkTo<uint8_t>(x); } +template <typename S> constexpr int16_t SkToS16(S x) { return SkTo<int16_t>(x); } +template <typename S> constexpr uint16_t SkToU16(S x) { return SkTo<uint16_t>(x); } +template <typename S> constexpr int32_t SkToS32(S x) { return SkTo<int32_t>(x); } +template <typename S> constexpr uint32_t SkToU32(S x) { return SkTo<uint32_t>(x); } +template <typename S> constexpr int SkToInt(S x) { return SkTo<int>(x); } +template <typename S> constexpr unsigned SkToUInt(S x) { return SkTo<unsigned>(x); } +template <typename S> constexpr size_t SkToSizeT(S x) { return SkTo<size_t>(x); } + +#endif // SkTo_DEFINED |