aboutsummaryrefslogtreecommitdiffstats
path: root/util/generic/mem_copy.h
diff options
context:
space:
mode:
authorAnton Samokhvalov <pg83@yandex.ru>2022-02-10 16:45:17 +0300
committerDaniil Cherednik <dcherednik@yandex-team.ru>2022-02-10 16:45:17 +0300
commitd3a398281c6fd1d3672036cb2d63f842d2cb28c5 (patch)
treedd4bd3ca0f36b817e96812825ffaf10d645803f2 /util/generic/mem_copy.h
parent72cb13b4aff9bc9cf22e49251bc8fd143f82538f (diff)
downloadydb-d3a398281c6fd1d3672036cb2d63f842d2cb28c5.tar.gz
Restoring authorship annotation for Anton Samokhvalov <pg83@yandex.ru>. Commit 2 of 2.
Diffstat (limited to 'util/generic/mem_copy.h')
-rw-r--r--util/generic/mem_copy.h102
1 files changed, 51 insertions, 51 deletions
diff --git a/util/generic/mem_copy.h b/util/generic/mem_copy.h
index 2e97d265e9..b68c852953 100644
--- a/util/generic/mem_copy.h
+++ b/util/generic/mem_copy.h
@@ -1,55 +1,55 @@
-#pragma once
-
-#include "typetraits.h"
-
-#include <util/system/types.h>
-
-#include <cstring>
-
-template <class T>
+#pragma once
+
+#include "typetraits.h"
+
+#include <util/system/types.h>
+
+#include <cstring>
+
+template <class T>
using TIfPOD = std::enable_if_t<TTypeTraits<T>::IsPod, T*>;
-
-template <class T>
+
+template <class T>
using TIfNotPOD = std::enable_if_t<!TTypeTraits<T>::IsPod, T*>;
-
-template <class T>
+
+template <class T>
static inline TIfPOD<T> MemCopy(T* to, const T* from, size_t n) noexcept {
- if (n) {
- memcpy(to, from, n * sizeof(T));
- }
-
- return to;
-}
-
-template <class T>
-static inline TIfNotPOD<T> MemCopy(T* to, const T* from, size_t n) {
- for (size_t i = 0; i < n; ++i) {
- to[i] = from[i];
- }
-
- return to;
-}
-
-template <class T>
+ if (n) {
+ memcpy(to, from, n * sizeof(T));
+ }
+
+ return to;
+}
+
+template <class T>
+static inline TIfNotPOD<T> MemCopy(T* to, const T* from, size_t n) {
+ for (size_t i = 0; i < n; ++i) {
+ to[i] = from[i];
+ }
+
+ return to;
+}
+
+template <class T>
static inline TIfPOD<T> MemMove(T* to, const T* from, size_t n) noexcept {
- if (n) {
- memmove(to, from, n * sizeof(T));
- }
-
- return to;
-}
-
-template <class T>
-static inline TIfNotPOD<T> MemMove(T* to, const T* from, size_t n) {
- if (to <= from || to >= from + n) {
- return MemCopy(to, from, n);
- }
-
- //copy backwards
- while (n) {
- to[n - 1] = from[n - 1];
- --n;
- }
-
- return to;
-}
+ if (n) {
+ memmove(to, from, n * sizeof(T));
+ }
+
+ return to;
+}
+
+template <class T>
+static inline TIfNotPOD<T> MemMove(T* to, const T* from, size_t n) {
+ if (to <= from || to >= from + n) {
+ return MemCopy(to, from, n);
+ }
+
+ //copy backwards
+ while (n) {
+ to[n - 1] = from[n - 1];
+ --n;
+ }
+
+ return to;
+}