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 {