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,28 +0,0 @@
1
- #pragma once
2
-
3
- #include "output.h"
4
-
5
- /**
6
- * @addtogroup Streams_Multi
7
- * @{
8
- */
9
-
10
- /**
11
- * A proxy output stream that writes into two slave streams simultaneously.
12
- */
13
- class TTeeOutput: public IOutputStream {
14
- public:
15
- TTeeOutput(IOutputStream* l, IOutputStream* r) noexcept;
16
- ~TTeeOutput() override;
17
-
18
- private:
19
- void DoWrite(const void* buf, size_t len) override;
20
- void DoFlush() override;
21
- void DoFinish() override;
22
-
23
- private:
24
- IOutputStream* L_;
25
- IOutputStream* R_;
26
- };
27
-
28
- /** @} */
@@ -1,21 +0,0 @@
1
- #pragma once
2
-
3
- #include "output.h"
4
-
5
- #include <util/memory/tempbuf.h>
6
-
7
- class TTempBufOutput: public IOutputStream, public TTempBuf {
8
- public:
9
- inline TTempBufOutput() = default;
10
-
11
- explicit TTempBufOutput(size_t size)
12
- : TTempBuf(size)
13
- {
14
- }
15
-
16
- TTempBufOutput(TTempBufOutput&&) noexcept = default;
17
- TTempBufOutput& operator=(TTempBufOutput&&) noexcept = default;
18
-
19
- protected:
20
- void DoWrite(const void* data, size_t len) override;
21
- };
@@ -1,214 +0,0 @@
1
- #pragma once
2
-
3
- #include "input.h"
4
-
5
- #include <util/generic/buffer.h>
6
- #include <util/generic/mem_copy.h>
7
- #include <util/generic/strbuf.h>
8
- #include <util/system/compiler.h>
9
- #include <util/system/yassert.h>
10
-
11
- /**
12
- * @addtogroup Streams
13
- * @{
14
- */
15
-
16
- /**
17
- * Simple stream tokenizer. Splits the stream into tokens that are available
18
- * via iterator interface.
19
- *
20
- * @tparam TEndOfToken Predicate for token delimiter characters.
21
- * @see TEol
22
- */
23
- template <typename TEndOfToken>
24
- class TStreamTokenizer {
25
- public:
26
- class TIterator {
27
- public:
28
- inline TIterator(TStreamTokenizer* const parent)
29
- : Parent_(parent)
30
- , AtEnd_(!Parent_->Next(Data_, Len_))
31
- {
32
- }
33
-
34
- inline TIterator() noexcept
35
- : Parent_(nullptr)
36
- , Data_(nullptr)
37
- , Len_(0)
38
- , AtEnd_(true)
39
- {
40
- }
41
-
42
- inline ~TIterator() = default;
43
-
44
- inline void operator++() {
45
- Next();
46
- }
47
-
48
- inline bool operator==(const TIterator& l) const noexcept {
49
- return AtEnd_ == l.AtEnd_;
50
- }
51
-
52
- inline bool operator!=(const TIterator& l) const noexcept {
53
- return !(*this == l);
54
- }
55
-
56
- /**
57
- * @return Return null-terminated character array with current token.
58
- * The pointer may be invalid after iterator increment.
59
- */
60
- inline const char* Data() const noexcept {
61
- Y_ASSERT(!AtEnd_);
62
-
63
- return Data_;
64
- }
65
-
66
- /**
67
- * @return Length of current token.
68
- */
69
- inline size_t Length() const noexcept {
70
- Y_ASSERT(!AtEnd_);
71
-
72
- return Len_;
73
- }
74
-
75
- inline TIterator* operator->() noexcept {
76
- return this;
77
- }
78
-
79
- inline TStringBuf operator*() noexcept {
80
- return TStringBuf{Data_, Len_};
81
- }
82
-
83
- private:
84
- inline void Next() {
85
- Y_ASSERT(Parent_);
86
-
87
- AtEnd_ = !Parent_->Next(Data_, Len_);
88
- }
89
-
90
- private:
91
- TStreamTokenizer* const Parent_;
92
- char* Data_;
93
- size_t Len_;
94
- bool AtEnd_;
95
- };
96
-
97
- inline TStreamTokenizer(IInputStream* const input, const TEndOfToken& eot = TEndOfToken(),
98
- const size_t initial = 1024)
99
- : Input_(input)
100
- , Buf_(initial)
101
- , Cur_(BufBegin())
102
- , End_(BufBegin())
103
- , Eot_(eot)
104
- {
105
- CheckBuf();
106
- }
107
-
108
- inline bool Next(char*& buf, size_t& len) {
109
- char* it = Cur_;
110
-
111
- while (true) {
112
- do {
113
- while (it != End_) {
114
- if (Eot_(*it)) {
115
- *it = '\0';
116
-
117
- buf = Cur_;
118
- len = it - Cur_;
119
- Cur_ = it + 1;
120
-
121
- return true;
122
- } else {
123
- ++it;
124
- }
125
- }
126
-
127
- if (Fill() == 0 && End_ != BufEnd()) {
128
- *it = '\0';
129
-
130
- buf = Cur_;
131
- len = it - Cur_;
132
- Cur_ = End_;
133
-
134
- return len;
135
- }
136
- } while (it != BufEnd());
137
-
138
- Y_ASSERT(it == BufEnd());
139
- Y_ASSERT(End_ == BufEnd());
140
-
141
- const size_t blen = End_ - Cur_;
142
- if (Cur_ == BufBegin()) {
143
- Y_ASSERT(blen == Buf_.Capacity());
144
-
145
- /*
146
- * do reallocate
147
- */
148
-
149
- Buf_.Reserve(Buf_.Capacity() * 4);
150
- CheckBuf();
151
- } else {
152
- /*
153
- * do move
154
- */
155
-
156
- MemMove(BufBegin(), Cur_, blen);
157
- }
158
-
159
- Cur_ = BufBegin();
160
- End_ = Cur_ + blen;
161
- it = End_;
162
- }
163
- }
164
-
165
- inline TIterator begin() {
166
- return TIterator{this};
167
- }
168
-
169
- inline TIterator end() noexcept {
170
- return {};
171
- }
172
-
173
- private:
174
- inline size_t Fill() {
175
- const size_t avail = BufEnd() - End_;
176
- const size_t readed = Input_->Read(End_, avail);
177
-
178
- End_ += readed;
179
-
180
- return readed;
181
- }
182
-
183
- inline char* BufBegin() noexcept {
184
- return Buf_.Data();
185
- }
186
-
187
- inline char* BufEnd() noexcept {
188
- return Buf_.Data() + Buf_.Capacity();
189
- }
190
-
191
- inline void CheckBuf() const {
192
- if (!Buf_.Data()) {
193
- throw std::bad_alloc();
194
- }
195
- }
196
-
197
- private:
198
- IInputStream* const Input_;
199
- TBuffer Buf_;
200
- char* Cur_;
201
- char* End_;
202
- TEndOfToken Eot_;
203
- };
204
-
205
- /**
206
- * Predicate for `TStreamTokenizer` that uses '\\n' as a delimiter.
207
- */
208
- struct TEol {
209
- inline bool operator()(char ch) const noexcept {
210
- return ch == '\n';
211
- }
212
- };
213
-
214
- /** @} */
@@ -1,60 +0,0 @@
1
- #pragma once
2
-
3
- #include "debug.h"
4
-
5
- /**
6
- * Debug level, as set via `DBGOUT` environment variable.
7
- */
8
- enum ETraceLevel : ui8 {
9
- TRACE_ERR = 1,
10
- TRACE_WARN = 2,
11
- TRACE_NOTICE = 3,
12
- TRACE_INFO = 4,
13
- TRACE_DEBUG = 5,
14
- TRACE_DETAIL = 6,
15
- TRACE_VERBOSE = 7
16
- };
17
-
18
- #if !defined(NDEBUG) && !defined(Y_ENABLE_TRACE)
19
- #define Y_ENABLE_TRACE
20
- #endif
21
-
22
- #ifdef Y_ENABLE_TRACE
23
-
24
- /**
25
- * Writes the given data into standard debug stream if current debug level set
26
- * via `DBGOUT` environment variable permits it.
27
- *
28
- * Does nothing in release builds unless `Y_ENABLE_TRACE` is defined.
29
- *
30
- * Example usage:
31
- * @code
32
- * Y_DBGTRACE(DEBUG, "Advance from " << node1 << " to " << node2);
33
- * @endcode
34
- *
35
- * @param elevel Debug level of this trace command, e.g.
36
- * `WARN` or `DEBUG`. Basically a suffix of
37
- * one of the values of `ETraceLevel` enum.
38
- * @param args Argument chain to be written out into
39
- * standard debug stream, joined with `<<`
40
- * operator.
41
- * @see ETraceLevel
42
- */
43
- #define Y_DBGTRACE(elevel, args) Y_DBGTRACE0(int(TRACE_##elevel), args)
44
- #define Y_DBGTRACE0(level, args) \
45
- do \
46
- if ((level) <= StdDbgLevel()) { \
47
- StdDbgStream() << args << Endl; \
48
- } \
49
- while (false)
50
-
51
- #else
52
-
53
- #define Y_DBGTRACE(elevel, args) \
54
- do { \
55
- } while (false)
56
- #define Y_DBGTRACE0(level, args) \
57
- do { \
58
- } while (false)
59
-
60
- #endif
@@ -1,35 +0,0 @@
1
- #pragma once
2
-
3
- #include "zerocopy.h"
4
-
5
- /**
6
- * Zero-copy stream that simplifies implementation of derived classes.
7
- *
8
- * Derived classes must implement `DoUnboundedNext` method.
9
- */
10
- class IWalkInput: public IZeroCopyInputFastReadTo {
11
- public:
12
- IWalkInput()
13
- : Buf_(nullptr)
14
- , Len_(0)
15
- {
16
- }
17
-
18
- protected:
19
- void DoUndo(size_t len) override;
20
- size_t DoNext(const void** ptr, size_t len) override;
21
-
22
- /**
23
- * Returns the next data chunk from this input stream. There are no
24
- * restrictions on the size of the data chunk.
25
- *
26
- * @param ptr[out] Pointer to the start of the data chunk.
27
- * @returns Size of the returned data chunk, in bytes.
28
- * Return value of zero signals end of stream.
29
- */
30
- virtual size_t DoUnboundedNext(const void** ptr) = 0;
31
-
32
- private:
33
- const void* Buf_;
34
- size_t Len_;
35
- };
@@ -1,91 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/system/yassert.h>
4
- #include <util/system/defaults.h>
5
- #include <util/generic/ylimits.h>
6
-
7
- #include "input.h"
8
-
9
- class IOutputStream;
10
-
11
- /**
12
- * @addtogroup Streams
13
- * @{
14
- */
15
-
16
- /**
17
- * Input stream with direct access to the input buffer.
18
- *
19
- * Derived classes must implement `DoNext` method.
20
- */
21
- class IZeroCopyInput: public IInputStream {
22
- public:
23
- IZeroCopyInput() noexcept = default;
24
- ~IZeroCopyInput() override;
25
-
26
- IZeroCopyInput(IZeroCopyInput&&) noexcept = default;
27
- IZeroCopyInput& operator=(IZeroCopyInput&&) noexcept = default;
28
-
29
- /**
30
- * Returns the next data chunk from this input stream.
31
- *
32
- * Note that this function is not guaranteed to return the requested number
33
- * of bytes, even if they are in fact available in the stream.
34
- *
35
- * @param ptr[out] Pointer to the start of the data chunk.
36
- * @param len[in] Maximal size of the data chunk to be returned, in bytes.
37
- * @returns Size of the returned data chunk, in bytes.
38
- * Return value of zero signals end of stream.
39
- */
40
- template <class T>
41
- inline size_t Next(T** ptr, size_t len) {
42
- Y_ASSERT(ptr);
43
-
44
- return DoNext((const void**)ptr, len);
45
- }
46
-
47
- template <class T>
48
- inline size_t Next(T** ptr) {
49
- return Next(ptr, Max<size_t>());
50
- }
51
-
52
- protected:
53
- size_t DoRead(void* buf, size_t len) override;
54
- size_t DoSkip(size_t len) override;
55
- ui64 DoReadAll(IOutputStream& out) override;
56
- virtual size_t DoNext(const void** ptr, size_t len) = 0;
57
- };
58
-
59
- /**
60
- * Input stream with direct access to the input buffer and ability to undo read
61
- *
62
- * Derived classes must implement `DoUndo` method.
63
- */
64
- class IZeroCopyInputFastReadTo: public IZeroCopyInput {
65
- public:
66
- IZeroCopyInputFastReadTo() noexcept = default;
67
- ~IZeroCopyInputFastReadTo() override;
68
-
69
- IZeroCopyInputFastReadTo(IZeroCopyInputFastReadTo&&) noexcept = default;
70
- IZeroCopyInputFastReadTo& operator=(IZeroCopyInputFastReadTo&&) noexcept = default;
71
-
72
- protected:
73
- size_t DoReadTo(TString& st, char ch) override;
74
-
75
- private:
76
- /**
77
- * Undo read.
78
- *
79
- * Note that this function not check if you try undo more that read. In fact Undo used for undo read in last chunk.
80
- *
81
- * @param len[in] Bytes to undo.
82
- */
83
- inline void Undo(size_t len) {
84
- if (len) {
85
- DoUndo(len);
86
- }
87
- }
88
- virtual void DoUndo(size_t len) = 0;
89
- };
90
-
91
- /** @} */
@@ -1,57 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/system/yassert.h>
4
-
5
- #include "output.h"
6
-
7
- /**
8
- * @addtogroup Streams
9
- * @{
10
- */
11
-
12
- /**
13
- * Output stream with direct access to the output buffer.
14
- *
15
- * Derived classes must implement `DoNext` and `DoUndo` methods.
16
- */
17
- class IZeroCopyOutput: public IOutputStream {
18
- public:
19
- IZeroCopyOutput() noexcept = default;
20
- ~IZeroCopyOutput() override = default;
21
-
22
- IZeroCopyOutput(IZeroCopyOutput&&) noexcept = default;
23
- IZeroCopyOutput& operator=(IZeroCopyOutput&&) noexcept = default;
24
-
25
- /**
26
- * Returns the next buffer to write to from this output stream.
27
- *
28
- * @param ptr[out] Pointer to the start of the buffer.
29
- * @returns Size of the returned buffer, in bytes.
30
- * Return value is always nonzero.
31
- */
32
- template <class T>
33
- inline size_t Next(T** ptr) {
34
- Y_ASSERT(ptr);
35
-
36
- return DoNext((void**)ptr);
37
- }
38
-
39
- /**
40
- * Tells the stream that `len` bytes at the end of the buffer returned previously
41
- * by Next were actually not written so the current position in stream must be moved backwards.
42
- * `len` must not be greater than the size of the buffer previously returned by `Next`.
43
- *
44
- * @param len[in] Number of bytes at the end to move the position by.
45
- *
46
- */
47
- inline void Undo(size_t len) {
48
- return DoUndo(len);
49
- }
50
-
51
- protected:
52
- void DoWrite(const void* buf, size_t len) override;
53
- virtual size_t DoNext(void** ptr) = 0;
54
- virtual void DoUndo(size_t len) = 0;
55
- };
56
-
57
- /** @} */
@@ -1,173 +0,0 @@
1
- #pragma once
2
-
3
- #include "fwd.h"
4
- #include "input.h"
5
- #include "output.h"
6
- #include "buffered.h"
7
-
8
- #include <util/system/defaults.h>
9
- #include <util/generic/ptr.h>
10
- #include <util/generic/yexception.h>
11
-
12
- /**
13
- * @addtogroup Streams_Archs
14
- * @{
15
- */
16
-
17
- struct TZLibError: public yexception {
18
- };
19
-
20
- struct TZLibCompressorError: public TZLibError {
21
- };
22
-
23
- struct TZLibDecompressorError: public TZLibError {
24
- };
25
-
26
- namespace ZLib {
27
- enum StreamType : ui8 {
28
- Auto = 0, /**< Auto detect format. Can be used for decompression only. */
29
- ZLib = 1,
30
- GZip = 2,
31
- Raw = 3,
32
- Invalid = 4
33
- };
34
-
35
- enum {
36
- ZLIB_BUF_LEN = 8 * 1024
37
- };
38
- }
39
-
40
- /**
41
- * Non-buffered ZLib decompressing stream.
42
- *
43
- * Please don't use `TZLibDecompress` if you read text data from stream using
44
- * `ReadLine`, it is VERY slow (approx 10 times slower, according to synthetic
45
- * benchmark). For fast buffered ZLib stream reading use `TBufferedZLibDecompress`
46
- * aka `TZDecompress`.
47
- */
48
- class TZLibDecompress: public IInputStream {
49
- public:
50
- TZLibDecompress(IZeroCopyInput* input, ZLib::StreamType type = ZLib::Auto, TStringBuf dict = {});
51
- TZLibDecompress(IInputStream* input, ZLib::StreamType type = ZLib::Auto, size_t buflen = ZLib::ZLIB_BUF_LEN,
52
- TStringBuf dict = {});
53
-
54
- /**
55
- * Allows/disallows multiple sequential compressed streams. Allowed by default.
56
- *
57
- * If multiple streams are allowed, their decompressed content will be concatenated.
58
- * If multiple streams are disabled, then only first stream is decompressed. After that end
59
- * of IInputStream will have happen, i.e. method Read() will return 0.
60
- *
61
- * @param allowMultipleStreams - flag to allow (true) or disable (false) multiple streams.
62
- */
63
- void SetAllowMultipleStreams(bool allowMultipleStreams);
64
-
65
- ~TZLibDecompress() override;
66
-
67
- protected:
68
- size_t DoRead(void* buf, size_t size) override;
69
-
70
- public:
71
- class TImpl;
72
- THolder<TImpl> Impl_;
73
- };
74
-
75
- /**
76
- * Non-buffered ZLib compressing stream.
77
- */
78
- class TZLibCompress: public IOutputStream {
79
- public:
80
- struct TParams {
81
- inline TParams(IOutputStream* out)
82
- : Out(out)
83
- , Type(ZLib::ZLib)
84
- , CompressionLevel(6)
85
- , BufLen(ZLib::ZLIB_BUF_LEN)
86
- {
87
- }
88
-
89
- inline TParams& SetType(ZLib::StreamType type) noexcept {
90
- Type = type;
91
-
92
- return *this;
93
- }
94
-
95
- inline TParams& SetCompressionLevel(size_t level) noexcept {
96
- CompressionLevel = level;
97
-
98
- return *this;
99
- }
100
-
101
- inline TParams& SetBufLen(size_t buflen) noexcept {
102
- BufLen = buflen;
103
-
104
- return *this;
105
- }
106
-
107
- inline TParams& SetDict(const TStringBuf dict) noexcept {
108
- Dict = dict;
109
-
110
- return *this;
111
- }
112
-
113
- IOutputStream* Out;
114
- ZLib::StreamType Type;
115
- size_t CompressionLevel;
116
- size_t BufLen;
117
- TStringBuf Dict;
118
- };
119
-
120
- inline TZLibCompress(const TParams& params) {
121
- Init(params);
122
- }
123
-
124
- inline TZLibCompress(IOutputStream* out, ZLib::StreamType type) {
125
- Init(TParams(out).SetType(type));
126
- }
127
-
128
- inline TZLibCompress(IOutputStream* out, ZLib::StreamType type, size_t compression_level) {
129
- Init(TParams(out).SetType(type).SetCompressionLevel(compression_level));
130
- }
131
-
132
- inline TZLibCompress(IOutputStream* out, ZLib::StreamType type, size_t compression_level, size_t buflen) {
133
- Init(TParams(out).SetType(type).SetCompressionLevel(compression_level).SetBufLen(buflen));
134
- }
135
-
136
- ~TZLibCompress() override;
137
-
138
- private:
139
- void Init(const TParams& opts);
140
-
141
- void DoWrite(const void* buf, size_t size) override;
142
- void DoFlush() override;
143
- void DoFinish() override;
144
-
145
- public:
146
- class TImpl;
147
-
148
- /** To allow inline constructors. */
149
- struct TDestruct {
150
- static void Destroy(TImpl* impl);
151
- };
152
-
153
- THolder<TImpl, TDestruct> Impl_;
154
- };
155
-
156
- /**
157
- * Buffered ZLib decompressing stream.
158
- *
159
- * Supports efficient `ReadLine` calls and similar "reading in small pieces"
160
- * usage patterns.
161
- */
162
- class TBufferedZLibDecompress: public TBuffered<TZLibDecompress> {
163
- public:
164
- template <class T>
165
- inline TBufferedZLibDecompress(T* in, ZLib::StreamType type = ZLib::Auto, size_t buf = 1 << 13)
166
- : TBuffered<TZLibDecompress>(buf, in, type)
167
- {
168
- }
169
-
170
- ~TBufferedZLibDecompress() override;
171
- };
172
-
173
- /** @} */