OLD | NEW |
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ | 1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 /* This Source Code Form is subject to the terms of the Mozilla Public | 2 /* This Source Code Form is subject to the terms of the Mozilla Public |
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file, | 3 * License, v. 2.0. If a copy of the MPL was not distributed with this file, |
4 * You can obtain one at http://mozilla.org/MPL/2.0/. */ | 4 * You can obtain one at http://mozilla.org/MPL/2.0/. */ |
5 | 5 |
6 /* Provides checked integers, detecting integer overflow and divide-by-0. */ | 6 /* Provides checked integers, detecting integer overflow and divide-by-0. */ |
7 | 7 |
8 // Necessary modifications are made to the original CheckedInt.h file when | 8 // Necessary modifications are made to the original CheckedInt.h file when |
9 // incorporating it into WebKit: | 9 // incorporating it into WebKit: |
10 // 1) Comment out #define MOZ_CHECKEDINT_ENABLE_MOZ_ASSERTS | 10 // 1) Comment out #define MOZ_CHECKEDINT_ENABLE_MOZ_ASSERTS |
(...skipping 730 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
741 namespace detail { | 741 namespace detail { |
742 | 742 |
743 template<typename T, typename U> | 743 template<typename T, typename U> |
744 struct CastToCheckedIntImpl | 744 struct CastToCheckedIntImpl |
745 { | 745 { |
746 typedef CheckedInt<T> ReturnType; | 746 typedef CheckedInt<T> ReturnType; |
747 static CheckedInt<T> run(U u) { return u; } | 747 static CheckedInt<T> run(U u) { return u; } |
748 }; | 748 }; |
749 | 749 |
750 template<typename T> | 750 template<typename T> |
751 struct CastToCheckedIntImpl<T, CheckedInt<T> > | 751 struct CastToCheckedIntImpl<T, CheckedInt<T>> |
752 { | 752 { |
753 typedef const CheckedInt<T>& ReturnType; | 753 typedef const CheckedInt<T>& ReturnType; |
754 static const CheckedInt<T>& run(const CheckedInt<T>& u) { return u; } | 754 static const CheckedInt<T>& run(const CheckedInt<T>& u) { return u; } |
755 }; | 755 }; |
756 | 756 |
757 } // namespace detail | 757 } // namespace detail |
758 | 758 |
759 template<typename T, typename U> | 759 template<typename T, typename U> |
760 inline typename detail::CastToCheckedIntImpl<T, U>::ReturnType | 760 inline typename detail::CastToCheckedIntImpl<T, U>::ReturnType |
761 castToCheckedInt(U u) | 761 castToCheckedInt(U u) |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 typedef CheckedInt<int16_t> CheckedInt16; | 809 typedef CheckedInt<int16_t> CheckedInt16; |
810 typedef CheckedInt<uint16_t> CheckedUint16; | 810 typedef CheckedInt<uint16_t> CheckedUint16; |
811 typedef CheckedInt<int32_t> CheckedInt32; | 811 typedef CheckedInt<int32_t> CheckedInt32; |
812 typedef CheckedInt<uint32_t> CheckedUint32; | 812 typedef CheckedInt<uint32_t> CheckedUint32; |
813 typedef CheckedInt<int64_t> CheckedInt64; | 813 typedef CheckedInt<int64_t> CheckedInt64; |
814 typedef CheckedInt<uint64_t> CheckedUint64; | 814 typedef CheckedInt<uint64_t> CheckedUint64; |
815 | 815 |
816 } // namespace blink | 816 } // namespace blink |
817 | 817 |
818 #endif /* mozilla_CheckedInt_h_ */ | 818 #endif /* mozilla_CheckedInt_h_ */ |
OLD | NEW |