catboost 1.25.1 → 1.27.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.
Files changed (290) hide show
  1. package/DEPLOYMENT.md +22 -15
  2. package/README.md +43 -27
  3. package/binding.gyp +5 -7
  4. package/build_scripts/bootstrap.js +2 -1
  5. package/build_scripts/out/build.js +46 -68
  6. package/build_scripts/out/build_model.js +1 -1
  7. package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
  8. package/build_scripts/out/ci.js +5 -5
  9. package/build_scripts/out/common.js +1 -1
  10. package/build_scripts/out/config.js +32 -18
  11. package/build_scripts/out/install.js +5 -3
  12. package/build_scripts/out/package_prepublish.js +1 -1
  13. package/build_scripts/out/packaging.js +1 -19
  14. package/build_scripts/out/run_tests.js +1 -1
  15. package/build_scripts/out/test.js +8 -3
  16. package/config.json +18 -11
  17. package/inc/catboost/libs/model_interface/c_api.h +367 -5
  18. package/lib/catboost.d.ts +65 -21
  19. package/package.json +4 -4
  20. package/src/api_helpers.cpp +100 -24
  21. package/src/api_helpers.h +8 -7
  22. package/src/api_module.cpp +1 -2
  23. package/src/model.cpp +483 -83
  24. package/src/model.h +24 -9
  25. package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
  26. package/inc/util/charset/recode_result.h +0 -9
  27. package/inc/util/charset/unicode_table.h +0 -123
  28. package/inc/util/charset/unidata.h +0 -421
  29. package/inc/util/charset/utf8.h +0 -384
  30. package/inc/util/charset/wide.h +0 -843
  31. package/inc/util/charset/wide_specific.h +0 -22
  32. package/inc/util/datetime/base.h +0 -669
  33. package/inc/util/datetime/constants.h +0 -7
  34. package/inc/util/datetime/cputimer.h +0 -124
  35. package/inc/util/datetime/parser.h +0 -292
  36. package/inc/util/datetime/systime.h +0 -47
  37. package/inc/util/datetime/uptime.h +0 -8
  38. package/inc/util/digest/city.h +0 -88
  39. package/inc/util/digest/fnv.h +0 -73
  40. package/inc/util/digest/multi.h +0 -14
  41. package/inc/util/digest/murmur.h +0 -57
  42. package/inc/util/digest/numeric.h +0 -86
  43. package/inc/util/digest/sequence.h +0 -48
  44. package/inc/util/draft/date.h +0 -129
  45. package/inc/util/draft/datetime.h +0 -184
  46. package/inc/util/draft/enum.h +0 -136
  47. package/inc/util/draft/holder_vector.h +0 -102
  48. package/inc/util/draft/ip.h +0 -131
  49. package/inc/util/draft/matrix.h +0 -108
  50. package/inc/util/draft/memory.h +0 -40
  51. package/inc/util/folder/dirent_win.h +0 -46
  52. package/inc/util/folder/dirut.h +0 -121
  53. package/inc/util/folder/filelist.h +0 -81
  54. package/inc/util/folder/fts.h +0 -108
  55. package/inc/util/folder/iterator.h +0 -109
  56. package/inc/util/folder/lstat_win.h +0 -20
  57. package/inc/util/folder/path.h +0 -225
  58. package/inc/util/folder/pathsplit.h +0 -113
  59. package/inc/util/folder/tempdir.h +0 -42
  60. package/inc/util/generic/adaptor.h +0 -134
  61. package/inc/util/generic/algorithm.h +0 -765
  62. package/inc/util/generic/array_ref.h +0 -282
  63. package/inc/util/generic/array_size.h +0 -24
  64. package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
  65. package/inc/util/generic/bitmap.h +0 -1115
  66. package/inc/util/generic/bitops.h +0 -459
  67. package/inc/util/generic/bt_exception.h +0 -24
  68. package/inc/util/generic/buffer.h +0 -232
  69. package/inc/util/generic/cast.h +0 -176
  70. package/inc/util/generic/deque.h +0 -24
  71. package/inc/util/generic/explicit_type.h +0 -42
  72. package/inc/util/generic/fastqueue.h +0 -55
  73. package/inc/util/generic/flags.h +0 -244
  74. package/inc/util/generic/function.h +0 -103
  75. package/inc/util/generic/fwd.h +0 -171
  76. package/inc/util/generic/guid.h +0 -61
  77. package/inc/util/generic/hash.h +0 -2032
  78. package/inc/util/generic/hash_primes.h +0 -140
  79. package/inc/util/generic/hash_set.h +0 -490
  80. package/inc/util/generic/hide_ptr.h +0 -3
  81. package/inc/util/generic/intrlist.h +0 -876
  82. package/inc/util/generic/is_in.h +0 -53
  83. package/inc/util/generic/iterator.h +0 -137
  84. package/inc/util/generic/iterator_range.h +0 -105
  85. package/inc/util/generic/lazy_value.h +0 -66
  86. package/inc/util/generic/list.h +0 -22
  87. package/inc/util/generic/map.h +0 -44
  88. package/inc/util/generic/mapfindptr.h +0 -60
  89. package/inc/util/generic/maybe.h +0 -713
  90. package/inc/util/generic/maybe_traits.h +0 -164
  91. package/inc/util/generic/mem_copy.h +0 -55
  92. package/inc/util/generic/noncopyable.h +0 -38
  93. package/inc/util/generic/object_counter.h +0 -53
  94. package/inc/util/generic/ptr.h +0 -1113
  95. package/inc/util/generic/queue.h +0 -57
  96. package/inc/util/generic/refcount.h +0 -162
  97. package/inc/util/generic/reserve.h +0 -11
  98. package/inc/util/generic/scope.h +0 -65
  99. package/inc/util/generic/serialized_enum.h +0 -406
  100. package/inc/util/generic/set.h +0 -42
  101. package/inc/util/generic/singleton.h +0 -136
  102. package/inc/util/generic/size_literals.h +0 -65
  103. package/inc/util/generic/stack.h +0 -18
  104. package/inc/util/generic/store_policy.h +0 -120
  105. package/inc/util/generic/strbase.h +0 -612
  106. package/inc/util/generic/strbuf.h +0 -552
  107. package/inc/util/generic/strfcpy.h +0 -17
  108. package/inc/util/generic/string.h +0 -1572
  109. package/inc/util/generic/string_hash.h +0 -21
  110. package/inc/util/generic/string_ut.h +0 -1175
  111. package/inc/util/generic/type_name.h +0 -34
  112. package/inc/util/generic/typelist.h +0 -114
  113. package/inc/util/generic/typetraits.h +0 -325
  114. package/inc/util/generic/utility.h +0 -132
  115. package/inc/util/generic/va_args.h +0 -400
  116. package/inc/util/generic/variant.h +0 -631
  117. package/inc/util/generic/variant_traits.h +0 -171
  118. package/inc/util/generic/vector.h +0 -119
  119. package/inc/util/generic/xrange.h +0 -258
  120. package/inc/util/generic/yexception.h +0 -212
  121. package/inc/util/generic/yexception_ut.h +0 -14
  122. package/inc/util/generic/ylimits.h +0 -92
  123. package/inc/util/generic/ymath.h +0 -206
  124. package/inc/util/memory/addstorage.h +0 -93
  125. package/inc/util/memory/alloc.h +0 -27
  126. package/inc/util/memory/blob.h +0 -296
  127. package/inc/util/memory/mmapalloc.h +0 -8
  128. package/inc/util/memory/pool.h +0 -432
  129. package/inc/util/memory/segmented_string_pool.h +0 -194
  130. package/inc/util/memory/segpool_alloc.h +0 -118
  131. package/inc/util/memory/smallobj.h +0 -141
  132. package/inc/util/memory/tempbuf.h +0 -111
  133. package/inc/util/network/address.h +0 -136
  134. package/inc/util/network/endpoint.h +0 -61
  135. package/inc/util/network/hostip.h +0 -16
  136. package/inc/util/network/init.h +0 -60
  137. package/inc/util/network/interface.h +0 -17
  138. package/inc/util/network/iovec.h +0 -65
  139. package/inc/util/network/ip.h +0 -116
  140. package/inc/util/network/nonblock.h +0 -8
  141. package/inc/util/network/pair.h +0 -9
  142. package/inc/util/network/poller.h +0 -58
  143. package/inc/util/network/pollerimpl.h +0 -707
  144. package/inc/util/network/sock.h +0 -608
  145. package/inc/util/network/socket.h +0 -421
  146. package/inc/util/random/common_ops.h +0 -130
  147. package/inc/util/random/easy.h +0 -47
  148. package/inc/util/random/entropy.h +0 -21
  149. package/inc/util/random/fast.h +0 -101
  150. package/inc/util/random/init_atfork.h +0 -3
  151. package/inc/util/random/lcg_engine.h +0 -66
  152. package/inc/util/random/mersenne.h +0 -46
  153. package/inc/util/random/mersenne32.h +0 -50
  154. package/inc/util/random/mersenne64.h +0 -50
  155. package/inc/util/random/normal.h +0 -38
  156. package/inc/util/random/random.h +0 -30
  157. package/inc/util/random/shuffle.h +0 -39
  158. package/inc/util/str_stl.h +0 -266
  159. package/inc/util/stream/aligned.h +0 -99
  160. package/inc/util/stream/buffer.h +0 -119
  161. package/inc/util/stream/buffered.h +0 -225
  162. package/inc/util/stream/debug.h +0 -53
  163. package/inc/util/stream/direct_io.h +0 -43
  164. package/inc/util/stream/file.h +0 -108
  165. package/inc/util/stream/format.h +0 -444
  166. package/inc/util/stream/fwd.h +0 -100
  167. package/inc/util/stream/hex.h +0 -8
  168. package/inc/util/stream/holder.h +0 -44
  169. package/inc/util/stream/input.h +0 -273
  170. package/inc/util/stream/labeled.h +0 -19
  171. package/inc/util/stream/length.h +0 -100
  172. package/inc/util/stream/mem.h +0 -255
  173. package/inc/util/stream/multi.h +0 -32
  174. package/inc/util/stream/null.h +0 -61
  175. package/inc/util/stream/output.h +0 -304
  176. package/inc/util/stream/pipe.h +0 -112
  177. package/inc/util/stream/printf.h +0 -25
  178. package/inc/util/stream/str.h +0 -207
  179. package/inc/util/stream/tee.h +0 -28
  180. package/inc/util/stream/tempbuf.h +0 -21
  181. package/inc/util/stream/tokenizer.h +0 -214
  182. package/inc/util/stream/trace.h +0 -60
  183. package/inc/util/stream/walk.h +0 -35
  184. package/inc/util/stream/zerocopy.h +0 -91
  185. package/inc/util/stream/zerocopy_output.h +0 -57
  186. package/inc/util/stream/zlib.h +0 -173
  187. package/inc/util/string/ascii.h +0 -236
  188. package/inc/util/string/builder.h +0 -39
  189. package/inc/util/string/cast.h +0 -347
  190. package/inc/util/string/cstriter.h +0 -14
  191. package/inc/util/string/escape.h +0 -70
  192. package/inc/util/string/hex.h +0 -59
  193. package/inc/util/string/join.h +0 -194
  194. package/inc/util/string/printf.h +0 -13
  195. package/inc/util/string/reverse.h +0 -16
  196. package/inc/util/string/split.h +0 -1080
  197. package/inc/util/string/strip.h +0 -257
  198. package/inc/util/string/strspn.h +0 -65
  199. package/inc/util/string/subst.h +0 -56
  200. package/inc/util/string/type.h +0 -50
  201. package/inc/util/string/util.h +0 -195
  202. package/inc/util/string/vector.h +0 -132
  203. package/inc/util/system/align.h +0 -50
  204. package/inc/util/system/atexit.h +0 -22
  205. package/inc/util/system/atomic.h +0 -51
  206. package/inc/util/system/atomic_gcc.h +0 -90
  207. package/inc/util/system/atomic_ops.h +0 -189
  208. package/inc/util/system/atomic_win.h +0 -114
  209. package/inc/util/system/backtrace.h +0 -39
  210. package/inc/util/system/byteorder.h +0 -186
  211. package/inc/util/system/compat.h +0 -84
  212. package/inc/util/system/compiler.h +0 -620
  213. package/inc/util/system/condvar.h +0 -71
  214. package/inc/util/system/context.h +0 -181
  215. package/inc/util/system/context_aarch64.h +0 -8
  216. package/inc/util/system/context_i686.h +0 -9
  217. package/inc/util/system/context_x86.h +0 -12
  218. package/inc/util/system/context_x86_64.h +0 -7
  219. package/inc/util/system/cpu_id.h +0 -159
  220. package/inc/util/system/daemon.h +0 -28
  221. package/inc/util/system/datetime.h +0 -98
  222. package/inc/util/system/defaults.h +0 -149
  223. package/inc/util/system/demangle.h +0 -5
  224. package/inc/util/system/demangle_impl.h +0 -23
  225. package/inc/util/system/direct_io.h +0 -71
  226. package/inc/util/system/dynlib.h +0 -119
  227. package/inc/util/system/env.h +0 -32
  228. package/inc/util/system/error.h +0 -95
  229. package/inc/util/system/event.h +0 -122
  230. package/inc/util/system/execpath.h +0 -17
  231. package/inc/util/system/fasttime.h +0 -6
  232. package/inc/util/system/fhandle.h +0 -27
  233. package/inc/util/system/file.h +0 -210
  234. package/inc/util/system/file_lock.h +0 -34
  235. package/inc/util/system/filemap.h +0 -383
  236. package/inc/util/system/flock.h +0 -35
  237. package/inc/util/system/fs.h +0 -156
  238. package/inc/util/system/fs_win.h +0 -29
  239. package/inc/util/system/fstat.h +0 -46
  240. package/inc/util/system/getpid.h +0 -12
  241. package/inc/util/system/guard.h +0 -179
  242. package/inc/util/system/hi_lo.h +0 -139
  243. package/inc/util/system/hostname.h +0 -10
  244. package/inc/util/system/hp_timer.h +0 -36
  245. package/inc/util/system/info.h +0 -12
  246. package/inc/util/system/interrupt_signals.h +0 -22
  247. package/inc/util/system/madvise.h +0 -30
  248. package/inc/util/system/maxlen.h +0 -32
  249. package/inc/util/system/mem_info.h +0 -18
  250. package/inc/util/system/mincore.h +0 -38
  251. package/inc/util/system/mktemp.h +0 -11
  252. package/inc/util/system/mlock.h +0 -43
  253. package/inc/util/system/mutex.h +0 -67
  254. package/inc/util/system/nice.h +0 -3
  255. package/inc/util/system/pipe.h +0 -90
  256. package/inc/util/system/platform.h +0 -246
  257. package/inc/util/system/progname.h +0 -13
  258. package/inc/util/system/protect.h +0 -25
  259. package/inc/util/system/rusage.h +0 -26
  260. package/inc/util/system/rwlock.h +0 -78
  261. package/inc/util/system/sanitizers.h +0 -122
  262. package/inc/util/system/sem.h +0 -41
  263. package/inc/util/system/shellcommand.h +0 -472
  264. package/inc/util/system/shmat.h +0 -32
  265. package/inc/util/system/sigset.h +0 -78
  266. package/inc/util/system/spin_wait.h +0 -10
  267. package/inc/util/system/spinlock.h +0 -121
  268. package/inc/util/system/src_location.h +0 -25
  269. package/inc/util/system/src_root.h +0 -68
  270. package/inc/util/system/sys_alloc.h +0 -43
  271. package/inc/util/system/sysstat.h +0 -52
  272. package/inc/util/system/tempfile.h +0 -34
  273. package/inc/util/system/thread.h +0 -167
  274. package/inc/util/system/tls.h +0 -307
  275. package/inc/util/system/types.h +0 -119
  276. package/inc/util/system/unaligned_mem.h +0 -67
  277. package/inc/util/system/user.h +0 -5
  278. package/inc/util/system/utime.h +0 -6
  279. package/inc/util/system/valgrind.h +0 -48
  280. package/inc/util/system/winint.h +0 -43
  281. package/inc/util/system/yassert.h +0 -121
  282. package/inc/util/system/yield.h +0 -4
  283. package/inc/util/thread/factory.h +0 -65
  284. package/inc/util/thread/fwd.h +0 -30
  285. package/inc/util/thread/lfqueue.h +0 -406
  286. package/inc/util/thread/lfstack.h +0 -188
  287. package/inc/util/thread/pool.h +0 -388
  288. package/inc/util/thread/singleton.h +0 -42
  289. package/inc/util/ysafeptr.h +0 -427
  290. 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,14 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef __cplusplus
4
- extern "C" {
5
- #endif
6
-
7
- typedef void (*TCallbackFun)(int);
8
-
9
- //! just calls callback with parameter @c i
10
- void TestCallback(TCallbackFun f, int i);
11
-
12
- #ifdef __cplusplus
13
- }
14
- #endif
@@ -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
- }
@@ -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
- };
@@ -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
- };