summaryrefslogtreecommitdiff
path: root/third_party/numerics/safe_conversions.h
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-02-05 09:46:23 -0800
committerTom Sepez <tsepez@chromium.org>2015-02-05 09:46:23 -0800
commitdabc5d57bf473708295800a7991bc1fafdf76288 (patch)
tree9dfb8313596dd61e2c600cf02548b191f9753daf /third_party/numerics/safe_conversions.h
parent7061d1af45752617fafa85e2242dc5b2844650b5 (diff)
downloadpdfium-dabc5d57bf473708295800a7991bc1fafdf76288.tar.xz
Add namespace and-re-arrange PDFium's local copy of chromium /base.
Any projects DEPS'd into chromium and requiring a /base subset should have a local copy of that subset in a separate namespace. This will avoid future naming conflicts. Re-arrange the directory structure to better identify what came from chromium's base, and to make drop-in replacement easier for files that contain hard-coded "base/" in their #include directives. R=jam@chromium.org Review URL: https://codereview.chromium.org/900753002
Diffstat (limited to 'third_party/numerics/safe_conversions.h')
-rw-r--r--third_party/numerics/safe_conversions.h64
1 files changed, 0 insertions, 64 deletions
diff --git a/third_party/numerics/safe_conversions.h b/third_party/numerics/safe_conversions.h
deleted file mode 100644
index 681dc0a9cc..0000000000
--- a/third_party/numerics/safe_conversions.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef BASE_SAFE_CONVERSIONS_H_
-#define BASE_SAFE_CONVERSIONS_H_
-
-#include <limits>
-
-#include "../logging.h"
-#include "safe_conversions_impl.h"
-
-namespace base {
-
-// Convenience function that returns true if the supplied value is in range
-// for the destination type.
-template <typename Dst, typename Src>
-inline bool IsValueInRangeForNumericType(Src value) {
- return internal::DstRangeRelationToSrcRange<Dst>(value) ==
- internal::RANGE_VALID;
-}
-
-// checked_cast<> is analogous to static_cast<> for numeric types,
-// except that it CHECKs that the specified numeric conversion will not
-// overflow or underflow. NaN source will always trigger a CHECK.
-template <typename Dst, typename Src>
-inline Dst checked_cast(Src value) {
- CHECK(IsValueInRangeForNumericType<Dst>(value));
- return static_cast<Dst>(value);
-}
-
-// saturated_cast<> is analogous to static_cast<> for numeric types, except
-// that the specified numeric conversion will saturate rather than overflow or
-// underflow. NaN assignment to an integral will trigger a CHECK condition.
-template <typename Dst, typename Src>
-inline Dst saturated_cast(Src value) {
- // Optimization for floating point values, which already saturate.
- if (std::numeric_limits<Dst>::is_iec559)
- return static_cast<Dst>(value);
-
- switch (internal::DstRangeRelationToSrcRange<Dst>(value)) {
- case internal::RANGE_VALID:
- return static_cast<Dst>(value);
-
- case internal::RANGE_UNDERFLOW:
- return std::numeric_limits<Dst>::min();
-
- case internal::RANGE_OVERFLOW:
- return std::numeric_limits<Dst>::max();
-
- // Should fail only on attempting to assign NaN to a saturated integer.
- case internal::RANGE_INVALID:
- CHECK(false);
- return std::numeric_limits<Dst>::max();
- }
-
- NOTREACHED();
- return static_cast<Dst>(value);
-}
-
-} // namespace base
-
-#endif // BASE_SAFE_CONVERSIONS_H_
-