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