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,212 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "bt_exception.h"
|
|
4
|
-
#include "strbuf.h"
|
|
5
|
-
#include "string.h"
|
|
6
|
-
#include "utility.h"
|
|
7
|
-
#include "va_args.h"
|
|
8
|
-
#include <utility>
|
|
9
|
-
|
|
10
|
-
#include <util/stream/tempbuf.h>
|
|
11
|
-
#include <util/system/compat.h>
|
|
12
|
-
#include <util/system/compiler.h>
|
|
13
|
-
#include <util/system/defaults.h>
|
|
14
|
-
#include <util/system/error.h>
|
|
15
|
-
#include <util/system/src_location.h>
|
|
16
|
-
|
|
17
|
-
#include <exception>
|
|
18
|
-
|
|
19
|
-
#include <cstdio>
|
|
20
|
-
|
|
21
|
-
class TBackTrace;
|
|
22
|
-
|
|
23
|
-
namespace NPrivateException {
|
|
24
|
-
class TTempBufCuttingWrapperOutput: public IOutputStream {
|
|
25
|
-
public:
|
|
26
|
-
TTempBufCuttingWrapperOutput(TTempBuf& tempbuf)
|
|
27
|
-
: TempBuf_(tempbuf)
|
|
28
|
-
{
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
void DoWrite(const void* data, size_t len) override {
|
|
32
|
-
TempBuf_.Append(data, Min(len, TempBuf_.Left()));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
private:
|
|
36
|
-
TTempBuf& TempBuf_;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
class yexception: public std::exception {
|
|
40
|
-
public:
|
|
41
|
-
yexception();
|
|
42
|
-
yexception(const yexception&) = default;
|
|
43
|
-
yexception(yexception&&) = default;
|
|
44
|
-
|
|
45
|
-
yexception& operator=(const yexception&) = default;
|
|
46
|
-
yexception& operator=(yexception&&) = default;
|
|
47
|
-
|
|
48
|
-
const char* what() const noexcept override;
|
|
49
|
-
virtual const TBackTrace* BackTrace() const noexcept;
|
|
50
|
-
|
|
51
|
-
template <class T>
|
|
52
|
-
inline void Append(const T& t) {
|
|
53
|
-
TTempBufCuttingWrapperOutput tempBuf(Buf_);
|
|
54
|
-
static_cast<IOutputStream&>(tempBuf) << t;
|
|
55
|
-
ZeroTerminate();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
TStringBuf AsStrBuf() const;
|
|
59
|
-
|
|
60
|
-
private:
|
|
61
|
-
void ZeroTerminate() noexcept;
|
|
62
|
-
|
|
63
|
-
private:
|
|
64
|
-
TTempBuf Buf_;
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
template <class E, class T>
|
|
68
|
-
static inline E&& operator<<(E&& e, const T& t) {
|
|
69
|
-
e.Append(t);
|
|
70
|
-
|
|
71
|
-
return std::forward<E>(e);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
template <class T>
|
|
75
|
-
static inline T&& operator+(const TSourceLocation& sl, T&& t) {
|
|
76
|
-
return std::forward<T>(t << sl << TStringBuf(": "));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
class yexception: public NPrivateException::yexception {
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
Y_DECLARE_OUT_SPEC(inline, yexception, stream, value) {
|
|
84
|
-
stream << value.AsStrBuf();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
class TSystemError: public yexception {
|
|
88
|
-
public:
|
|
89
|
-
TSystemError(int status)
|
|
90
|
-
: Status_(status)
|
|
91
|
-
{
|
|
92
|
-
Init();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
TSystemError()
|
|
96
|
-
: TSystemError(LastSystemError())
|
|
97
|
-
{}
|
|
98
|
-
|
|
99
|
-
int Status() const noexcept {
|
|
100
|
-
return Status_;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
private:
|
|
104
|
-
void Init();
|
|
105
|
-
|
|
106
|
-
private:
|
|
107
|
-
int Status_;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
class TIoException: public TSystemError {
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
class TIoSystemError: public TIoException {
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
class TFileError: public TIoSystemError {
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* TBadArgumentException should be thrown when an argument supplied to some function (or constructor)
|
|
121
|
-
* is invalid or incorrect.
|
|
122
|
-
*
|
|
123
|
-
* \note
|
|
124
|
-
* A special case when such argument is given to a function which performs type casting
|
|
125
|
-
* (e.g. integer from string) is covered by the TBadCastException class which is derived from
|
|
126
|
-
* TBadArgumentException.
|
|
127
|
-
*/
|
|
128
|
-
struct TBadArgumentException: public virtual yexception {
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* TBadCastException should be thrown to indicate the failure of some type casting procedure
|
|
133
|
-
* (e.g. reading an integer parameter from string).
|
|
134
|
-
*/
|
|
135
|
-
struct TBadCastException: public virtual TBadArgumentException {
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
#define ythrow throw __LOCATION__ +
|
|
139
|
-
|
|
140
|
-
namespace NPrivate {
|
|
141
|
-
/// Encapsulates data for one of the most common case in which
|
|
142
|
-
/// exception message contists of single constant string
|
|
143
|
-
struct TSimpleExceptionMessage {
|
|
144
|
-
TSourceLocation Location;
|
|
145
|
-
TStringBuf Message;
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
[[noreturn]] void ThrowYException(const TSimpleExceptionMessage& sm);
|
|
149
|
-
[[noreturn]] void ThrowYExceptionWithBacktrace(const TSimpleExceptionMessage& sm);
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
void fputs(const std::exception& e, FILE* f = stderr);
|
|
153
|
-
|
|
154
|
-
TString CurrentExceptionMessage();
|
|
155
|
-
bool UncaughtException() noexcept;
|
|
156
|
-
|
|
157
|
-
TString FormatExc(const std::exception& exception);
|
|
158
|
-
|
|
159
|
-
#define Y_ENSURE_EX(CONDITION, THROW_EXPRESSION) \
|
|
160
|
-
do { \
|
|
161
|
-
if (Y_UNLIKELY(!(CONDITION))) { \
|
|
162
|
-
ythrow THROW_EXPRESSION; \
|
|
163
|
-
} \
|
|
164
|
-
} while (false)
|
|
165
|
-
|
|
166
|
-
/// @def Y_ENSURE_SIMPLE
|
|
167
|
-
/// This macro works like the Y_ENSURE, but requires the second argument to be a constant string view.
|
|
168
|
-
/// Should not be used directly.
|
|
169
|
-
#define Y_ENSURE_SIMPLE(CONDITION, MESSAGE, THROW_FUNCTION) \
|
|
170
|
-
do { \
|
|
171
|
-
if (Y_UNLIKELY(!(CONDITION))) { \
|
|
172
|
-
/* use variable to guarantee evaluation at compile time */ \
|
|
173
|
-
static constexpr const ::NPrivate::TSimpleExceptionMessage __SIMPLE_EXCEPTION_MESSAGE{__LOCATION__, (MESSAGE)}; \
|
|
174
|
-
THROW_FUNCTION(__SIMPLE_EXCEPTION_MESSAGE); \
|
|
175
|
-
} \
|
|
176
|
-
} while (false)
|
|
177
|
-
|
|
178
|
-
#define Y_ENSURE_IMPL_1(CONDITION) Y_ENSURE_SIMPLE(CONDITION, ::TStringBuf("Condition violated: `" Y_STRINGIZE(CONDITION) "'"), ::NPrivate::ThrowYException)
|
|
179
|
-
#define Y_ENSURE_IMPL_2(CONDITION, MESSAGE) Y_ENSURE_EX(CONDITION, yexception() << MESSAGE)
|
|
180
|
-
|
|
181
|
-
#define Y_ENSURE_BT_IMPL_1(CONDITION) Y_ENSURE_SIMPLE(CONDITION, ::TStringBuf("Condition violated: `" Y_STRINGIZE(CONDITION) "'"), ::NPrivate::ThrowYExceptionWithBacktrace)
|
|
182
|
-
#define Y_ENSURE_BT_IMPL_2(CONDITION, MESSAGE) Y_ENSURE_EX(CONDITION, TWithBackTrace<yexception>() << MESSAGE)
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* @def Y_ENSURE
|
|
186
|
-
*
|
|
187
|
-
* This macro is inteded to use as a shortcut for `if () { throw }`.
|
|
188
|
-
*
|
|
189
|
-
* @code
|
|
190
|
-
* void DoSomethingLovely(const int x, const int y) {
|
|
191
|
-
* Y_ENSURE(x > y, "`x` must be greater than `y`");
|
|
192
|
-
* Y_ENSURE(x > y); // if you are too lazy
|
|
193
|
-
* // actually doing something nice here
|
|
194
|
-
* }
|
|
195
|
-
* @endcode
|
|
196
|
-
*/
|
|
197
|
-
#define Y_ENSURE(...) Y_PASS_VA_ARGS(Y_MACRO_IMPL_DISPATCHER_2(__VA_ARGS__, Y_ENSURE_IMPL_2, Y_ENSURE_IMPL_1)(__VA_ARGS__))
|
|
198
|
-
|
|
199
|
-
/**
|
|
200
|
-
* @def Y_ENSURE_BT
|
|
201
|
-
*
|
|
202
|
-
* This macro is inteded to use as a shortcut for `if () { throw TWithBackTrace<yexception>() << "message"; }`.
|
|
203
|
-
*
|
|
204
|
-
* @code
|
|
205
|
-
* void DoSomethingLovely(const int x, const int y) {
|
|
206
|
-
* Y_ENSURE_BT(x > y, "`x` must be greater than `y`");
|
|
207
|
-
* Y_ENSURE_BT(x > y); // if you are too lazy
|
|
208
|
-
* // actually doing something nice here
|
|
209
|
-
* }
|
|
210
|
-
* @endcode
|
|
211
|
-
*/
|
|
212
|
-
#define Y_ENSURE_BT(...) Y_PASS_VA_ARGS(Y_MACRO_IMPL_DISPATCHER_2(__VA_ARGS__, Y_ENSURE_BT_IMPL_2, Y_ENSURE_BT_IMPL_1)(__VA_ARGS__))
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <limits>
|
|
4
|
-
|
|
5
|
-
#if defined(max) || defined(min)
|
|
6
|
-
#error "stop defining 'min' and 'max' macros, evil people"
|
|
7
|
-
#endif
|
|
8
|
-
|
|
9
|
-
template <class T>
|
|
10
|
-
static constexpr T Max() noexcept {
|
|
11
|
-
return std::numeric_limits<T>::max();
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
template <class T>
|
|
15
|
-
static constexpr T Min() noexcept {
|
|
16
|
-
return std::numeric_limits<T>::min();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
namespace NPrivate {
|
|
20
|
-
struct TMax {
|
|
21
|
-
template <class T>
|
|
22
|
-
constexpr operator T() const {
|
|
23
|
-
return Max<T>();
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
struct TMin {
|
|
28
|
-
template <class T>
|
|
29
|
-
constexpr operator T() const {
|
|
30
|
-
return Min<T>();
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
static constexpr ::NPrivate::TMax Max() noexcept {
|
|
36
|
-
return {};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
static constexpr ::NPrivate::TMin Min() noexcept {
|
|
40
|
-
return {};
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
namespace NPrivate {
|
|
44
|
-
template <unsigned long long N>
|
|
45
|
-
static constexpr double MaxFloorValue() {
|
|
46
|
-
return N;
|
|
47
|
-
}
|
|
48
|
-
template <unsigned long long N>
|
|
49
|
-
static constexpr double MaxCeilValue() {
|
|
50
|
-
return N;
|
|
51
|
-
}
|
|
52
|
-
template <>
|
|
53
|
-
constexpr double MaxFloorValue<0x7FFF'FFFF'FFFF'FFFFull>() {
|
|
54
|
-
return 9223372036854774784.0; // 0x7FFFFFFFFFFFFC00p0
|
|
55
|
-
}
|
|
56
|
-
template <>
|
|
57
|
-
constexpr double MaxCeilValue<0x7FFF'FFFF'FFFF'FFFFull>() {
|
|
58
|
-
return 9223372036854775808.0; // 0x8000000000000000p0
|
|
59
|
-
}
|
|
60
|
-
template <>
|
|
61
|
-
constexpr double MaxFloorValue<0xFFFF'FFFF'FFFF'FFFFull>() {
|
|
62
|
-
return 18446744073709549568.0; // 0xFFFFFFFFFFFFF800p0
|
|
63
|
-
}
|
|
64
|
-
template <>
|
|
65
|
-
constexpr double MaxCeilValue<0xFFFF'FFFF'FFFF'FFFFull>() {
|
|
66
|
-
return 18446744073709551616.0; // 0x10000000000000000p0
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
// MaxFloor<T> is the greatest double within the range of T.
|
|
71
|
-
//
|
|
72
|
-
// 1. If Max<T> is an exact double, MaxFloor<T> = Max<T> = MaxCeil<T>.
|
|
73
|
-
// In this case some doubles above MaxFloor<T> cast to T may round
|
|
74
|
-
// to Max<T> depending on the rounding mode.
|
|
75
|
-
//
|
|
76
|
-
// 2. Otherwise Max<T> is between MaxFloor<T> and MaxCeil<T>, and
|
|
77
|
-
// MaxFloor<T> is the largest double that does not overflow T.
|
|
78
|
-
template <class T>
|
|
79
|
-
static constexpr double MaxFloor() noexcept {
|
|
80
|
-
return ::NPrivate::MaxFloorValue<Max<T>()>();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// MaxCeil<T> is the smallest double not lesser than Max<T>.
|
|
84
|
-
//
|
|
85
|
-
// 1. If Max<T> is an exact double, MaxCeil<T> = Max<T> = MaxFloor<T>.
|
|
86
|
-
//
|
|
87
|
-
// 2. Otherwise Max<T> is between MaxFloor<T> and MaxCeil<T>, and
|
|
88
|
-
// MaxCeil<T> is the smallest double that overflows T.
|
|
89
|
-
template <class T>
|
|
90
|
-
static constexpr double MaxCeil() noexcept {
|
|
91
|
-
return ::NPrivate::MaxCeilValue<Max<T>()>();
|
|
92
|
-
}
|
package/inc/util/generic/ymath.h
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/system/yassert.h>
|
|
4
|
-
#include <util/system/defaults.h>
|
|
5
|
-
|
|
6
|
-
#include <cmath>
|
|
7
|
-
#include <cfloat>
|
|
8
|
-
#include <cstdlib>
|
|
9
|
-
|
|
10
|
-
#include "typetraits.h"
|
|
11
|
-
#include "utility.h"
|
|
12
|
-
|
|
13
|
-
constexpr double PI = M_PI;
|
|
14
|
-
constexpr double M_LOG2_10 = 3.32192809488736234787; // log2(10)
|
|
15
|
-
constexpr double M_LN2_INV = M_LOG2E; // 1 / ln(2) == log2(e)
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* \returns Absolute value of the provided argument.
|
|
19
|
-
*/
|
|
20
|
-
template <class T>
|
|
21
|
-
constexpr T Abs(T value) {
|
|
22
|
-
return std::abs(value);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @returns Base 2 logarithm of the provided double
|
|
27
|
-
* precision floating point value.
|
|
28
|
-
*/
|
|
29
|
-
inline double Log2(double value) {
|
|
30
|
-
return log(value) * M_LN2_INV;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* @returns Base 2 logarithm of the provided
|
|
35
|
-
* floating point value.
|
|
36
|
-
*/
|
|
37
|
-
inline float Log2(float value) {
|
|
38
|
-
return logf(value) * static_cast<float>(M_LN2_INV);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* @returns Base 2 logarithm of the provided integral value.
|
|
43
|
-
*/
|
|
44
|
-
template <class T>
|
|
45
|
-
inline std::enable_if_t<std::is_integral<T>::value, double>
|
|
46
|
-
Log2(T value) {
|
|
47
|
-
return Log2(static_cast<double>(value));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** Returns 2^x */
|
|
51
|
-
double Exp2(double);
|
|
52
|
-
float Exp2f(float);
|
|
53
|
-
|
|
54
|
-
template <class T>
|
|
55
|
-
static constexpr T Sqr(const T t) noexcept {
|
|
56
|
-
return t * t;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
inline double Sigmoid(double x) {
|
|
60
|
-
return 1.0 / (1.0 + std::exp(-x));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
inline float Sigmoid(float x) {
|
|
64
|
-
return 1.0f / (1.0f + std::exp(-x));
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
static inline bool IsFinite(double f) {
|
|
68
|
-
#if defined(isfinite)
|
|
69
|
-
return isfinite(f);
|
|
70
|
-
#elif defined(_win_)
|
|
71
|
-
return _finite(f) != 0;
|
|
72
|
-
#elif defined(_darwin_)
|
|
73
|
-
return isfinite(f);
|
|
74
|
-
#elif defined(__GNUC__)
|
|
75
|
-
return __builtin_isfinite(f);
|
|
76
|
-
#elif defined(_STLP_VENDOR_STD)
|
|
77
|
-
return _STLP_VENDOR_STD::isfinite(f);
|
|
78
|
-
#else
|
|
79
|
-
return std::isfinite(f);
|
|
80
|
-
#endif
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
static inline bool IsNan(double f) {
|
|
84
|
-
#if defined(_win_)
|
|
85
|
-
return _isnan(f) != 0;
|
|
86
|
-
#else
|
|
87
|
-
return std::isnan(f);
|
|
88
|
-
#endif
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
inline bool IsValidFloat(double f) {
|
|
92
|
-
return IsFinite(f) && !IsNan(f);
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
#ifdef _MSC_VER
|
|
96
|
-
double Erf(double x);
|
|
97
|
-
#else
|
|
98
|
-
inline double Erf(double x) {
|
|
99
|
-
return erf(x);
|
|
100
|
-
}
|
|
101
|
-
#endif
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* @returns Natural logarithm of the absolute value
|
|
105
|
-
* of the gamma function of provided argument.
|
|
106
|
-
*/
|
|
107
|
-
inline double LogGamma(double x) noexcept {
|
|
108
|
-
#if defined(_glibc_)
|
|
109
|
-
int sign;
|
|
110
|
-
|
|
111
|
-
(void)sign;
|
|
112
|
-
|
|
113
|
-
return lgamma_r(x, &sign);
|
|
114
|
-
#elif defined(__GNUC__)
|
|
115
|
-
return __builtin_lgamma(x);
|
|
116
|
-
#elif defined(_unix_)
|
|
117
|
-
return lgamma(x);
|
|
118
|
-
#else
|
|
119
|
-
extern double LogGammaImpl(double);
|
|
120
|
-
return LogGammaImpl(x);
|
|
121
|
-
#endif
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
/**
|
|
125
|
-
* @returns x^n for integer n, n >= 0.
|
|
126
|
-
*/
|
|
127
|
-
template <class T, class Int>
|
|
128
|
-
T Power(T x, Int n) {
|
|
129
|
-
static_assert(std::is_integral<Int>::value, "only integer powers are supported");
|
|
130
|
-
Y_ASSERT(n >= 0);
|
|
131
|
-
if (n == 0) {
|
|
132
|
-
return T(1);
|
|
133
|
-
}
|
|
134
|
-
while ((n & 1) == 0) {
|
|
135
|
-
x = x * x;
|
|
136
|
-
n >>= 1;
|
|
137
|
-
}
|
|
138
|
-
T result = x;
|
|
139
|
-
n >>= 1;
|
|
140
|
-
while (n > 0) {
|
|
141
|
-
x = x * x;
|
|
142
|
-
if (n & 1) {
|
|
143
|
-
result = result * x;
|
|
144
|
-
}
|
|
145
|
-
n >>= 1;
|
|
146
|
-
}
|
|
147
|
-
return result;
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Compares two floating point values and returns true if they are considered equal.
|
|
152
|
-
* The two numbers are compared in a relative way, where the exactness is stronger
|
|
153
|
-
* the smaller the numbers are.
|
|
154
|
-
*
|
|
155
|
-
* Note that comparing values where either one is 0.0 will not work.
|
|
156
|
-
* The solution to this is to compare against values greater than or equal to 1.0.
|
|
157
|
-
*
|
|
158
|
-
* @code
|
|
159
|
-
* // Instead of comparing with 0.0
|
|
160
|
-
* FuzzyEquals(0.0, 1.0e-200); // This will return false
|
|
161
|
-
* // Compare adding 1 to both values will fix the problem
|
|
162
|
-
* FuzzyEquals(1 + 0.0, 1 + 1.0e-200); // This will return true
|
|
163
|
-
* @endcode
|
|
164
|
-
*/
|
|
165
|
-
inline bool FuzzyEquals(double p1, double p2, double eps = 1.0e-13) {
|
|
166
|
-
return (Abs(p1 - p2) <= eps * Min(Abs(p1), Abs(p2)));
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
/**
|
|
170
|
-
* @see FuzzyEquals(double, double, double)
|
|
171
|
-
*/
|
|
172
|
-
inline bool FuzzyEquals(float p1, float p2, float eps = 1.0e-6) {
|
|
173
|
-
return (Abs(p1 - p2) <= eps * Min(Abs(p1), Abs(p2)));
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
namespace NUtilMathPrivate {
|
|
177
|
-
template <bool IsSigned>
|
|
178
|
-
struct TCeilDivImpl {};
|
|
179
|
-
|
|
180
|
-
template <>
|
|
181
|
-
struct TCeilDivImpl<true> {
|
|
182
|
-
template <class T>
|
|
183
|
-
static inline T Do(T x, T y) noexcept {
|
|
184
|
-
return x / y + (((x < 0) ^ (y > 0)) && (x % y));
|
|
185
|
-
}
|
|
186
|
-
};
|
|
187
|
-
|
|
188
|
-
template <>
|
|
189
|
-
struct TCeilDivImpl<false> {
|
|
190
|
-
template <class T>
|
|
191
|
-
static inline T Do(T x, T y) noexcept {
|
|
192
|
-
auto quot = x / y;
|
|
193
|
-
return (x % y) ? (quot + 1) : quot;
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* @returns Equivalent to ceil((double) x / (double) y) but using only integer arithmetic operations
|
|
200
|
-
*/
|
|
201
|
-
template <class T>
|
|
202
|
-
inline T CeilDiv(T x, T y) noexcept {
|
|
203
|
-
static_assert(std::is_integral<T>::value, "Integral type required.");
|
|
204
|
-
Y_ASSERT(y != 0);
|
|
205
|
-
return ::NUtilMathPrivate::TCeilDivImpl<std::is_signed<T>::value>::Do(x, y);
|
|
206
|
-
}
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/system/align.h>
|
|
4
|
-
#include <util/system/defaults.h>
|
|
5
|
-
|
|
6
|
-
#include <new>
|
|
7
|
-
|
|
8
|
-
namespace NPrivate {
|
|
9
|
-
class TAdditionalStorageInfo {
|
|
10
|
-
public:
|
|
11
|
-
constexpr TAdditionalStorageInfo(size_t length) noexcept
|
|
12
|
-
: Length_(length)
|
|
13
|
-
{
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
constexpr size_t Length() const noexcept {
|
|
17
|
-
return Length_;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
private:
|
|
21
|
-
size_t Length_;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
template <class T>
|
|
26
|
-
class alignas(::NPrivate::TAdditionalStorageInfo) TAdditionalStorage {
|
|
27
|
-
using TInfo = ::NPrivate::TAdditionalStorageInfo;
|
|
28
|
-
|
|
29
|
-
public:
|
|
30
|
-
inline TAdditionalStorage() noexcept = default;
|
|
31
|
-
|
|
32
|
-
inline ~TAdditionalStorage() = default;
|
|
33
|
-
|
|
34
|
-
inline void* operator new(size_t len1, size_t len2) {
|
|
35
|
-
static_assert(alignof(T) >= alignof(TInfo));
|
|
36
|
-
Y_ASSERT(len1 == sizeof(T));
|
|
37
|
-
void* data = ::operator new(CombinedSizeOfInstanceWithTInfo() + len2);
|
|
38
|
-
void* info = InfoPtr(static_cast<T*>(data));
|
|
39
|
-
Y_UNUSED(new (info) TInfo(len2));
|
|
40
|
-
|
|
41
|
-
return data;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
inline void operator delete(void* ptr) noexcept {
|
|
45
|
-
DoDelete(ptr);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
inline void operator delete(void* ptr, size_t) noexcept {
|
|
49
|
-
DoDelete(ptr);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
inline void operator delete(void* ptr, size_t, size_t) noexcept {
|
|
53
|
-
/*
|
|
54
|
-
* this delete operator can be called automagically by compiler
|
|
55
|
-
*/
|
|
56
|
-
|
|
57
|
-
DoDelete(ptr);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
inline void* AdditionalData() const noexcept {
|
|
61
|
-
return (char*)(static_cast<const T*>(this)) + CombinedSizeOfInstanceWithTInfo();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
static inline T* ObjectFromData(void* data) noexcept {
|
|
65
|
-
return reinterpret_cast<T*>(static_cast<char*>(data) - CombinedSizeOfInstanceWithTInfo());
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
inline size_t AdditionalDataLength() const noexcept {
|
|
69
|
-
return InfoPtr(static_cast<const T*>(this))->Length();
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private:
|
|
73
|
-
static inline void DoDelete(void* ptr) noexcept {
|
|
74
|
-
TInfo* info = InfoPtr(static_cast<T*>(ptr));
|
|
75
|
-
info->~TInfo();
|
|
76
|
-
::operator delete(ptr);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
static constexpr size_t CombinedSizeOfInstanceWithTInfo() noexcept {
|
|
80
|
-
return AlignUp(sizeof(T), alignof(TInfo)) + sizeof(TInfo);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
static constexpr TInfo* InfoPtr(T* instance) noexcept {
|
|
84
|
-
return const_cast<TInfo*>(InfoPtr(static_cast<const T*>(instance)));
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
static constexpr const TInfo* InfoPtr(const T* instance) noexcept {
|
|
88
|
-
return reinterpret_cast<const TInfo*>(reinterpret_cast<const char*>(instance) + CombinedSizeOfInstanceWithTInfo() - sizeof(TInfo));
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
private:
|
|
92
|
-
void* operator new(size_t) = delete;
|
|
93
|
-
};
|
package/inc/util/memory/alloc.h
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <memory>
|
|
4
|
-
|
|
5
|
-
template <class Allocator, class T>
|
|
6
|
-
using TReboundAllocator = typename std::allocator_traits<Allocator>::template rebind_alloc<T>;
|
|
7
|
-
|
|
8
|
-
class IAllocator {
|
|
9
|
-
public:
|
|
10
|
-
struct TBlock {
|
|
11
|
-
void* Data;
|
|
12
|
-
size_t Len;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
virtual ~IAllocator() = default;
|
|
16
|
-
|
|
17
|
-
virtual TBlock Allocate(size_t len) = 0;
|
|
18
|
-
virtual void Release(const TBlock& block) = 0;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
class TDefaultAllocator: public IAllocator {
|
|
22
|
-
public:
|
|
23
|
-
TBlock Allocate(size_t len) override;
|
|
24
|
-
void Release(const TBlock& block) override;
|
|
25
|
-
|
|
26
|
-
static IAllocator* Instance() noexcept;
|
|
27
|
-
};
|