catboost 1.25.1 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEPLOYMENT.md +22 -15
- package/README.md +37 -27
- package/binding.gyp +5 -7
- package/build_scripts/bootstrap.js +2 -1
- package/build_scripts/out/build.js +46 -68
- package/build_scripts/out/build_model.js +1 -1
- package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
- package/build_scripts/out/ci.js +5 -5
- package/build_scripts/out/config.js +32 -18
- package/build_scripts/out/install.js +5 -3
- package/build_scripts/out/package_prepublish.js +1 -1
- package/build_scripts/out/packaging.js +1 -19
- package/build_scripts/out/run_tests.js +1 -1
- package/build_scripts/out/test.js +8 -3
- package/config.json +18 -11
- package/inc/catboost/libs/model_interface/c_api.h +349 -3
- package/lib/catboost.d.ts +65 -21
- package/package.json +4 -4
- package/src/api_helpers.cpp +100 -24
- package/src/api_helpers.h +8 -7
- package/src/api_module.cpp +1 -2
- package/src/model.cpp +483 -83
- package/src/model.h +24 -9
- package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
- package/inc/util/charset/recode_result.h +0 -9
- package/inc/util/charset/unicode_table.h +0 -123
- package/inc/util/charset/unidata.h +0 -421
- package/inc/util/charset/utf8.h +0 -384
- package/inc/util/charset/wide.h +0 -843
- package/inc/util/charset/wide_specific.h +0 -22
- package/inc/util/datetime/base.h +0 -669
- package/inc/util/datetime/constants.h +0 -7
- package/inc/util/datetime/cputimer.h +0 -124
- package/inc/util/datetime/parser.h +0 -292
- package/inc/util/datetime/systime.h +0 -47
- package/inc/util/datetime/uptime.h +0 -8
- package/inc/util/digest/city.h +0 -88
- package/inc/util/digest/fnv.h +0 -73
- package/inc/util/digest/multi.h +0 -14
- package/inc/util/digest/murmur.h +0 -57
- package/inc/util/digest/numeric.h +0 -86
- package/inc/util/digest/sequence.h +0 -48
- package/inc/util/draft/date.h +0 -129
- package/inc/util/draft/datetime.h +0 -184
- package/inc/util/draft/enum.h +0 -136
- package/inc/util/draft/holder_vector.h +0 -102
- package/inc/util/draft/ip.h +0 -131
- package/inc/util/draft/matrix.h +0 -108
- package/inc/util/draft/memory.h +0 -40
- package/inc/util/folder/dirent_win.h +0 -46
- package/inc/util/folder/dirut.h +0 -121
- package/inc/util/folder/filelist.h +0 -81
- package/inc/util/folder/fts.h +0 -108
- package/inc/util/folder/iterator.h +0 -109
- package/inc/util/folder/lstat_win.h +0 -20
- package/inc/util/folder/path.h +0 -225
- package/inc/util/folder/pathsplit.h +0 -113
- package/inc/util/folder/tempdir.h +0 -42
- package/inc/util/generic/adaptor.h +0 -134
- package/inc/util/generic/algorithm.h +0 -765
- package/inc/util/generic/array_ref.h +0 -282
- package/inc/util/generic/array_size.h +0 -24
- package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
- package/inc/util/generic/bitmap.h +0 -1115
- package/inc/util/generic/bitops.h +0 -459
- package/inc/util/generic/bt_exception.h +0 -24
- package/inc/util/generic/buffer.h +0 -232
- package/inc/util/generic/cast.h +0 -176
- package/inc/util/generic/deque.h +0 -24
- package/inc/util/generic/explicit_type.h +0 -42
- package/inc/util/generic/fastqueue.h +0 -55
- package/inc/util/generic/flags.h +0 -244
- package/inc/util/generic/function.h +0 -103
- package/inc/util/generic/fwd.h +0 -171
- package/inc/util/generic/guid.h +0 -61
- package/inc/util/generic/hash.h +0 -2032
- package/inc/util/generic/hash_primes.h +0 -140
- package/inc/util/generic/hash_set.h +0 -490
- package/inc/util/generic/hide_ptr.h +0 -3
- package/inc/util/generic/intrlist.h +0 -876
- package/inc/util/generic/is_in.h +0 -53
- package/inc/util/generic/iterator.h +0 -137
- package/inc/util/generic/iterator_range.h +0 -105
- package/inc/util/generic/lazy_value.h +0 -66
- package/inc/util/generic/list.h +0 -22
- package/inc/util/generic/map.h +0 -44
- package/inc/util/generic/mapfindptr.h +0 -60
- package/inc/util/generic/maybe.h +0 -713
- package/inc/util/generic/maybe_traits.h +0 -164
- package/inc/util/generic/mem_copy.h +0 -55
- package/inc/util/generic/noncopyable.h +0 -38
- package/inc/util/generic/object_counter.h +0 -53
- package/inc/util/generic/ptr.h +0 -1113
- package/inc/util/generic/queue.h +0 -57
- package/inc/util/generic/refcount.h +0 -162
- package/inc/util/generic/reserve.h +0 -11
- package/inc/util/generic/scope.h +0 -65
- package/inc/util/generic/serialized_enum.h +0 -406
- package/inc/util/generic/set.h +0 -42
- package/inc/util/generic/singleton.h +0 -136
- package/inc/util/generic/size_literals.h +0 -65
- package/inc/util/generic/stack.h +0 -18
- package/inc/util/generic/store_policy.h +0 -120
- package/inc/util/generic/strbase.h +0 -612
- package/inc/util/generic/strbuf.h +0 -552
- package/inc/util/generic/strfcpy.h +0 -17
- package/inc/util/generic/string.h +0 -1572
- package/inc/util/generic/string_hash.h +0 -21
- package/inc/util/generic/string_ut.h +0 -1175
- package/inc/util/generic/type_name.h +0 -34
- package/inc/util/generic/typelist.h +0 -114
- package/inc/util/generic/typetraits.h +0 -325
- package/inc/util/generic/utility.h +0 -132
- package/inc/util/generic/va_args.h +0 -400
- package/inc/util/generic/variant.h +0 -631
- package/inc/util/generic/variant_traits.h +0 -171
- package/inc/util/generic/vector.h +0 -119
- package/inc/util/generic/xrange.h +0 -258
- package/inc/util/generic/yexception.h +0 -212
- package/inc/util/generic/yexception_ut.h +0 -14
- package/inc/util/generic/ylimits.h +0 -92
- package/inc/util/generic/ymath.h +0 -206
- package/inc/util/memory/addstorage.h +0 -93
- package/inc/util/memory/alloc.h +0 -27
- package/inc/util/memory/blob.h +0 -296
- package/inc/util/memory/mmapalloc.h +0 -8
- package/inc/util/memory/pool.h +0 -432
- package/inc/util/memory/segmented_string_pool.h +0 -194
- package/inc/util/memory/segpool_alloc.h +0 -118
- package/inc/util/memory/smallobj.h +0 -141
- package/inc/util/memory/tempbuf.h +0 -111
- package/inc/util/network/address.h +0 -136
- package/inc/util/network/endpoint.h +0 -61
- package/inc/util/network/hostip.h +0 -16
- package/inc/util/network/init.h +0 -60
- package/inc/util/network/interface.h +0 -17
- package/inc/util/network/iovec.h +0 -65
- package/inc/util/network/ip.h +0 -116
- package/inc/util/network/nonblock.h +0 -8
- package/inc/util/network/pair.h +0 -9
- package/inc/util/network/poller.h +0 -58
- package/inc/util/network/pollerimpl.h +0 -707
- package/inc/util/network/sock.h +0 -608
- package/inc/util/network/socket.h +0 -421
- package/inc/util/random/common_ops.h +0 -130
- package/inc/util/random/easy.h +0 -47
- package/inc/util/random/entropy.h +0 -21
- package/inc/util/random/fast.h +0 -101
- package/inc/util/random/init_atfork.h +0 -3
- package/inc/util/random/lcg_engine.h +0 -66
- package/inc/util/random/mersenne.h +0 -46
- package/inc/util/random/mersenne32.h +0 -50
- package/inc/util/random/mersenne64.h +0 -50
- package/inc/util/random/normal.h +0 -38
- package/inc/util/random/random.h +0 -30
- package/inc/util/random/shuffle.h +0 -39
- package/inc/util/str_stl.h +0 -266
- package/inc/util/stream/aligned.h +0 -99
- package/inc/util/stream/buffer.h +0 -119
- package/inc/util/stream/buffered.h +0 -225
- package/inc/util/stream/debug.h +0 -53
- package/inc/util/stream/direct_io.h +0 -43
- package/inc/util/stream/file.h +0 -108
- package/inc/util/stream/format.h +0 -444
- package/inc/util/stream/fwd.h +0 -100
- package/inc/util/stream/hex.h +0 -8
- package/inc/util/stream/holder.h +0 -44
- package/inc/util/stream/input.h +0 -273
- package/inc/util/stream/labeled.h +0 -19
- package/inc/util/stream/length.h +0 -100
- package/inc/util/stream/mem.h +0 -255
- package/inc/util/stream/multi.h +0 -32
- package/inc/util/stream/null.h +0 -61
- package/inc/util/stream/output.h +0 -304
- package/inc/util/stream/pipe.h +0 -112
- package/inc/util/stream/printf.h +0 -25
- package/inc/util/stream/str.h +0 -207
- package/inc/util/stream/tee.h +0 -28
- package/inc/util/stream/tempbuf.h +0 -21
- package/inc/util/stream/tokenizer.h +0 -214
- package/inc/util/stream/trace.h +0 -60
- package/inc/util/stream/walk.h +0 -35
- package/inc/util/stream/zerocopy.h +0 -91
- package/inc/util/stream/zerocopy_output.h +0 -57
- package/inc/util/stream/zlib.h +0 -173
- package/inc/util/string/ascii.h +0 -236
- package/inc/util/string/builder.h +0 -39
- package/inc/util/string/cast.h +0 -347
- package/inc/util/string/cstriter.h +0 -14
- package/inc/util/string/escape.h +0 -70
- package/inc/util/string/hex.h +0 -59
- package/inc/util/string/join.h +0 -194
- package/inc/util/string/printf.h +0 -13
- package/inc/util/string/reverse.h +0 -16
- package/inc/util/string/split.h +0 -1080
- package/inc/util/string/strip.h +0 -257
- package/inc/util/string/strspn.h +0 -65
- package/inc/util/string/subst.h +0 -56
- package/inc/util/string/type.h +0 -50
- package/inc/util/string/util.h +0 -195
- package/inc/util/string/vector.h +0 -132
- package/inc/util/system/align.h +0 -50
- package/inc/util/system/atexit.h +0 -22
- package/inc/util/system/atomic.h +0 -51
- package/inc/util/system/atomic_gcc.h +0 -90
- package/inc/util/system/atomic_ops.h +0 -189
- package/inc/util/system/atomic_win.h +0 -114
- package/inc/util/system/backtrace.h +0 -39
- package/inc/util/system/byteorder.h +0 -186
- package/inc/util/system/compat.h +0 -84
- package/inc/util/system/compiler.h +0 -620
- package/inc/util/system/condvar.h +0 -71
- package/inc/util/system/context.h +0 -181
- package/inc/util/system/context_aarch64.h +0 -8
- package/inc/util/system/context_i686.h +0 -9
- package/inc/util/system/context_x86.h +0 -12
- package/inc/util/system/context_x86_64.h +0 -7
- package/inc/util/system/cpu_id.h +0 -159
- package/inc/util/system/daemon.h +0 -28
- package/inc/util/system/datetime.h +0 -98
- package/inc/util/system/defaults.h +0 -149
- package/inc/util/system/demangle.h +0 -5
- package/inc/util/system/demangle_impl.h +0 -23
- package/inc/util/system/direct_io.h +0 -71
- package/inc/util/system/dynlib.h +0 -119
- package/inc/util/system/env.h +0 -32
- package/inc/util/system/error.h +0 -95
- package/inc/util/system/event.h +0 -122
- package/inc/util/system/execpath.h +0 -17
- package/inc/util/system/fasttime.h +0 -6
- package/inc/util/system/fhandle.h +0 -27
- package/inc/util/system/file.h +0 -210
- package/inc/util/system/file_lock.h +0 -34
- package/inc/util/system/filemap.h +0 -383
- package/inc/util/system/flock.h +0 -35
- package/inc/util/system/fs.h +0 -156
- package/inc/util/system/fs_win.h +0 -29
- package/inc/util/system/fstat.h +0 -46
- package/inc/util/system/getpid.h +0 -12
- package/inc/util/system/guard.h +0 -179
- package/inc/util/system/hi_lo.h +0 -139
- package/inc/util/system/hostname.h +0 -10
- package/inc/util/system/hp_timer.h +0 -36
- package/inc/util/system/info.h +0 -12
- package/inc/util/system/interrupt_signals.h +0 -22
- package/inc/util/system/madvise.h +0 -30
- package/inc/util/system/maxlen.h +0 -32
- package/inc/util/system/mem_info.h +0 -18
- package/inc/util/system/mincore.h +0 -38
- package/inc/util/system/mktemp.h +0 -11
- package/inc/util/system/mlock.h +0 -43
- package/inc/util/system/mutex.h +0 -67
- package/inc/util/system/nice.h +0 -3
- package/inc/util/system/pipe.h +0 -90
- package/inc/util/system/platform.h +0 -246
- package/inc/util/system/progname.h +0 -13
- package/inc/util/system/protect.h +0 -25
- package/inc/util/system/rusage.h +0 -26
- package/inc/util/system/rwlock.h +0 -78
- package/inc/util/system/sanitizers.h +0 -122
- package/inc/util/system/sem.h +0 -41
- package/inc/util/system/shellcommand.h +0 -472
- package/inc/util/system/shmat.h +0 -32
- package/inc/util/system/sigset.h +0 -78
- package/inc/util/system/spin_wait.h +0 -10
- package/inc/util/system/spinlock.h +0 -121
- package/inc/util/system/src_location.h +0 -25
- package/inc/util/system/src_root.h +0 -68
- package/inc/util/system/sys_alloc.h +0 -43
- package/inc/util/system/sysstat.h +0 -52
- package/inc/util/system/tempfile.h +0 -34
- package/inc/util/system/thread.h +0 -167
- package/inc/util/system/tls.h +0 -307
- package/inc/util/system/types.h +0 -119
- package/inc/util/system/unaligned_mem.h +0 -67
- package/inc/util/system/user.h +0 -5
- package/inc/util/system/utime.h +0 -6
- package/inc/util/system/valgrind.h +0 -48
- package/inc/util/system/winint.h +0 -43
- package/inc/util/system/yassert.h +0 -121
- package/inc/util/system/yield.h +0 -4
- package/inc/util/thread/factory.h +0 -65
- package/inc/util/thread/fwd.h +0 -30
- package/inc/util/thread/lfqueue.h +0 -406
- package/inc/util/thread/lfstack.h +0 -188
- package/inc/util/thread/pool.h +0 -388
- package/inc/util/thread/singleton.h +0 -42
- package/inc/util/ysafeptr.h +0 -427
- package/inc/util/ysaveload.h +0 -700
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <type_traits>
|
|
4
|
-
#include <initializer_list>
|
|
5
|
-
|
|
6
|
-
namespace NMaybe {
|
|
7
|
-
struct TInPlace {};
|
|
8
|
-
|
|
9
|
-
template <class T, bool = std::is_trivially_destructible<T>::value>
|
|
10
|
-
struct TStorageBase {
|
|
11
|
-
constexpr TStorageBase() noexcept
|
|
12
|
-
: NullState_('\0') {}
|
|
13
|
-
|
|
14
|
-
template <class... Args>
|
|
15
|
-
constexpr TStorageBase(TInPlace, Args&&... args)
|
|
16
|
-
: Data_(std::forward<Args>(args)...)
|
|
17
|
-
, Defined_(true) {}
|
|
18
|
-
|
|
19
|
-
~TStorageBase() = default;
|
|
20
|
-
|
|
21
|
-
union {
|
|
22
|
-
char NullState_;
|
|
23
|
-
T Data_;
|
|
24
|
-
};
|
|
25
|
-
bool Defined_ = false;
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
template <class T>
|
|
29
|
-
struct TStorageBase<T, false> {
|
|
30
|
-
constexpr TStorageBase() noexcept
|
|
31
|
-
: NullState_('\0') {}
|
|
32
|
-
|
|
33
|
-
template <class... Args>
|
|
34
|
-
constexpr TStorageBase(TInPlace, Args&&... args)
|
|
35
|
-
: Data_(std::forward<Args>(args)...)
|
|
36
|
-
, Defined_(true) {}
|
|
37
|
-
|
|
38
|
-
~TStorageBase() {
|
|
39
|
-
if (this->Defined_) {
|
|
40
|
-
this->Data_.~T();
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
union {
|
|
45
|
-
char NullState_;
|
|
46
|
-
T Data_;
|
|
47
|
-
};
|
|
48
|
-
bool Defined_ = false;
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
// -------------------- COPY CONSTRUCT --------------------
|
|
52
|
-
|
|
53
|
-
template <class T, bool = std::is_trivially_copy_constructible<T>::value>
|
|
54
|
-
struct TCopyBase : TStorageBase<T> {
|
|
55
|
-
using TStorageBase<T>::TStorageBase;
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
template <class T>
|
|
59
|
-
struct TCopyBase<T, false> : TStorageBase<T> {
|
|
60
|
-
using TStorageBase<T>::TStorageBase;
|
|
61
|
-
|
|
62
|
-
constexpr TCopyBase() = default;
|
|
63
|
-
constexpr TCopyBase(const TCopyBase& rhs) {
|
|
64
|
-
if (rhs.Defined_) {
|
|
65
|
-
new (std::addressof(this->Data_)) T(rhs.Data_);
|
|
66
|
-
this->Defined_ = true;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
constexpr TCopyBase(TCopyBase&&) = default;
|
|
70
|
-
TCopyBase& operator=(const TCopyBase&) = default;
|
|
71
|
-
TCopyBase& operator=(TCopyBase&&) = default;
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
// -------------------- MOVE CONSTRUCT --------------------
|
|
75
|
-
|
|
76
|
-
template <class T, bool = std::is_trivially_move_constructible<T>::value>
|
|
77
|
-
struct TMoveBase : TCopyBase<T> {
|
|
78
|
-
using TCopyBase<T>::TCopyBase;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
template <class T>
|
|
82
|
-
struct TMoveBase<T, false> : TCopyBase<T> {
|
|
83
|
-
using TCopyBase<T>::TCopyBase;
|
|
84
|
-
|
|
85
|
-
constexpr TMoveBase() noexcept = default;
|
|
86
|
-
constexpr TMoveBase(const TMoveBase&) = default;
|
|
87
|
-
constexpr TMoveBase(TMoveBase&& rhs) noexcept(std::is_nothrow_move_constructible<T>::value) {
|
|
88
|
-
if (rhs.Defined_) {
|
|
89
|
-
new (std::addressof(this->Data_)) T(std::move(rhs.Data_));
|
|
90
|
-
this->Defined_ = true;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
TMoveBase& operator=(const TMoveBase&) = default;
|
|
94
|
-
TMoveBase& operator=(TMoveBase&&) = default;
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
// -------------------- COPY ASSIGN --------------------
|
|
98
|
-
|
|
99
|
-
template <class T, bool = std::is_trivially_copy_assignable<T>::value>
|
|
100
|
-
struct TCopyAssignBase : TMoveBase<T> {
|
|
101
|
-
using TMoveBase<T>::TMoveBase;
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
template <class T>
|
|
105
|
-
struct TCopyAssignBase<T, false> : TMoveBase<T> {
|
|
106
|
-
using TMoveBase<T>::TMoveBase;
|
|
107
|
-
|
|
108
|
-
constexpr TCopyAssignBase() noexcept = default;
|
|
109
|
-
constexpr TCopyAssignBase(const TCopyAssignBase&) = default;
|
|
110
|
-
constexpr TCopyAssignBase(TCopyAssignBase&&) = default;
|
|
111
|
-
TCopyAssignBase& operator=(const TCopyAssignBase& rhs) {
|
|
112
|
-
if (this->Defined_) {
|
|
113
|
-
if (rhs.Defined_) {
|
|
114
|
-
this->Data_ = rhs.Data_;
|
|
115
|
-
} else {
|
|
116
|
-
this->Data_.~T();
|
|
117
|
-
this->Defined_ = false;
|
|
118
|
-
}
|
|
119
|
-
} else if (rhs.Defined_) {
|
|
120
|
-
new (std::addressof(this->Data_)) T(rhs.Data_);
|
|
121
|
-
this->Defined_ = true;
|
|
122
|
-
}
|
|
123
|
-
return *this;
|
|
124
|
-
}
|
|
125
|
-
TCopyAssignBase& operator=(TCopyAssignBase&&) = default;
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
// -------------------- MOVE ASSIGN --------------------
|
|
129
|
-
|
|
130
|
-
template <class T, bool = std::is_trivially_copy_assignable<T>::value>
|
|
131
|
-
struct TMoveAssignBase : TCopyAssignBase<T> {
|
|
132
|
-
using TCopyAssignBase<T>::TCopyAssignBase;
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
template <class T>
|
|
136
|
-
struct TMoveAssignBase<T, false> : TCopyAssignBase<T> {
|
|
137
|
-
using TCopyAssignBase<T>::TCopyAssignBase;
|
|
138
|
-
|
|
139
|
-
constexpr TMoveAssignBase() noexcept = default;
|
|
140
|
-
constexpr TMoveAssignBase(const TMoveAssignBase&) = default;
|
|
141
|
-
constexpr TMoveAssignBase(TMoveAssignBase&&) = default;
|
|
142
|
-
TMoveAssignBase& operator=(const TMoveAssignBase&) = default;
|
|
143
|
-
TMoveAssignBase& operator=(TMoveAssignBase&& rhs) noexcept(
|
|
144
|
-
std::is_nothrow_move_assignable<T>::value &&
|
|
145
|
-
std::is_nothrow_move_constructible<T>::value)
|
|
146
|
-
{
|
|
147
|
-
if (this->Defined_) {
|
|
148
|
-
if (rhs.Defined_) {
|
|
149
|
-
this->Data_ = std::move(rhs.Data_);
|
|
150
|
-
} else {
|
|
151
|
-
this->Data_.~T();
|
|
152
|
-
this->Defined_ = false;
|
|
153
|
-
}
|
|
154
|
-
} else if (rhs.Defined_) {
|
|
155
|
-
new (std::addressof(this->Data_)) T(std::move(rhs.Data_));
|
|
156
|
-
this->Defined_ = true;
|
|
157
|
-
}
|
|
158
|
-
return *this;
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
template <class T>
|
|
164
|
-
using TMaybeBase = NMaybe::TMoveAssignBase<T>;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "typetraits.h"
|
|
4
|
-
|
|
5
|
-
#include <util/system/types.h>
|
|
6
|
-
|
|
7
|
-
#include <cstring>
|
|
8
|
-
|
|
9
|
-
template <class T>
|
|
10
|
-
using TIfPOD = std::enable_if_t<TTypeTraits<T>::IsPod, T*>;
|
|
11
|
-
|
|
12
|
-
template <class T>
|
|
13
|
-
using TIfNotPOD = std::enable_if_t<!TTypeTraits<T>::IsPod, T*>;
|
|
14
|
-
|
|
15
|
-
template <class T>
|
|
16
|
-
static inline TIfPOD<T> MemCopy(T* to, const T* from, size_t n) noexcept {
|
|
17
|
-
if (n) {
|
|
18
|
-
memcpy(to, from, n * sizeof(T));
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return to;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
template <class T>
|
|
25
|
-
static inline TIfNotPOD<T> MemCopy(T* to, const T* from, size_t n) {
|
|
26
|
-
for (size_t i = 0; i < n; ++i) {
|
|
27
|
-
to[i] = from[i];
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return to;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
template <class T>
|
|
34
|
-
static inline TIfPOD<T> MemMove(T* to, const T* from, size_t n) noexcept {
|
|
35
|
-
if (n) {
|
|
36
|
-
memmove(to, from, n * sizeof(T));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return to;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
template <class T>
|
|
43
|
-
static inline TIfNotPOD<T> MemMove(T* to, const T* from, size_t n) {
|
|
44
|
-
if (to <= from || to >= from + n) {
|
|
45
|
-
return MemCopy(to, from, n);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
//copy backwards
|
|
49
|
-
while (n) {
|
|
50
|
-
to[n - 1] = from[n - 1];
|
|
51
|
-
--n;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
return to;
|
|
55
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @class TNonCopyable
|
|
5
|
-
*
|
|
6
|
-
* Inherit your class from `TNonCopyable` if you want to make it noncopyable.
|
|
7
|
-
*
|
|
8
|
-
* Example usage:
|
|
9
|
-
* @code
|
|
10
|
-
* class Foo: private TNonCopyable {
|
|
11
|
-
* // ...
|
|
12
|
-
* };
|
|
13
|
-
* @endcode
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
namespace NNonCopyable { // protection from unintended ADL
|
|
17
|
-
struct TNonCopyable {
|
|
18
|
-
TNonCopyable(const TNonCopyable&) = delete;
|
|
19
|
-
TNonCopyable& operator=(const TNonCopyable&) = delete;
|
|
20
|
-
|
|
21
|
-
TNonCopyable() = default;
|
|
22
|
-
~TNonCopyable() = default;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
struct TMoveOnly {
|
|
26
|
-
TMoveOnly(TMoveOnly&&) noexcept = default;
|
|
27
|
-
TMoveOnly& operator=(TMoveOnly&&) noexcept = default;
|
|
28
|
-
|
|
29
|
-
TMoveOnly(const TMoveOnly&) = delete;
|
|
30
|
-
TMoveOnly& operator=(const TMoveOnly&) = delete;
|
|
31
|
-
|
|
32
|
-
TMoveOnly() = default;
|
|
33
|
-
~TMoveOnly() = default;
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
using TNonCopyable = NNonCopyable::TNonCopyable;
|
|
38
|
-
using TMoveOnly = NNonCopyable::TMoveOnly;
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/system/atomic.h>
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Simple thread-safe per-class counter that can be used to make sure you don't
|
|
7
|
-
* have any leaks in your code, or for statistical purposes.
|
|
8
|
-
*
|
|
9
|
-
* Example usage:
|
|
10
|
-
* \code
|
|
11
|
-
* class TMyClass: public TObjectCounter<TMyClass> {
|
|
12
|
-
* // ...
|
|
13
|
-
* };
|
|
14
|
-
*
|
|
15
|
-
* // In your code:
|
|
16
|
-
* Cerr << "TMyClass instances in use: " << TMyClass::ObjectCount() << Endl;
|
|
17
|
-
* \endcode
|
|
18
|
-
*/
|
|
19
|
-
template <class T>
|
|
20
|
-
class TObjectCounter {
|
|
21
|
-
public:
|
|
22
|
-
inline TObjectCounter() noexcept {
|
|
23
|
-
AtomicIncrement(Count_);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
inline TObjectCounter(const TObjectCounter& /*item*/) noexcept {
|
|
27
|
-
AtomicIncrement(Count_);
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
inline ~TObjectCounter() {
|
|
31
|
-
AtomicDecrement(Count_);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
static inline long ObjectCount() noexcept {
|
|
35
|
-
return AtomicGet(Count_);
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Resets object count. Mainly for tests, as you don't want to do this in
|
|
40
|
-
* your code and then end up with negative counts.
|
|
41
|
-
*
|
|
42
|
-
* \returns Current object count.
|
|
43
|
-
*/
|
|
44
|
-
static inline long ResetObjectCount() noexcept {
|
|
45
|
-
return AtomicSwap(&Count_, 0);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
private:
|
|
49
|
-
static TAtomic Count_;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
template <class T>
|
|
53
|
-
TAtomic TObjectCounter<T>::Count_ = 0;
|