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
package/inc/util/generic/queue.h
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "fwd.h"
|
|
4
|
-
#include "deque.h"
|
|
5
|
-
#include "vector.h"
|
|
6
|
-
#include "utility.h"
|
|
7
|
-
|
|
8
|
-
#include <util/str_stl.h>
|
|
9
|
-
|
|
10
|
-
#include <queue>
|
|
11
|
-
|
|
12
|
-
template <class T, class S>
|
|
13
|
-
class TQueue: public std::queue<T, S> {
|
|
14
|
-
using TBase = std::queue<T, S>;
|
|
15
|
-
|
|
16
|
-
public:
|
|
17
|
-
using TBase::TBase;
|
|
18
|
-
|
|
19
|
-
inline explicit operator bool() const noexcept {
|
|
20
|
-
return !this->empty();
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
inline void clear() {
|
|
24
|
-
this->c.clear();
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
inline S& Container() {
|
|
28
|
-
return this->c;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
inline const S& Container() const {
|
|
32
|
-
return this->c;
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
template <class T, class S, class C>
|
|
37
|
-
class TPriorityQueue: public std::priority_queue<T, S, C> {
|
|
38
|
-
using TBase = std::priority_queue<T, S, C>;
|
|
39
|
-
public:
|
|
40
|
-
using TBase::TBase;
|
|
41
|
-
|
|
42
|
-
inline explicit operator bool() const noexcept {
|
|
43
|
-
return !this->empty();
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
inline void clear() {
|
|
47
|
-
this->c.clear();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
inline S& Container() {
|
|
51
|
-
return this->c;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
inline const S& Container() const {
|
|
55
|
-
return this->c;
|
|
56
|
-
}
|
|
57
|
-
};
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/system/guard.h>
|
|
4
|
-
#include <util/system/atomic.h>
|
|
5
|
-
#include <util/system/defaults.h>
|
|
6
|
-
#include <util/system/yassert.h>
|
|
7
|
-
|
|
8
|
-
template <class TCounterCheckPolicy>
|
|
9
|
-
class TSimpleCounterTemplate: public TCounterCheckPolicy {
|
|
10
|
-
using TCounterCheckPolicy::Check;
|
|
11
|
-
|
|
12
|
-
public:
|
|
13
|
-
inline TSimpleCounterTemplate(long initial = 0) noexcept
|
|
14
|
-
: Counter_(initial)
|
|
15
|
-
{
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
inline ~TSimpleCounterTemplate() {
|
|
19
|
-
Check();
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
inline TAtomicBase Add(TAtomicBase d) noexcept {
|
|
23
|
-
Check();
|
|
24
|
-
return Counter_ += d;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
inline TAtomicBase Inc() noexcept {
|
|
28
|
-
return Add(1);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
inline TAtomicBase Sub(TAtomicBase d) noexcept {
|
|
32
|
-
Check();
|
|
33
|
-
return Counter_ -= d;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
inline TAtomicBase Dec() noexcept {
|
|
37
|
-
return Sub(1);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
inline bool TryWeakInc() noexcept {
|
|
41
|
-
if (!Counter_) {
|
|
42
|
-
return false;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
Inc();
|
|
46
|
-
Y_ASSERT(Counter_ != 0);
|
|
47
|
-
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
inline TAtomicBase Val() const noexcept {
|
|
52
|
-
return Counter_;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
private:
|
|
56
|
-
TAtomicBase Counter_;
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
class TNoCheckPolicy {
|
|
60
|
-
protected:
|
|
61
|
-
inline void Check() const {
|
|
62
|
-
}
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
#if defined(SIMPLE_COUNTER_THREAD_CHECK)
|
|
66
|
-
|
|
67
|
-
#include <util/system/thread.i>
|
|
68
|
-
|
|
69
|
-
class TCheckPolicy {
|
|
70
|
-
public:
|
|
71
|
-
inline TCheckPolicy() {
|
|
72
|
-
ThreadId = SystemCurrentThreadId();
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
protected:
|
|
76
|
-
inline void Check() const {
|
|
77
|
-
Y_VERIFY(ThreadId == SystemCurrentThreadId(), "incorrect usage of TSimpleCounter");
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private:
|
|
81
|
-
size_t ThreadId;
|
|
82
|
-
};
|
|
83
|
-
#else
|
|
84
|
-
using TCheckPolicy = TNoCheckPolicy;
|
|
85
|
-
#endif
|
|
86
|
-
|
|
87
|
-
// Use this one if access from multiple threads to your pointer is an error and you want to enforce thread checks
|
|
88
|
-
using TSimpleCounter = TSimpleCounterTemplate<TCheckPolicy>;
|
|
89
|
-
// Use this one if you do want to share the pointer between threads, omit thread checks and do the synchronization yourself
|
|
90
|
-
using TExplicitSimpleCounter = TSimpleCounterTemplate<TNoCheckPolicy>;
|
|
91
|
-
|
|
92
|
-
template <class TCounterCheckPolicy>
|
|
93
|
-
struct TCommonLockOps<TSimpleCounterTemplate<TCounterCheckPolicy>> {
|
|
94
|
-
static inline void Acquire(TSimpleCounterTemplate<TCounterCheckPolicy>* t) noexcept {
|
|
95
|
-
t->Inc();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
static inline void Release(TSimpleCounterTemplate<TCounterCheckPolicy>* t) noexcept {
|
|
99
|
-
t->Dec();
|
|
100
|
-
}
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
class TAtomicCounter {
|
|
104
|
-
public:
|
|
105
|
-
inline TAtomicCounter(long initial = 0) noexcept
|
|
106
|
-
: Counter_(initial)
|
|
107
|
-
{
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
inline ~TAtomicCounter() = default;
|
|
111
|
-
|
|
112
|
-
inline TAtomicBase Add(TAtomicBase d) noexcept {
|
|
113
|
-
return AtomicAdd(Counter_, d);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
inline TAtomicBase Inc() noexcept {
|
|
117
|
-
return Add(1);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
inline TAtomicBase Sub(TAtomicBase d) noexcept {
|
|
121
|
-
return AtomicSub(Counter_, d);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
inline TAtomicBase Dec() noexcept {
|
|
125
|
-
return Sub(1);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
inline TAtomicBase Val() const noexcept {
|
|
129
|
-
return AtomicGet(Counter_);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
inline bool TryWeakInc() noexcept {
|
|
133
|
-
while (true) {
|
|
134
|
-
intptr_t curValue = Counter_;
|
|
135
|
-
|
|
136
|
-
if (!curValue) {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
intptr_t newValue = curValue + 1;
|
|
141
|
-
Y_ASSERT(newValue != 0);
|
|
142
|
-
|
|
143
|
-
if (AtomicCas(&Counter_, newValue, curValue)) {
|
|
144
|
-
return true;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
private:
|
|
150
|
-
TAtomic Counter_;
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
template <>
|
|
154
|
-
struct TCommonLockOps<TAtomicCounter> {
|
|
155
|
-
static inline void Acquire(TAtomicCounter* t) noexcept {
|
|
156
|
-
t->Inc();
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
static inline void Release(TAtomicCounter* t) noexcept {
|
|
160
|
-
t->Dec();
|
|
161
|
-
}
|
|
162
|
-
};
|
package/inc/util/generic/scope.h
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/system/compiler.h>
|
|
4
|
-
#include <util/system/defaults.h>
|
|
5
|
-
|
|
6
|
-
#include <utility>
|
|
7
|
-
|
|
8
|
-
namespace NPrivate {
|
|
9
|
-
template <typename F>
|
|
10
|
-
class TScopeGuard {
|
|
11
|
-
public:
|
|
12
|
-
TScopeGuard(const F& function)
|
|
13
|
-
: Function_{function}
|
|
14
|
-
{
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
TScopeGuard(F&& function)
|
|
18
|
-
: Function_{std::move(function)}
|
|
19
|
-
{
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
TScopeGuard(TScopeGuard&&) = default;
|
|
23
|
-
TScopeGuard(const TScopeGuard&) = default;
|
|
24
|
-
|
|
25
|
-
~TScopeGuard() {
|
|
26
|
-
Function_();
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
private:
|
|
30
|
-
F Function_;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
struct TMakeGuardHelper {
|
|
34
|
-
template <class F>
|
|
35
|
-
TScopeGuard<F> operator | (F&& function) const {
|
|
36
|
-
return std::forward<F>(function);
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// \brief `Y_SCOPE_EXIT(captures) { body };`
|
|
42
|
-
//
|
|
43
|
-
// General implementaion of RAII idiom (resource acquisition is initialization). Executes
|
|
44
|
-
// function upon return from the current scope.
|
|
45
|
-
//
|
|
46
|
-
// @note expects `body` to provide no-throw guarantee, otherwise whenever an exception
|
|
47
|
-
// is thrown and leaves the outermost block of `body`, the function `std::terminate` is called.
|
|
48
|
-
// @see http://drdobbs.com/184403758 for detailed motivation.
|
|
49
|
-
#define Y_SCOPE_EXIT(...) const auto Y_GENERATE_UNIQUE_ID(scopeGuard) Y_DECLARE_UNUSED = ::NPrivate::TMakeGuardHelper{} | [__VA_ARGS__]() mutable -> void
|
|
50
|
-
|
|
51
|
-
// \brief `Y_DEFER { body };`
|
|
52
|
-
//
|
|
53
|
-
// Same as `Y_SCOPE_EXIT` but doesn't require user to provide capture-list explicitly (it
|
|
54
|
-
// implicitly uses `[&]` capture). Have same requirements for `body`.
|
|
55
|
-
//
|
|
56
|
-
// Inspired by `defer` statement in languages like Swift and Go.
|
|
57
|
-
//
|
|
58
|
-
// \code
|
|
59
|
-
// auto item = s.pop();
|
|
60
|
-
// bool ok = false;
|
|
61
|
-
// Y_DEFER { if (!ok) { s.push(std::move(item)); } };
|
|
62
|
-
// ... try handle `item` ...
|
|
63
|
-
// ok = true;
|
|
64
|
-
// \endcode
|
|
65
|
-
#define Y_DEFER Y_SCOPE_EXIT(&)
|
|
@@ -1,406 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/generic/fwd.h>
|
|
4
|
-
#include <util/generic/vector.h>
|
|
5
|
-
#include <util/generic/map.h>
|
|
6
|
-
|
|
7
|
-
#include <cstddef>
|
|
8
|
-
#include <type_traits>
|
|
9
|
-
|
|
10
|
-
/*
|
|
11
|
-
|
|
12
|
-
A file with declarations of enumeration-related functions.
|
|
13
|
-
It doesn't contains definitions. To generate them you have to add
|
|
14
|
-
|
|
15
|
-
GENERATE_ENUM_SERIALIZATION_WITH_HEADER(your_header_with_your_enum.h)
|
|
16
|
-
or
|
|
17
|
-
GENERATE_ENUM_SERIALIZATION(your_header_with_your_enum.h)
|
|
18
|
-
|
|
19
|
-
in your ya.make
|
|
20
|
-
|
|
21
|
-
@see https://st.yandex-team.ru/IGNIETFERRO-333
|
|
22
|
-
@see https://wiki.yandex-team.ru/PoiskovajaPlatforma/Build/WritingCmakefiles/#generate-enum-with-header
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Returns number of distinct items in enum or enum class
|
|
28
|
-
*
|
|
29
|
-
* @tparam EnumT enum type
|
|
30
|
-
*/
|
|
31
|
-
template <typename EnumT>
|
|
32
|
-
Y_CONST_FUNCTION
|
|
33
|
-
constexpr size_t GetEnumItemsCount();
|
|
34
|
-
|
|
35
|
-
namespace NEnumSerializationRuntime {
|
|
36
|
-
namespace NDetail {
|
|
37
|
-
template <typename EEnum>
|
|
38
|
-
struct TSelectEnumRepresentationType;
|
|
39
|
-
|
|
40
|
-
template <typename TEnumType, typename TRepresentationType, class TStorage = TVector<TRepresentationType>>
|
|
41
|
-
class TMappedArrayView;
|
|
42
|
-
|
|
43
|
-
template <typename TEnumType, typename TRepresentationType, typename TValueType, class TStorage = TMap<TRepresentationType, TValueType>>
|
|
44
|
-
class TMappedDictView;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/// Class with behaviour similar to TMap<EnumT, TValueType>
|
|
48
|
-
template <typename EnumT, typename TValueType>
|
|
49
|
-
using TMappedDictView = NDetail::TMappedDictView<EnumT, typename NDetail::TSelectEnumRepresentationType<EnumT>::TType, TValueType>;
|
|
50
|
-
|
|
51
|
-
/// Class with behaviour similar to TVector<EnumT>
|
|
52
|
-
template <typename EnumT>
|
|
53
|
-
using TMappedArrayView = NDetail::TMappedArrayView<EnumT, typename NDetail::TSelectEnumRepresentationType<EnumT>::TType>;
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Returns names for items in enum or enum class
|
|
57
|
-
*
|
|
58
|
-
* @tparam EnumT enum type
|
|
59
|
-
*/
|
|
60
|
-
template <typename EnumT>
|
|
61
|
-
TMappedDictView<EnumT, TString> GetEnumNamesImpl();
|
|
62
|
-
/**
|
|
63
|
-
* Returns unique items in enum or enum class
|
|
64
|
-
*
|
|
65
|
-
* @tparam EnumT enum type
|
|
66
|
-
*/
|
|
67
|
-
template <typename EnumT>
|
|
68
|
-
::NEnumSerializationRuntime::TMappedArrayView<EnumT> GetEnumAllValuesImpl();
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Returns human-readable comma-separated list of names in enum or enum class
|
|
72
|
-
*
|
|
73
|
-
* @tparam EnumT enum type
|
|
74
|
-
*/
|
|
75
|
-
template <typename EnumT>
|
|
76
|
-
const TString& GetEnumAllNamesImpl();
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Returns C++ identifiers for items in enum or enum class
|
|
80
|
-
*
|
|
81
|
-
* @tparam EnumT enum type
|
|
82
|
-
*/
|
|
83
|
-
template <typename EnumT>
|
|
84
|
-
const TVector<TString>& GetEnumAllCppNamesImpl();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Returns names for items in enum or enum class
|
|
89
|
-
*
|
|
90
|
-
* @tparam EnumT enum type
|
|
91
|
-
*/
|
|
92
|
-
template <typename EnumT>
|
|
93
|
-
Y_CONST_FUNCTION
|
|
94
|
-
::NEnumSerializationRuntime::TMappedDictView<EnumT, TString> GetEnumNames() {
|
|
95
|
-
return ::NEnumSerializationRuntime::GetEnumNamesImpl<EnumT>();
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Returns unique items in enum or enum class
|
|
100
|
-
*
|
|
101
|
-
* @tparam EnumT enum type
|
|
102
|
-
*/
|
|
103
|
-
template <typename EnumT>
|
|
104
|
-
Y_CONST_FUNCTION
|
|
105
|
-
::NEnumSerializationRuntime::TMappedArrayView<EnumT> GetEnumAllValues() {
|
|
106
|
-
return ::NEnumSerializationRuntime::GetEnumAllValuesImpl<EnumT>();
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* Returns human-readable comma-separated list of names in enum or enum class
|
|
111
|
-
*
|
|
112
|
-
* @tparam EnumT enum type
|
|
113
|
-
*/
|
|
114
|
-
template <typename EnumT>
|
|
115
|
-
Y_CONST_FUNCTION
|
|
116
|
-
const TString& GetEnumAllNames() {
|
|
117
|
-
return ::NEnumSerializationRuntime::GetEnumAllNamesImpl<EnumT>();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Returns C++ identifiers for items in enum or enum class
|
|
122
|
-
*
|
|
123
|
-
* @tparam EnumT enum type
|
|
124
|
-
*/
|
|
125
|
-
template <typename EnumT>
|
|
126
|
-
Y_CONST_FUNCTION
|
|
127
|
-
const TVector<TString>& GetEnumAllCppNames() {
|
|
128
|
-
return ::NEnumSerializationRuntime::GetEnumAllCppNamesImpl<EnumT>();
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
namespace NEnumSerializationRuntime {
|
|
132
|
-
namespace NDetail {
|
|
133
|
-
/// Checks that the `From` type can be promoted up to the `To` type without losses
|
|
134
|
-
template <typename From, typename To>
|
|
135
|
-
struct TIsPromotable: public std::is_same<std::common_type_t<From, To>, To> {
|
|
136
|
-
static_assert(std::is_integral<From>::value, "`From` type has to be an integer");
|
|
137
|
-
static_assert(std::is_integral<To>::value, "`To` type has to be an integer");
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
/// Selects enum representation type. Works like std::underlying_type_t<>, but promotes small types up to `int`
|
|
141
|
-
template <typename EEnum>
|
|
142
|
-
struct TSelectEnumRepresentationType {
|
|
143
|
-
using TUnderlyingType = std::underlying_type_t<EEnum>;
|
|
144
|
-
using TIsSigned = std::is_signed<TUnderlyingType>;
|
|
145
|
-
using TRepresentationType = std::conditional_t<
|
|
146
|
-
TIsSigned::value,
|
|
147
|
-
std::conditional_t<
|
|
148
|
-
TIsPromotable<TUnderlyingType, int>::value,
|
|
149
|
-
int,
|
|
150
|
-
long long>,
|
|
151
|
-
std::conditional_t<
|
|
152
|
-
TIsPromotable<TUnderlyingType, unsigned>::value,
|
|
153
|
-
unsigned,
|
|
154
|
-
unsigned long long>>;
|
|
155
|
-
using TType = TRepresentationType;
|
|
156
|
-
static_assert(sizeof(TUnderlyingType) <= sizeof(TType), "size of `TType` is not smaller than the size of `TUnderlyingType`");
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
template <typename TEnumType, typename TRepresentationType>
|
|
160
|
-
class TMappedViewBase {
|
|
161
|
-
static_assert(sizeof(std::underlying_type_t<TEnumType>) <= sizeof(TRepresentationType), "Internal type is probably too small to represent all possible values");
|
|
162
|
-
|
|
163
|
-
public:
|
|
164
|
-
static constexpr TEnumType CastFromRepresentationType(const TRepresentationType key) noexcept {
|
|
165
|
-
return static_cast<TEnumType>(key);
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
static constexpr TRepresentationType CastToRepresentationType(const TEnumType key) noexcept {
|
|
169
|
-
return static_cast<TRepresentationType>(key);
|
|
170
|
-
}
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
/// Wrapper class with behaviour similar to TVector<EnumT>
|
|
174
|
-
///
|
|
175
|
-
/// @tparam TEnumType enum type at the external interface
|
|
176
|
-
/// @tparam TRepresentationType designated underlying type of enum
|
|
177
|
-
/// @tparam TStorage internal container type
|
|
178
|
-
template <typename TEnumType, typename TRepresentationType, class TStorage>
|
|
179
|
-
class TMappedArrayView: public TMappedViewBase<TEnumType, TRepresentationType> {
|
|
180
|
-
public:
|
|
181
|
-
using value_type = TEnumType;
|
|
182
|
-
|
|
183
|
-
public:
|
|
184
|
-
TMappedArrayView(const TStorage& a) noexcept
|
|
185
|
-
: Ref(a)
|
|
186
|
-
{
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
class TIterator {
|
|
190
|
-
public:
|
|
191
|
-
using TSlaveIteratorType = typename TStorage::const_iterator;
|
|
192
|
-
|
|
193
|
-
using difference_type = std::ptrdiff_t;
|
|
194
|
-
using value_type = TEnumType;
|
|
195
|
-
using pointer = const TEnumType*;
|
|
196
|
-
using reference = const TEnumType&;
|
|
197
|
-
using iterator_category = std::bidirectional_iterator_tag;
|
|
198
|
-
|
|
199
|
-
public:
|
|
200
|
-
TIterator(TSlaveIteratorType it)
|
|
201
|
-
: Slave(std::move(it))
|
|
202
|
-
{
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
bool operator==(const TIterator& it) const {
|
|
206
|
-
return Slave == it.Slave;
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
bool operator!=(const TIterator& it) const {
|
|
210
|
-
return !(*this == it);
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
TEnumType operator*() const {
|
|
214
|
-
return TMappedArrayView::CastFromRepresentationType(*Slave);
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
TIterator& operator++() {
|
|
218
|
-
++Slave;
|
|
219
|
-
return *this;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
TIterator& operator--() {
|
|
223
|
-
--Slave;
|
|
224
|
-
return *this;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
TIterator operator++(int) {
|
|
228
|
-
auto temp = Slave;
|
|
229
|
-
++Slave;
|
|
230
|
-
return temp;
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
TIterator operator--(int) {
|
|
234
|
-
auto temp = Slave;
|
|
235
|
-
--Slave;
|
|
236
|
-
return temp;
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
private:
|
|
240
|
-
TSlaveIteratorType Slave;
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
TIterator begin() const {
|
|
244
|
-
return Ref.begin();
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
TIterator end() const {
|
|
248
|
-
return Ref.end();
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
size_t size() const {
|
|
252
|
-
return Ref.size();
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
Y_PURE_FUNCTION
|
|
256
|
-
bool empty() const {
|
|
257
|
-
return Ref.empty();
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
TEnumType at(size_t index) const {
|
|
261
|
-
return this->CastFromRepresentationType(Ref.at(index));
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
TEnumType operator[](size_t index) const {
|
|
265
|
-
return this->CastFromRepresentationType(Ref[index]);
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// Allocate container and copy view's content into it
|
|
269
|
-
template <template <class...> class TContainer = TVector>
|
|
270
|
-
TContainer<TEnumType> Materialize() const {
|
|
271
|
-
return {begin(), end()};
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
private:
|
|
275
|
-
const TStorage& Ref;
|
|
276
|
-
};
|
|
277
|
-
|
|
278
|
-
/// Wrapper class with behaviour similar to TMap<EnumT, TValueType>
|
|
279
|
-
///
|
|
280
|
-
/// @tparam TEnumType enum type at the external interface
|
|
281
|
-
/// @tparam TRepresentationType designated underlying type of enum
|
|
282
|
-
/// @tparam TValueType mapped value
|
|
283
|
-
/// @tparam TStorage internal container type
|
|
284
|
-
template <typename TEnumType, typename TRepresentationType, typename TValueType, class TStorage>
|
|
285
|
-
class TMappedDictView: public TMappedViewBase<TEnumType, TRepresentationType> {
|
|
286
|
-
public:
|
|
287
|
-
using TMappedItemType = std::pair<const TEnumType, const TValueType&>;
|
|
288
|
-
|
|
289
|
-
class TDereferenceResultHolder {
|
|
290
|
-
public:
|
|
291
|
-
TDereferenceResultHolder(const TRepresentationType enumValue, const TValueType& payload) noexcept
|
|
292
|
-
: Data(TMappedDictView::CastFromRepresentationType(enumValue), payload)
|
|
293
|
-
{
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
const TMappedItemType* operator->() const noexcept {
|
|
297
|
-
return &Data;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
private:
|
|
301
|
-
TMappedItemType Data;
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
TMappedDictView(const TStorage& m) noexcept
|
|
305
|
-
: Ref(m)
|
|
306
|
-
{
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
class TIterator {
|
|
310
|
-
public:
|
|
311
|
-
using TSlaveIteratorType = typename TStorage::const_iterator;
|
|
312
|
-
|
|
313
|
-
using difference_type = std::ptrdiff_t;
|
|
314
|
-
using value_type = TMappedItemType;
|
|
315
|
-
using pointer = const TMappedItemType*;
|
|
316
|
-
using reference = const TMappedItemType&;
|
|
317
|
-
using iterator_category = std::bidirectional_iterator_tag;
|
|
318
|
-
|
|
319
|
-
public:
|
|
320
|
-
TIterator(TSlaveIteratorType it)
|
|
321
|
-
: Slave(std::move(it))
|
|
322
|
-
{
|
|
323
|
-
}
|
|
324
|
-
|
|
325
|
-
bool operator==(const TIterator& it) const {
|
|
326
|
-
return Slave == it.Slave;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
bool operator!=(const TIterator& it) const {
|
|
330
|
-
return !(*this == it);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
TDereferenceResultHolder operator->() const {
|
|
334
|
-
return {Slave->first, Slave->second};
|
|
335
|
-
}
|
|
336
|
-
|
|
337
|
-
TMappedItemType operator*() const {
|
|
338
|
-
return {TMappedDictView::CastFromRepresentationType(Slave->first), Slave->second};
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
TIterator& operator++() {
|
|
342
|
-
++Slave;
|
|
343
|
-
return *this;
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
TIterator& operator--() {
|
|
347
|
-
--Slave;
|
|
348
|
-
return *this;
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
TIterator operator++(int) {
|
|
352
|
-
auto temp = Slave;
|
|
353
|
-
++Slave;
|
|
354
|
-
return temp;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
TIterator operator--(int) {
|
|
358
|
-
auto temp = Slave;
|
|
359
|
-
--Slave;
|
|
360
|
-
return temp;
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
private:
|
|
364
|
-
TSlaveIteratorType Slave;
|
|
365
|
-
};
|
|
366
|
-
|
|
367
|
-
TIterator begin() const {
|
|
368
|
-
return Ref.begin();
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
TIterator end() const {
|
|
372
|
-
return Ref.end();
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
size_t size() const {
|
|
376
|
-
return Ref.size();
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
Y_PURE_FUNCTION
|
|
380
|
-
bool empty() const {
|
|
381
|
-
return Ref.empty();
|
|
382
|
-
}
|
|
383
|
-
|
|
384
|
-
bool contains(const TEnumType key) const {
|
|
385
|
-
return Ref.contains(this->CastToRepresentationType(key));
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
TIterator find(const TEnumType key) const {
|
|
389
|
-
return Ref.find(this->CastToRepresentationType(key));
|
|
390
|
-
}
|
|
391
|
-
|
|
392
|
-
const TValueType& at(const TEnumType key) const {
|
|
393
|
-
return Ref.at(this->CastToRepresentationType(key));
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
// Allocate container and copy view's content into it
|
|
397
|
-
template <template <class...> class TContainer = TMap>
|
|
398
|
-
TContainer<TEnumType, TValueType> Materialize() const {
|
|
399
|
-
return {begin(), end()};
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
private:
|
|
403
|
-
const TStorage& Ref;
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
}
|