Move some numeric utility code from rtc_base/ to rtc_base/numerics/

Specifically, I'm moving

  safe_compare.h
  safe_conversions.h
  safe_minmax.h

They shouldn't be part of the API, and moving them to an appropriate
subdirectory of rtc_base/ is a good way to keep track of that.

BUG=webrtc:8445

Change-Id: I458531aeb30bcf4291c4bec3bf22a2fffbf054ff
Reviewed-on: https://webrtc-review.googlesource.com/20860
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20829}
diff --git a/rtc_base/BUILD.gn b/rtc_base/BUILD.gn
index 20797cc..e7a6cec 100644
--- a/rtc_base/BUILD.gn
+++ b/rtc_base/BUILD.gn
@@ -146,6 +146,10 @@
     "location.h",
     "mod_ops.h",
     "moving_max_counter.h",
+    "numerics/safe_compare.h",
+    "numerics/safe_conversions.h",
+    "numerics/safe_conversions_impl.h",
+    "numerics/safe_minmax.h",
     "onetimeevent.h",
     "pathutils.cc",
     "pathutils.h",
@@ -168,10 +172,6 @@
     "refcount.h",
     "refcountedobject.h",
     "refcounter.h",
-    "safe_compare.h",
-    "safe_conversions.h",
-    "safe_conversions_impl.h",
-    "safe_minmax.h",
     "sanitizer.h",
     "scoped_ref_ptr.h",
     "string_to_number.cc",
@@ -875,6 +875,8 @@
       "md5digest_unittest.cc",
       "mod_ops_unittest.cc",
       "moving_max_counter_unittest.cc",
+      "numerics/safe_compare_unittest.cc",
+      "numerics/safe_minmax_unittest.cc",
       "onetimeevent_unittest.cc",
       "pathutils_unittest.cc",
       "platform_thread_unittest.cc",
@@ -883,8 +885,6 @@
       "rate_statistics_unittest.cc",
       "ratetracker_unittest.cc",
       "refcountedobject_unittest.cc",
-      "safe_compare_unittest.cc",
-      "safe_minmax_unittest.cc",
       "string_to_number_unittest.cc",
       "stringencode_unittest.cc",
       "stringize_macros_unittest.cc",
diff --git a/rtc_base/checks.h b/rtc_base/checks.h
index 9f5fc2e..e9a19e6 100644
--- a/rtc_base/checks.h
+++ b/rtc_base/checks.h
@@ -36,7 +36,7 @@
 #include <sstream>
 #include <string>
 
-#include "rtc_base/safe_compare.h"
+#include "rtc_base/numerics/safe_compare.h"
 
 // The macros here print a message to stderr and abort under various
 // conditions. All will accept additional stream messages. For example:
diff --git a/rtc_base/safe_compare.h b/rtc_base/numerics/safe_compare.h
similarity index 97%
rename from rtc_base/safe_compare.h
rename to rtc_base/numerics/safe_compare.h
index 017f137..85f0a30 100644
--- a/rtc_base/safe_compare.h
+++ b/rtc_base/numerics/safe_compare.h
@@ -28,8 +28,8 @@
 // zero; in the remaining cases, it is just a few machine instructions (no
 // branches).
 
-#ifndef RTC_BASE_SAFE_COMPARE_H_
-#define RTC_BASE_SAFE_COMPARE_H_
+#ifndef RTC_BASE_NUMERICS_SAFE_COMPARE_H_
+#define RTC_BASE_NUMERICS_SAFE_COMPARE_H_
 
 #include <stddef.h>
 #include <stdint.h>
@@ -173,4 +173,4 @@
 
 }  // namespace rtc
 
-#endif  // RTC_BASE_SAFE_COMPARE_H_
+#endif  // RTC_BASE_NUMERICS_SAFE_COMPARE_H_
diff --git a/rtc_base/safe_compare_unittest.cc b/rtc_base/numerics/safe_compare_unittest.cc
similarity index 99%
rename from rtc_base/safe_compare_unittest.cc
rename to rtc_base/numerics/safe_compare_unittest.cc
index 521f5f5..e7a251f 100644
--- a/rtc_base/safe_compare_unittest.cc
+++ b/rtc_base/numerics/safe_compare_unittest.cc
@@ -10,7 +10,7 @@
 
 #include <limits>
 
-#include "rtc_base/safe_compare.h"
+#include "rtc_base/numerics/safe_compare.h"
 #include "test/gtest.h"
 
 namespace rtc {
diff --git a/rtc_base/safe_conversions.h b/rtc_base/numerics/safe_conversions.h
similarity index 92%
rename from rtc_base/safe_conversions.h
rename to rtc_base/numerics/safe_conversions.h
index 73ac067..58efcaa 100644
--- a/rtc_base/safe_conversions.h
+++ b/rtc_base/numerics/safe_conversions.h
@@ -10,13 +10,13 @@
 
 // Borrowed from Chromium's src/base/numerics/safe_conversions.h.
 
-#ifndef RTC_BASE_SAFE_CONVERSIONS_H_
-#define RTC_BASE_SAFE_CONVERSIONS_H_
+#ifndef RTC_BASE_NUMERICS_SAFE_CONVERSIONS_H_
+#define RTC_BASE_NUMERICS_SAFE_CONVERSIONS_H_
 
 #include <limits>
 
 #include "rtc_base/checks.h"
-#include "rtc_base/safe_conversions_impl.h"
+#include "rtc_base/numerics/safe_conversions_impl.h"
 
 namespace rtc {
 
@@ -73,4 +73,4 @@
 
 }  // namespace rtc
 
-#endif  // RTC_BASE_SAFE_CONVERSIONS_H_
+#endif  // RTC_BASE_NUMERICS_SAFE_CONVERSIONS_H_
diff --git a/rtc_base/safe_conversions_impl.h b/rtc_base/numerics/safe_conversions_impl.h
similarity index 97%
rename from rtc_base/safe_conversions_impl.h
rename to rtc_base/numerics/safe_conversions_impl.h
index 7f05a11..9b4f1c6 100644
--- a/rtc_base/safe_conversions_impl.h
+++ b/rtc_base/numerics/safe_conversions_impl.h
@@ -10,8 +10,8 @@
 
 // Borrowed from Chromium's src/base/numerics/safe_conversions_impl.h.
 
-#ifndef RTC_BASE_SAFE_CONVERSIONS_IMPL_H_
-#define RTC_BASE_SAFE_CONVERSIONS_IMPL_H_
+#ifndef RTC_BASE_NUMERICS_SAFE_CONVERSIONS_IMPL_H_
+#define RTC_BASE_NUMERICS_SAFE_CONVERSIONS_IMPL_H_
 
 #include <limits>
 
@@ -172,4 +172,4 @@
 }  // namespace internal
 }  // namespace rtc
 
-#endif  // RTC_BASE_SAFE_CONVERSIONS_IMPL_H_
+#endif  // RTC_BASE_NUMERICS_SAFE_CONVERSIONS_IMPL_H_
diff --git a/rtc_base/safe_minmax.h b/rtc_base/numerics/safe_minmax.h
similarity index 98%
rename from rtc_base/safe_minmax.h
rename to rtc_base/numerics/safe_minmax.h
index d20aea8..8d00afb 100644
--- a/rtc_base/safe_minmax.h
+++ b/rtc_base/numerics/safe_minmax.h
@@ -73,14 +73,14 @@
 // result, then everything's fine, and the return type is as requested. But if
 // the requested type is too small, a static_assert is triggered.
 
-#ifndef RTC_BASE_SAFE_MINMAX_H_
-#define RTC_BASE_SAFE_MINMAX_H_
+#ifndef RTC_BASE_NUMERICS_SAFE_MINMAX_H_
+#define RTC_BASE_NUMERICS_SAFE_MINMAX_H_
 
 #include <limits>
 #include <type_traits>
 
 #include "rtc_base/checks.h"
-#include "rtc_base/safe_compare.h"
+#include "rtc_base/numerics/safe_compare.h"
 #include "rtc_base/type_traits.h"
 
 namespace rtc {
@@ -332,4 +332,4 @@
 
 }  // namespace rtc
 
-#endif  // RTC_BASE_SAFE_MINMAX_H_
+#endif  // RTC_BASE_NUMERICS_SAFE_MINMAX_H_
diff --git a/rtc_base/safe_minmax_unittest.cc b/rtc_base/numerics/safe_minmax_unittest.cc
similarity index 99%
rename from rtc_base/safe_minmax_unittest.cc
rename to rtc_base/numerics/safe_minmax_unittest.cc
index 1e4f4b3..72d23b6 100644
--- a/rtc_base/safe_minmax_unittest.cc
+++ b/rtc_base/numerics/safe_minmax_unittest.cc
@@ -11,7 +11,7 @@
 #include <algorithm>
 #include <limits>
 
-#include "rtc_base/safe_minmax.h"
+#include "rtc_base/numerics/safe_minmax.h"
 #include "test/gtest.h"
 
 namespace rtc {
diff --git a/rtc_base/numerics/sequence_number_util.h b/rtc_base/numerics/sequence_number_util.h
index 9dbd812..4a39347 100644
--- a/rtc_base/numerics/sequence_number_util.h
+++ b/rtc_base/numerics/sequence_number_util.h
@@ -16,7 +16,7 @@
 
 #include "api/optional.h"
 #include "rtc_base/mod_ops.h"
-#include "rtc_base/safe_compare.h"
+#include "rtc_base/numerics/safe_compare.h"
 
 namespace webrtc {
 
diff --git a/rtc_base/openssladapter.cc b/rtc_base/openssladapter.cc
index a5ef0fe..a064596 100644
--- a/rtc_base/openssladapter.cc
+++ b/rtc_base/openssladapter.cc
@@ -28,8 +28,8 @@
 #include "rtc_base/arraysize.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/openssl.h"
-#include "rtc_base/safe_conversions.h"
 #include "rtc_base/sslroots.h"
 #include "rtc_base/stringencode.h"
 #include "rtc_base/stringutils.h"
diff --git a/rtc_base/opensslstreamadapter.cc b/rtc_base/opensslstreamadapter.cc
index bdc39c2..0d2d900 100644
--- a/rtc_base/opensslstreamadapter.cc
+++ b/rtc_base/opensslstreamadapter.cc
@@ -26,11 +26,11 @@
 
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/openssl.h"
 #include "rtc_base/openssladapter.h"
 #include "rtc_base/openssldigest.h"
 #include "rtc_base/opensslidentity.h"
-#include "rtc_base/safe_conversions.h"
 #include "rtc_base/stream.h"
 #include "rtc_base/stringutils.h"
 #include "rtc_base/thread.h"
diff --git a/rtc_base/random.cc b/rtc_base/random.cc
index 1043505..5deb621 100644
--- a/rtc_base/random.cc
+++ b/rtc_base/random.cc
@@ -12,7 +12,7 @@
 #include <math.h>
 
 #include "rtc_base/checks.h"
-#include "rtc_base/safe_conversions.h"
+#include "rtc_base/numerics/safe_conversions.h"
 
 namespace webrtc {
 
diff --git a/rtc_base/rtccertificate_unittest.cc b/rtc_base/rtccertificate_unittest.cc
index 04a7676..7252a04 100644
--- a/rtc_base/rtccertificate_unittest.cc
+++ b/rtc_base/rtccertificate_unittest.cc
@@ -15,8 +15,8 @@
 #include "rtc_base/fakesslidentity.h"
 #include "rtc_base/gunit.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/rtccertificate.h"
-#include "rtc_base/safe_conversions.h"
 #include "rtc_base/sslidentity.h"
 #include "rtc_base/thread.h"
 #include "rtc_base/timeutils.h"
diff --git a/rtc_base/socketaddress.cc b/rtc_base/socketaddress.cc
index 8e2ce6c..54a41d4 100644
--- a/rtc_base/socketaddress.cc
+++ b/rtc_base/socketaddress.cc
@@ -9,7 +9,7 @@
  */
 
 #include "rtc_base/socketaddress.h"
-#include "rtc_base/safe_conversions.h"
+#include "rtc_base/numerics/safe_conversions.h"
 
 #if defined(WEBRTC_POSIX)
 #include <sys/types.h>
diff --git a/rtc_base/task_queue_libevent.cc b/rtc_base/task_queue_libevent.cc
index eb242b6..2f89211 100644
--- a/rtc_base/task_queue_libevent.cc
+++ b/rtc_base/task_queue_libevent.cc
@@ -18,10 +18,10 @@
 #include "base/third_party/libevent/event.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/platform_thread.h"
 #include "rtc_base/refcount.h"
 #include "rtc_base/refcountedobject.h"
-#include "rtc_base/safe_conversions.h"
 #include "rtc_base/task_queue.h"
 #include "rtc_base/task_queue_posix.h"
 #include "rtc_base/timeutils.h"
diff --git a/rtc_base/task_queue_win.cc b/rtc_base/task_queue_win.cc
index 082bf9d..8a626e9 100644
--- a/rtc_base/task_queue_win.cc
+++ b/rtc_base/task_queue_win.cc
@@ -21,10 +21,10 @@
 #include "rtc_base/checks.h"
 #include "rtc_base/event.h"
 #include "rtc_base/logging.h"
+#include "rtc_base/numerics/safe_conversions.h"
 #include "rtc_base/platform_thread.h"
 #include "rtc_base/refcount.h"
 #include "rtc_base/refcountedobject.h"
-#include "rtc_base/safe_conversions.h"
 #include "rtc_base/timeutils.h"
 
 namespace rtc {