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,59 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/string.h>
4
- #include <util/generic/yexception.h>
5
- #include <util/system/yassert.h>
6
-
7
- inline static char DigitToChar(unsigned char digit) {
8
- if (digit < 10) {
9
- return (char)digit + '0';
10
- }
11
-
12
- return (char)(digit - 10) + 'A';
13
- }
14
-
15
- extern const char* const Char2DigitTable;
16
-
17
- inline static int Char2Digit(char ch) {
18
- char result = Char2DigitTable[(unsigned char)ch];
19
- Y_ENSURE(result != '\xff', "invalid hex character " << (int)ch);
20
- return result;
21
- }
22
-
23
- //! Convert a hex string of exactly 2 chars to int
24
- /*! @example String2Byte("10") => 16 */
25
- inline static int String2Byte(const char* s) {
26
- return Char2Digit(*s) * 16 + Char2Digit(*(s + 1));
27
- }
28
-
29
- char* HexEncode(const void* in, size_t len, char* out);
30
-
31
- TString HexEncode(const void* in, size_t len);
32
-
33
- inline TString HexEncode(const TStringBuf h) {
34
- return HexEncode(h.data(), h.size());
35
- }
36
-
37
- //! Convert a hex string @c in of @c len chars (case-insensitive) to array of ints stored at @c ptr and return this array.
38
- /*! @note len must be even (len % 2 == 0), otherwise an exception will be thrown.
39
- * @return @c ptr, which is an array of chars, where each char holds the numeric value
40
- * equal to the corresponding 2 digits of the input stream.
41
- * @warning You must ensure that @c ptr has (len/2) allocated bytes, otherwise SIGSEGV will happen.
42
- *
43
- * @example HexDecode("beef", 4, ptr) => {190, 239}
44
- */
45
- void* HexDecode(const void* in, size_t len, void* ptr);
46
-
47
- //! Convert a hex string @c in of @c len chars (case-insensitive) to array of ints and return this array.
48
- /*! @note len must be even (len % 2 == 0), otherwise an exception will be thrown.
49
- * @return an array of chars, where each char holds the numeric value equal to the corresponding 2 digits
50
- * of the input stream.
51
- *
52
- * @example HexDecode("beef", 4) => {190, 239}
53
- */
54
- TString HexDecode(const void* in, size_t len);
55
-
56
- //! Convert an ASCII hex-string (case-insensitive) to the binary form. Note that h.Size() must be even (+h % 2 == 0).
57
- inline TString HexDecode(const TStringBuf h) {
58
- return HexDecode(h.data(), h.size());
59
- }
@@ -1,194 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/string.h>
4
- #include <util/generic/typetraits.h>
5
- #include <util/string/cast.h>
6
- #include "cast.h"
7
-
8
- /*
9
- * Default implementation of AppendToString uses a temporary TString object which is inefficient. You can overload it
10
- * for your type to speed up string joins. If you already have an Out() or operator<<() implementation you can simply
11
- * do the following:
12
- *
13
- * inline void AppendToString(TString& dst, const TMyType& t) {
14
- * TStringOutput o(dst);
15
- * o << t;
16
- * }
17
- *
18
- * Unfortunately we can't do this by default because for some types ToString() is defined while Out() is not.
19
- * For standard types (strings of all kinds and arithmetic types) we don't use a temporary TString in AppendToString().
20
- */
21
-
22
- template <typename T>
23
- inline std::enable_if_t<!std::is_arithmetic<std::remove_cv_t<T>>::value, void>
24
- AppendToString(TString& dst, const T& t) {
25
- dst.AppendNoAlias(ToString(t));
26
- }
27
-
28
- template <typename T>
29
- inline std::enable_if_t<std::is_arithmetic<std::remove_cv_t<T>>::value, void>
30
- AppendToString(TString& dst, const T& t) {
31
- char buf[512];
32
- dst.append(buf, ToString<std::remove_cv_t<T>>(t, buf, sizeof(buf)));
33
- }
34
-
35
- inline void AppendToString(TString& dst, const char* t) {
36
- dst.append(t);
37
- }
38
-
39
- inline void AppendToString(TString& dst, const TStringBuf t) {
40
- dst.append(t);
41
- }
42
-
43
- namespace NPrivate {
44
- template <typename T>
45
- inline size_t GetLength(const T&) {
46
- // By default don't pre-allocate space when joining and appending non-string types.
47
- // This code can be extended by estimating stringified length for specific types (e.g. 10 for ui32).
48
- return 0;
49
- }
50
-
51
- template <>
52
- inline size_t GetLength(const TString& s) {
53
- return s.length();
54
- }
55
-
56
- template <>
57
- inline size_t GetLength(const TStringBuf& s) {
58
- return s.length();
59
- }
60
-
61
- template <>
62
- inline size_t GetLength(const char* const& s) {
63
- return (s ? std::char_traits<char>::length(s) : 0);
64
- }
65
-
66
- inline size_t GetAppendLength(const TStringBuf /*delim*/) {
67
- return 0;
68
- }
69
-
70
- template <typename TFirst, typename... TRest>
71
- size_t GetAppendLength(const TStringBuf delim, const TFirst& f, const TRest&... r) {
72
- return delim.length() + ::NPrivate::GetLength(f) + ::NPrivate::GetAppendLength(delim, r...);
73
- }
74
- }
75
-
76
- inline void AppendJoinNoReserve(TString&, const TStringBuf) {
77
- }
78
-
79
- template <typename TFirst, typename... TRest>
80
- inline void AppendJoinNoReserve(TString& dst, const TStringBuf delim, const TFirst& f, const TRest&... r) {
81
- AppendToString(dst, delim);
82
- AppendToString(dst, f);
83
- AppendJoinNoReserve(dst, delim, r...);
84
- }
85
-
86
- template <typename... TValues>
87
- inline void AppendJoin(TString& dst, const TStringBuf delim, const TValues&... values) {
88
- const size_t appendLength = ::NPrivate::GetAppendLength(delim, values...);
89
- if (appendLength > 0) {
90
- dst.reserve(dst.length() + appendLength);
91
- }
92
- AppendJoinNoReserve(dst, delim, values...);
93
- }
94
-
95
- template <typename TFirst, typename... TRest>
96
- inline TString Join(const TStringBuf delim, const TFirst& f, const TRest&... r) {
97
- TString ret = ToString(f);
98
- AppendJoin(ret, delim, r...);
99
- return ret;
100
- }
101
-
102
- // Note that char delimeter @cdelim will be printed as single char string,
103
- // but any char value @v will be printed as corresponding numeric code.
104
- // For example, Join('a', 'a', 'a') will print "97a97" (see unit-test).
105
- template <typename... TValues>
106
- inline TString Join(char cdelim, const TValues&... v) {
107
- return Join(TStringBuf(&cdelim, 1), v...);
108
- }
109
-
110
- template <typename TIter>
111
- inline TString JoinRange(const TStringBuf delim, const TIter beg, const TIter end) {
112
- TString out;
113
- if (beg != end) {
114
- size_t total = ::NPrivate::GetLength(*beg);
115
- for (TIter pos = beg; ++pos != end;) {
116
- total += delim.length() + ::NPrivate::GetLength(*pos);
117
- }
118
- if (total > 0) {
119
- out.reserve(total);
120
- }
121
-
122
- AppendToString(out, *beg);
123
- for (TIter pos = beg; ++pos != end;) {
124
- AppendJoinNoReserve(out, delim, *pos);
125
- }
126
- }
127
-
128
- return out;
129
- }
130
-
131
- template <typename TContainer>
132
- TString JoinSeq(const TStringBuf delim, const TContainer& data) {
133
- using std::begin;
134
- using std::end;
135
- return JoinRange(delim, begin(data), end(data));
136
- }
137
-
138
- /** \brief Functor for streaming iterative objects from TIterB e to TIterE b, separated with delim.
139
- * Difference from JoinSeq, JoinRange, Join is the lack of TString object - all depends on operator<< for the type and
140
- * realization of IOutputStream
141
- */
142
- template<class TIterB, class TIterE>
143
- struct TRangeJoiner{
144
- friend constexpr IOutputStream& operator<<(IOutputStream& stream, const TRangeJoiner<TIterB, TIterE>& rangeJoiner) {
145
- if(rangeJoiner.b != rangeJoiner.e) {
146
- stream << *rangeJoiner.b;
147
-
148
- for(auto it = std::next(rangeJoiner.b); it != rangeJoiner.e; ++it)
149
- stream << rangeJoiner.delim << *it;
150
- }
151
- return stream;
152
- }
153
-
154
- constexpr TRangeJoiner(TStringBuf delim, TIterB && b, TIterE && e) : delim(delim), b(std::forward<TIterB>(b)), e(std::forward<TIterE>(e)) {}
155
- private:
156
- const TStringBuf delim;
157
- const TIterB b;
158
- const TIterE e;
159
- };
160
-
161
- template<class TIterB, class TIterE = TIterB> constexpr auto MakeRangeJoiner(TStringBuf delim, TIterB && b, TIterE && e) {
162
- return TRangeJoiner<TIterB, TIterE>(delim, std::forward<TIterB>(b), std::forward<TIterE>(e));
163
- }
164
-
165
- template<class TContainer> constexpr auto MakeRangeJoiner(TStringBuf delim, const TContainer& data) {
166
- return MakeRangeJoiner(delim, std::cbegin(data), std::cend(data));
167
- }
168
-
169
- template<class TVal> constexpr auto MakeRangeJoiner(TStringBuf delim, const std::initializer_list<TVal>& data) {
170
- return MakeRangeJoiner(delim, std::cbegin(data), std::cend(data));
171
- }
172
-
173
- /* We force (std::initializer_list<TStringBuf>) input type for (TString) and (const char*) types because:
174
- * # When (std::initializer_list<TString>) is used, TString objects are copied into the initializer_list object.
175
- * Storing TStringBufs instead is faster, even with COW-enabled strings.
176
- * # For (const char*) we calculate length only once and store it in TStringBuf. Otherwise strlen scan would be executed
177
- * in both GetAppendLength and AppendToString. For string literals constant lengths get propagated in compile-time.
178
- *
179
- * This way JoinSeq(",", { s1, s2 }) always does the right thing whatever types s1 and s2 have.
180
- *
181
- * If someone needs to join std::initializer_list<TString> -- it still works because of the TContainer template above.
182
- */
183
-
184
- template <typename T>
185
- inline std::enable_if_t<
186
- !std::is_same<std::decay_t<T>, TString>::value && !std::is_same<std::decay_t<T>, const char*>::value,
187
- TString>
188
- JoinSeq(const TStringBuf delim, const std::initializer_list<T>& data) {
189
- return JoinRange(delim, data.begin(), data.end());
190
- }
191
-
192
- inline TString JoinSeq(const TStringBuf delim, const std::initializer_list<TStringBuf>& data) {
193
- return JoinRange(delim, data.begin(), data.end());
194
- }
@@ -1,13 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/fwd.h>
4
- #include <util/system/compiler.h>
5
-
6
- #include <cstdarg>
7
-
8
- /// formatted print. return printed length:
9
- int Y_PRINTF_FORMAT(2, 0) vsprintf(TString& s, const char* c, va_list params);
10
- /// formatted print. return printed length:
11
- int Y_PRINTF_FORMAT(2, 3) sprintf(TString& s, const char* c, ...);
12
- TString Y_PRINTF_FORMAT(1, 2) Sprintf(const char* c, ...);
13
- int Y_PRINTF_FORMAT(2, 3) fcat(TString& s, const char* c, ...);
@@ -1,16 +0,0 @@
1
- #pragma once
2
-
3
- #include <util/generic/fwd.h>
4
-
5
- void ReverseInPlace(TString& string);
6
-
7
- /** NB. UTF-16 is variable-length encoding because of the surrogate pairs.
8
- * This function takes this into account and treats a surrogate pair as a single symbol.
9
- * Ex. if [C D] is a surrogate pair,
10
- * A B [C D] E
11
- * will become
12
- * E [C D] B A
13
- */
14
- void ReverseInPlace(TUtf16String& string);
15
-
16
- void ReverseInPlace(TUtf32String& string);