catboost 1.25.1 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DEPLOYMENT.md +22 -15
- package/README.md +37 -27
- package/binding.gyp +5 -7
- package/build_scripts/bootstrap.js +2 -1
- package/build_scripts/out/build.js +46 -68
- package/build_scripts/out/build_model.js +1 -1
- package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
- package/build_scripts/out/ci.js +5 -5
- package/build_scripts/out/config.js +32 -18
- package/build_scripts/out/install.js +5 -3
- package/build_scripts/out/package_prepublish.js +1 -1
- package/build_scripts/out/packaging.js +1 -19
- package/build_scripts/out/run_tests.js +1 -1
- package/build_scripts/out/test.js +8 -3
- package/config.json +18 -11
- package/inc/catboost/libs/model_interface/c_api.h +349 -3
- package/lib/catboost.d.ts +65 -21
- package/package.json +4 -4
- package/src/api_helpers.cpp +100 -24
- package/src/api_helpers.h +8 -7
- package/src/api_module.cpp +1 -2
- package/src/model.cpp +483 -83
- package/src/model.h +24 -9
- package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
- package/inc/util/charset/recode_result.h +0 -9
- package/inc/util/charset/unicode_table.h +0 -123
- package/inc/util/charset/unidata.h +0 -421
- package/inc/util/charset/utf8.h +0 -384
- package/inc/util/charset/wide.h +0 -843
- package/inc/util/charset/wide_specific.h +0 -22
- package/inc/util/datetime/base.h +0 -669
- package/inc/util/datetime/constants.h +0 -7
- package/inc/util/datetime/cputimer.h +0 -124
- package/inc/util/datetime/parser.h +0 -292
- package/inc/util/datetime/systime.h +0 -47
- package/inc/util/datetime/uptime.h +0 -8
- package/inc/util/digest/city.h +0 -88
- package/inc/util/digest/fnv.h +0 -73
- package/inc/util/digest/multi.h +0 -14
- package/inc/util/digest/murmur.h +0 -57
- package/inc/util/digest/numeric.h +0 -86
- package/inc/util/digest/sequence.h +0 -48
- package/inc/util/draft/date.h +0 -129
- package/inc/util/draft/datetime.h +0 -184
- package/inc/util/draft/enum.h +0 -136
- package/inc/util/draft/holder_vector.h +0 -102
- package/inc/util/draft/ip.h +0 -131
- package/inc/util/draft/matrix.h +0 -108
- package/inc/util/draft/memory.h +0 -40
- package/inc/util/folder/dirent_win.h +0 -46
- package/inc/util/folder/dirut.h +0 -121
- package/inc/util/folder/filelist.h +0 -81
- package/inc/util/folder/fts.h +0 -108
- package/inc/util/folder/iterator.h +0 -109
- package/inc/util/folder/lstat_win.h +0 -20
- package/inc/util/folder/path.h +0 -225
- package/inc/util/folder/pathsplit.h +0 -113
- package/inc/util/folder/tempdir.h +0 -42
- package/inc/util/generic/adaptor.h +0 -134
- package/inc/util/generic/algorithm.h +0 -765
- package/inc/util/generic/array_ref.h +0 -282
- package/inc/util/generic/array_size.h +0 -24
- package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
- package/inc/util/generic/bitmap.h +0 -1115
- package/inc/util/generic/bitops.h +0 -459
- package/inc/util/generic/bt_exception.h +0 -24
- package/inc/util/generic/buffer.h +0 -232
- package/inc/util/generic/cast.h +0 -176
- package/inc/util/generic/deque.h +0 -24
- package/inc/util/generic/explicit_type.h +0 -42
- package/inc/util/generic/fastqueue.h +0 -55
- package/inc/util/generic/flags.h +0 -244
- package/inc/util/generic/function.h +0 -103
- package/inc/util/generic/fwd.h +0 -171
- package/inc/util/generic/guid.h +0 -61
- package/inc/util/generic/hash.h +0 -2032
- package/inc/util/generic/hash_primes.h +0 -140
- package/inc/util/generic/hash_set.h +0 -490
- package/inc/util/generic/hide_ptr.h +0 -3
- package/inc/util/generic/intrlist.h +0 -876
- package/inc/util/generic/is_in.h +0 -53
- package/inc/util/generic/iterator.h +0 -137
- package/inc/util/generic/iterator_range.h +0 -105
- package/inc/util/generic/lazy_value.h +0 -66
- package/inc/util/generic/list.h +0 -22
- package/inc/util/generic/map.h +0 -44
- package/inc/util/generic/mapfindptr.h +0 -60
- package/inc/util/generic/maybe.h +0 -713
- package/inc/util/generic/maybe_traits.h +0 -164
- package/inc/util/generic/mem_copy.h +0 -55
- package/inc/util/generic/noncopyable.h +0 -38
- package/inc/util/generic/object_counter.h +0 -53
- package/inc/util/generic/ptr.h +0 -1113
- package/inc/util/generic/queue.h +0 -57
- package/inc/util/generic/refcount.h +0 -162
- package/inc/util/generic/reserve.h +0 -11
- package/inc/util/generic/scope.h +0 -65
- package/inc/util/generic/serialized_enum.h +0 -406
- package/inc/util/generic/set.h +0 -42
- package/inc/util/generic/singleton.h +0 -136
- package/inc/util/generic/size_literals.h +0 -65
- package/inc/util/generic/stack.h +0 -18
- package/inc/util/generic/store_policy.h +0 -120
- package/inc/util/generic/strbase.h +0 -612
- package/inc/util/generic/strbuf.h +0 -552
- package/inc/util/generic/strfcpy.h +0 -17
- package/inc/util/generic/string.h +0 -1572
- package/inc/util/generic/string_hash.h +0 -21
- package/inc/util/generic/string_ut.h +0 -1175
- package/inc/util/generic/type_name.h +0 -34
- package/inc/util/generic/typelist.h +0 -114
- package/inc/util/generic/typetraits.h +0 -325
- package/inc/util/generic/utility.h +0 -132
- package/inc/util/generic/va_args.h +0 -400
- package/inc/util/generic/variant.h +0 -631
- package/inc/util/generic/variant_traits.h +0 -171
- package/inc/util/generic/vector.h +0 -119
- package/inc/util/generic/xrange.h +0 -258
- package/inc/util/generic/yexception.h +0 -212
- package/inc/util/generic/yexception_ut.h +0 -14
- package/inc/util/generic/ylimits.h +0 -92
- package/inc/util/generic/ymath.h +0 -206
- package/inc/util/memory/addstorage.h +0 -93
- package/inc/util/memory/alloc.h +0 -27
- package/inc/util/memory/blob.h +0 -296
- package/inc/util/memory/mmapalloc.h +0 -8
- package/inc/util/memory/pool.h +0 -432
- package/inc/util/memory/segmented_string_pool.h +0 -194
- package/inc/util/memory/segpool_alloc.h +0 -118
- package/inc/util/memory/smallobj.h +0 -141
- package/inc/util/memory/tempbuf.h +0 -111
- package/inc/util/network/address.h +0 -136
- package/inc/util/network/endpoint.h +0 -61
- package/inc/util/network/hostip.h +0 -16
- package/inc/util/network/init.h +0 -60
- package/inc/util/network/interface.h +0 -17
- package/inc/util/network/iovec.h +0 -65
- package/inc/util/network/ip.h +0 -116
- package/inc/util/network/nonblock.h +0 -8
- package/inc/util/network/pair.h +0 -9
- package/inc/util/network/poller.h +0 -58
- package/inc/util/network/pollerimpl.h +0 -707
- package/inc/util/network/sock.h +0 -608
- package/inc/util/network/socket.h +0 -421
- package/inc/util/random/common_ops.h +0 -130
- package/inc/util/random/easy.h +0 -47
- package/inc/util/random/entropy.h +0 -21
- package/inc/util/random/fast.h +0 -101
- package/inc/util/random/init_atfork.h +0 -3
- package/inc/util/random/lcg_engine.h +0 -66
- package/inc/util/random/mersenne.h +0 -46
- package/inc/util/random/mersenne32.h +0 -50
- package/inc/util/random/mersenne64.h +0 -50
- package/inc/util/random/normal.h +0 -38
- package/inc/util/random/random.h +0 -30
- package/inc/util/random/shuffle.h +0 -39
- package/inc/util/str_stl.h +0 -266
- package/inc/util/stream/aligned.h +0 -99
- package/inc/util/stream/buffer.h +0 -119
- package/inc/util/stream/buffered.h +0 -225
- package/inc/util/stream/debug.h +0 -53
- package/inc/util/stream/direct_io.h +0 -43
- package/inc/util/stream/file.h +0 -108
- package/inc/util/stream/format.h +0 -444
- package/inc/util/stream/fwd.h +0 -100
- package/inc/util/stream/hex.h +0 -8
- package/inc/util/stream/holder.h +0 -44
- package/inc/util/stream/input.h +0 -273
- package/inc/util/stream/labeled.h +0 -19
- package/inc/util/stream/length.h +0 -100
- package/inc/util/stream/mem.h +0 -255
- package/inc/util/stream/multi.h +0 -32
- package/inc/util/stream/null.h +0 -61
- package/inc/util/stream/output.h +0 -304
- package/inc/util/stream/pipe.h +0 -112
- package/inc/util/stream/printf.h +0 -25
- package/inc/util/stream/str.h +0 -207
- package/inc/util/stream/tee.h +0 -28
- package/inc/util/stream/tempbuf.h +0 -21
- package/inc/util/stream/tokenizer.h +0 -214
- package/inc/util/stream/trace.h +0 -60
- package/inc/util/stream/walk.h +0 -35
- package/inc/util/stream/zerocopy.h +0 -91
- package/inc/util/stream/zerocopy_output.h +0 -57
- package/inc/util/stream/zlib.h +0 -173
- package/inc/util/string/ascii.h +0 -236
- package/inc/util/string/builder.h +0 -39
- package/inc/util/string/cast.h +0 -347
- package/inc/util/string/cstriter.h +0 -14
- package/inc/util/string/escape.h +0 -70
- package/inc/util/string/hex.h +0 -59
- package/inc/util/string/join.h +0 -194
- package/inc/util/string/printf.h +0 -13
- package/inc/util/string/reverse.h +0 -16
- package/inc/util/string/split.h +0 -1080
- package/inc/util/string/strip.h +0 -257
- package/inc/util/string/strspn.h +0 -65
- package/inc/util/string/subst.h +0 -56
- package/inc/util/string/type.h +0 -50
- package/inc/util/string/util.h +0 -195
- package/inc/util/string/vector.h +0 -132
- package/inc/util/system/align.h +0 -50
- package/inc/util/system/atexit.h +0 -22
- package/inc/util/system/atomic.h +0 -51
- package/inc/util/system/atomic_gcc.h +0 -90
- package/inc/util/system/atomic_ops.h +0 -189
- package/inc/util/system/atomic_win.h +0 -114
- package/inc/util/system/backtrace.h +0 -39
- package/inc/util/system/byteorder.h +0 -186
- package/inc/util/system/compat.h +0 -84
- package/inc/util/system/compiler.h +0 -620
- package/inc/util/system/condvar.h +0 -71
- package/inc/util/system/context.h +0 -181
- package/inc/util/system/context_aarch64.h +0 -8
- package/inc/util/system/context_i686.h +0 -9
- package/inc/util/system/context_x86.h +0 -12
- package/inc/util/system/context_x86_64.h +0 -7
- package/inc/util/system/cpu_id.h +0 -159
- package/inc/util/system/daemon.h +0 -28
- package/inc/util/system/datetime.h +0 -98
- package/inc/util/system/defaults.h +0 -149
- package/inc/util/system/demangle.h +0 -5
- package/inc/util/system/demangle_impl.h +0 -23
- package/inc/util/system/direct_io.h +0 -71
- package/inc/util/system/dynlib.h +0 -119
- package/inc/util/system/env.h +0 -32
- package/inc/util/system/error.h +0 -95
- package/inc/util/system/event.h +0 -122
- package/inc/util/system/execpath.h +0 -17
- package/inc/util/system/fasttime.h +0 -6
- package/inc/util/system/fhandle.h +0 -27
- package/inc/util/system/file.h +0 -210
- package/inc/util/system/file_lock.h +0 -34
- package/inc/util/system/filemap.h +0 -383
- package/inc/util/system/flock.h +0 -35
- package/inc/util/system/fs.h +0 -156
- package/inc/util/system/fs_win.h +0 -29
- package/inc/util/system/fstat.h +0 -46
- package/inc/util/system/getpid.h +0 -12
- package/inc/util/system/guard.h +0 -179
- package/inc/util/system/hi_lo.h +0 -139
- package/inc/util/system/hostname.h +0 -10
- package/inc/util/system/hp_timer.h +0 -36
- package/inc/util/system/info.h +0 -12
- package/inc/util/system/interrupt_signals.h +0 -22
- package/inc/util/system/madvise.h +0 -30
- package/inc/util/system/maxlen.h +0 -32
- package/inc/util/system/mem_info.h +0 -18
- package/inc/util/system/mincore.h +0 -38
- package/inc/util/system/mktemp.h +0 -11
- package/inc/util/system/mlock.h +0 -43
- package/inc/util/system/mutex.h +0 -67
- package/inc/util/system/nice.h +0 -3
- package/inc/util/system/pipe.h +0 -90
- package/inc/util/system/platform.h +0 -246
- package/inc/util/system/progname.h +0 -13
- package/inc/util/system/protect.h +0 -25
- package/inc/util/system/rusage.h +0 -26
- package/inc/util/system/rwlock.h +0 -78
- package/inc/util/system/sanitizers.h +0 -122
- package/inc/util/system/sem.h +0 -41
- package/inc/util/system/shellcommand.h +0 -472
- package/inc/util/system/shmat.h +0 -32
- package/inc/util/system/sigset.h +0 -78
- package/inc/util/system/spin_wait.h +0 -10
- package/inc/util/system/spinlock.h +0 -121
- package/inc/util/system/src_location.h +0 -25
- package/inc/util/system/src_root.h +0 -68
- package/inc/util/system/sys_alloc.h +0 -43
- package/inc/util/system/sysstat.h +0 -52
- package/inc/util/system/tempfile.h +0 -34
- package/inc/util/system/thread.h +0 -167
- package/inc/util/system/tls.h +0 -307
- package/inc/util/system/types.h +0 -119
- package/inc/util/system/unaligned_mem.h +0 -67
- package/inc/util/system/user.h +0 -5
- package/inc/util/system/utime.h +0 -6
- package/inc/util/system/valgrind.h +0 -48
- package/inc/util/system/winint.h +0 -43
- package/inc/util/system/yassert.h +0 -121
- package/inc/util/system/yield.h +0 -4
- package/inc/util/thread/factory.h +0 -65
- package/inc/util/thread/fwd.h +0 -30
- package/inc/util/thread/lfqueue.h +0 -406
- package/inc/util/thread/lfstack.h +0 -188
- package/inc/util/thread/pool.h +0 -388
- package/inc/util/thread/singleton.h +0 -42
- package/inc/util/ysafeptr.h +0 -427
- package/inc/util/ysaveload.h +0 -700
package/inc/util/stream/null.h
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "zerocopy.h"
|
|
4
|
-
#include "output.h"
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @addtogroup Streams
|
|
8
|
-
* @{
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Null input stream. Does nothing, contains no data.
|
|
13
|
-
*/
|
|
14
|
-
class TNullInput: public IZeroCopyInput {
|
|
15
|
-
public:
|
|
16
|
-
TNullInput() noexcept;
|
|
17
|
-
~TNullInput() override;
|
|
18
|
-
|
|
19
|
-
private:
|
|
20
|
-
size_t DoRead(void* buf, size_t len) override;
|
|
21
|
-
size_t DoSkip(size_t len) override;
|
|
22
|
-
size_t DoNext(const void** ptr, size_t len) override;
|
|
23
|
-
};
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Null output stream. Just ignores whatever is written into it.
|
|
27
|
-
*/
|
|
28
|
-
class TNullOutput: public IOutputStream {
|
|
29
|
-
public:
|
|
30
|
-
TNullOutput() noexcept;
|
|
31
|
-
~TNullOutput() override;
|
|
32
|
-
|
|
33
|
-
TNullOutput(TNullOutput&&) noexcept = default;
|
|
34
|
-
TNullOutput& operator=(TNullOutput&&) noexcept = default;
|
|
35
|
-
|
|
36
|
-
private:
|
|
37
|
-
void DoWrite(const void* buf, size_t len) override;
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Null input-output stream.
|
|
42
|
-
*
|
|
43
|
-
* @see TNullInput
|
|
44
|
-
* @see TNullOutput
|
|
45
|
-
*/
|
|
46
|
-
class TNullIO: public TNullInput, public TNullOutput {
|
|
47
|
-
public:
|
|
48
|
-
TNullIO() noexcept;
|
|
49
|
-
~TNullIO() override;
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
namespace NPrivate {
|
|
53
|
-
TNullIO& StdNullStream() noexcept;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Standard null stream.
|
|
58
|
-
*/
|
|
59
|
-
#define Cnull (::NPrivate::StdNullStream())
|
|
60
|
-
|
|
61
|
-
/** @} */
|
package/inc/util/stream/output.h
DELETED
|
@@ -1,304 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "fwd.h"
|
|
4
|
-
#include "labeled.h"
|
|
5
|
-
|
|
6
|
-
#include <util/generic/noncopyable.h>
|
|
7
|
-
#include <util/generic/string.h>
|
|
8
|
-
#include <util/generic/strbuf.h>
|
|
9
|
-
#include <util/generic/typetraits.h>
|
|
10
|
-
|
|
11
|
-
#include <type_traits>
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* @addtogroup Streams_Base
|
|
15
|
-
* @{
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Abstract output stream.
|
|
20
|
-
*/
|
|
21
|
-
class IOutputStream: public TNonCopyable {
|
|
22
|
-
public:
|
|
23
|
-
/**
|
|
24
|
-
* Data block for output.
|
|
25
|
-
*/
|
|
26
|
-
struct TPart {
|
|
27
|
-
inline TPart(const void* Buf, size_t Len) noexcept
|
|
28
|
-
: buf(Buf)
|
|
29
|
-
, len(Len)
|
|
30
|
-
{
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
inline TPart(const TStringBuf s) noexcept
|
|
34
|
-
: buf(s.data())
|
|
35
|
-
, len(s.size())
|
|
36
|
-
{
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
inline TPart() noexcept
|
|
40
|
-
: buf(nullptr)
|
|
41
|
-
, len(0)
|
|
42
|
-
{
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
inline ~TPart() = default;
|
|
46
|
-
|
|
47
|
-
static inline TPart CrLf() noexcept {
|
|
48
|
-
return TPart("\r\n", 2);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const void* buf;
|
|
52
|
-
size_t len;
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
IOutputStream() noexcept;
|
|
56
|
-
virtual ~IOutputStream();
|
|
57
|
-
|
|
58
|
-
IOutputStream(IOutputStream&&) noexcept {
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
IOutputStream& operator=(IOutputStream&&) noexcept {
|
|
62
|
-
return *this;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Writes into this stream.
|
|
67
|
-
*
|
|
68
|
-
* @param buf Data to write.
|
|
69
|
-
* @param len Number of bytes to write.
|
|
70
|
-
*/
|
|
71
|
-
inline void Write(const void* buf, size_t len) {
|
|
72
|
-
if (len) {
|
|
73
|
-
DoWrite(buf, len);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Writes a string into this stream.
|
|
79
|
-
*
|
|
80
|
-
* @param st String to write.
|
|
81
|
-
*/
|
|
82
|
-
inline void Write(const TStringBuf st) {
|
|
83
|
-
Write(st.data(), st.size());
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Writes several data blocks into this stream.
|
|
88
|
-
*
|
|
89
|
-
* @param parts Pointer to the start of the data blocks
|
|
90
|
-
* array.
|
|
91
|
-
* @param count Number of data blocks to write.
|
|
92
|
-
*/
|
|
93
|
-
inline void Write(const TPart* parts, size_t count) {
|
|
94
|
-
if (count > 1) {
|
|
95
|
-
DoWriteV(parts, count);
|
|
96
|
-
} else if (count) {
|
|
97
|
-
DoWrite(parts->buf, parts->len);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Writes a single character into this stream.
|
|
103
|
-
*
|
|
104
|
-
* @param ch Character to write.
|
|
105
|
-
*/
|
|
106
|
-
inline void Write(char ch) {
|
|
107
|
-
DoWriteC(ch);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Flushes this stream's buffer, if any.
|
|
112
|
-
*
|
|
113
|
-
* Note that this can also be done with a `Flush` manipulator:
|
|
114
|
-
* @code
|
|
115
|
-
* stream << "some string" << Flush;
|
|
116
|
-
* @endcode
|
|
117
|
-
*/
|
|
118
|
-
inline void Flush() {
|
|
119
|
-
DoFlush();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Flushes and closes this stream. No more data can be written into a stream
|
|
124
|
-
* once it's closed.
|
|
125
|
-
*/
|
|
126
|
-
inline void Finish() {
|
|
127
|
-
DoFinish();
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
protected:
|
|
131
|
-
/**
|
|
132
|
-
* Writes into this stream.
|
|
133
|
-
*
|
|
134
|
-
* @param buf Data to write.
|
|
135
|
-
* @param len Number of bytes to write.
|
|
136
|
-
* @throws yexception If IO error occurs.
|
|
137
|
-
*/
|
|
138
|
-
virtual void DoWrite(const void* buf, size_t len) = 0;
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Writes several data blocks into this stream.
|
|
142
|
-
*
|
|
143
|
-
* @param parts Pointer to the start of the data blocks
|
|
144
|
-
* array.
|
|
145
|
-
* @param count Number of data blocks to write.
|
|
146
|
-
* @throws yexception If IO error occurs.
|
|
147
|
-
*/
|
|
148
|
-
virtual void DoWriteV(const TPart* parts, size_t count);
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Writes a single character into this stream. Can be overridden with a faster implementation.
|
|
152
|
-
*
|
|
153
|
-
* @param ch Character to write.
|
|
154
|
-
*/
|
|
155
|
-
virtual void DoWriteC(char ch);
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Flushes this stream's buffer, if any.
|
|
159
|
-
*
|
|
160
|
-
* @throws yexception If IO error occurs.
|
|
161
|
-
*/
|
|
162
|
-
virtual void DoFlush();
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Flushes and closes this stream. No more data can be written into a stream
|
|
166
|
-
* once it's closed.
|
|
167
|
-
*
|
|
168
|
-
* @throws yexception If IO error occurs.
|
|
169
|
-
*/
|
|
170
|
-
virtual void DoFinish();
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* `operator<<` for `IOutputStream` by default delegates to this function.
|
|
175
|
-
*
|
|
176
|
-
* Note that while `operator<<` uses overloading (and thus argument-dependent
|
|
177
|
-
* lookup), `Out` uses template specializations. This makes it possible to
|
|
178
|
-
* have a single `Out` declaration, and then just provide specializations in
|
|
179
|
-
* cpp files, letting the linker figure everything else out. This approach
|
|
180
|
-
* reduces compilation times.
|
|
181
|
-
*
|
|
182
|
-
* However, if the flexibility of overload resolution is needed, then one should
|
|
183
|
-
* just overload `operator<<`.
|
|
184
|
-
*
|
|
185
|
-
* @param out Output stream to write into.
|
|
186
|
-
* @param value Value to write.
|
|
187
|
-
*/
|
|
188
|
-
template <class T>
|
|
189
|
-
void Out(IOutputStream& out, typename TTypeTraits<T>::TFuncParam value);
|
|
190
|
-
|
|
191
|
-
#define Y_DECLARE_OUT_SPEC(MODIF, T, stream, value) \
|
|
192
|
-
template <> \
|
|
193
|
-
MODIF void Out<T>(IOutputStream & stream, TTypeTraits<T>::TFuncParam value)
|
|
194
|
-
|
|
195
|
-
template <>
|
|
196
|
-
inline void Out<const char*>(IOutputStream& o, const char* t) {
|
|
197
|
-
if (t) {
|
|
198
|
-
o.Write(t);
|
|
199
|
-
} else {
|
|
200
|
-
o.Write("(null)");
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
template <>
|
|
205
|
-
void Out<const wchar16*>(IOutputStream& o, const wchar16* w);
|
|
206
|
-
|
|
207
|
-
template <>
|
|
208
|
-
void Out<const wchar32*>(IOutputStream& o, const wchar32* w);
|
|
209
|
-
|
|
210
|
-
static inline IOutputStream& operator<<(IOutputStream& o, TStreamManipulator m) {
|
|
211
|
-
m(o);
|
|
212
|
-
|
|
213
|
-
return o;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
static inline IOutputStream& operator<<(IOutputStream& o, const char* t) {
|
|
217
|
-
Out<const char*>(o, t);
|
|
218
|
-
|
|
219
|
-
return o;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
static inline IOutputStream& operator<<(IOutputStream& o, char* t) {
|
|
223
|
-
Out<const char*>(o, t);
|
|
224
|
-
|
|
225
|
-
return o;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
template <class T>
|
|
229
|
-
static inline std::enable_if_t<std::is_scalar<T>::value, IOutputStream&> operator<<(IOutputStream& o, T t) {
|
|
230
|
-
Out<T>(o, t);
|
|
231
|
-
|
|
232
|
-
return o;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
template <class T>
|
|
236
|
-
static inline std::enable_if_t<!std::is_scalar<T>::value, IOutputStream&> operator<<(IOutputStream& o, const T& t) {
|
|
237
|
-
Out<T>(o, t);
|
|
238
|
-
|
|
239
|
-
return o;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
static inline IOutputStream& operator<<(IOutputStream& o, const wchar16* t) {
|
|
243
|
-
Out<const wchar16*>(o, t);
|
|
244
|
-
return o;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
static inline IOutputStream& operator<<(IOutputStream& o, wchar16* t) {
|
|
248
|
-
Out<const wchar16*>(o, t);
|
|
249
|
-
return o;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
static inline IOutputStream& operator<<(IOutputStream& o, const wchar32* t) {
|
|
253
|
-
Out<const wchar32*>(o, t);
|
|
254
|
-
return o;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
static inline IOutputStream& operator<<(IOutputStream& o, wchar32* t) {
|
|
258
|
-
Out<const wchar32*>(o, t);
|
|
259
|
-
return o;
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
namespace NPrivate {
|
|
263
|
-
IOutputStream& StdOutStream() noexcept;
|
|
264
|
-
IOutputStream& StdErrStream() noexcept;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Standard output stream.
|
|
269
|
-
*/
|
|
270
|
-
#define Cout (::NPrivate::StdOutStream())
|
|
271
|
-
|
|
272
|
-
/**
|
|
273
|
-
* Standard error stream.
|
|
274
|
-
*/
|
|
275
|
-
#define Cerr (::NPrivate::StdErrStream())
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Standard log stream.
|
|
279
|
-
*/
|
|
280
|
-
#define Clog Cerr
|
|
281
|
-
|
|
282
|
-
/**
|
|
283
|
-
* End-of-line output manipulator, basically the same as `std::endl`.
|
|
284
|
-
*/
|
|
285
|
-
static inline void Endl(IOutputStream& o) {
|
|
286
|
-
(o << '\n').Flush();
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Flushing stream manipulator, basically the same as `std::flush`.
|
|
291
|
-
*/
|
|
292
|
-
static inline void Flush(IOutputStream& o) {
|
|
293
|
-
o.Flush();
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
/*
|
|
297
|
-
* Also see format.h for additional manipulators.
|
|
298
|
-
*/
|
|
299
|
-
|
|
300
|
-
#include "debug.h"
|
|
301
|
-
|
|
302
|
-
void RedirectStdioToAndroidLog(bool redirect);
|
|
303
|
-
|
|
304
|
-
/** @} */
|
package/inc/util/stream/pipe.h
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "input.h"
|
|
4
|
-
#include "output.h"
|
|
5
|
-
|
|
6
|
-
#include <util/system/pipe.h>
|
|
7
|
-
#include <util/generic/ptr.h>
|
|
8
|
-
#include <util/generic/string.h>
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @addtogroup Streams_Pipes
|
|
12
|
-
* @{
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Base class for starting a process and communicating with it via pipes.
|
|
17
|
-
*/
|
|
18
|
-
class TPipeBase {
|
|
19
|
-
protected:
|
|
20
|
-
/**
|
|
21
|
-
* Starts a new process and opens a pipe.
|
|
22
|
-
*
|
|
23
|
-
* @param command Command line to start a process with.
|
|
24
|
-
* @param mode Data transfer mode for the pipe. Use
|
|
25
|
-
* "r" for reading and "w" for writing.
|
|
26
|
-
*/
|
|
27
|
-
TPipeBase(const TString& command, const char* mode);
|
|
28
|
-
virtual ~TPipeBase();
|
|
29
|
-
|
|
30
|
-
protected:
|
|
31
|
-
class TImpl;
|
|
32
|
-
THolder<TImpl> Impl_;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Input stream that binds to a standard output stream of a newly started process.
|
|
37
|
-
*
|
|
38
|
-
* Note that if the process ends with non-zero exit status, `Read` function will
|
|
39
|
-
* throw an exception.
|
|
40
|
-
*/
|
|
41
|
-
class TPipeInput: protected TPipeBase, public IInputStream {
|
|
42
|
-
public:
|
|
43
|
-
/**
|
|
44
|
-
* Starts a new process and opens a pipe.
|
|
45
|
-
*
|
|
46
|
-
* @param command Command line to start a process with.
|
|
47
|
-
*/
|
|
48
|
-
TPipeInput(const TString& command);
|
|
49
|
-
|
|
50
|
-
private:
|
|
51
|
-
size_t DoRead(void* buf, size_t len) override;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Output stream that binds to a standard input stream of a newly started process.
|
|
56
|
-
*
|
|
57
|
-
* Note that if the process ends with non-zero exit status, `Close` function will
|
|
58
|
-
* throw an exception.
|
|
59
|
-
*/
|
|
60
|
-
class TPipeOutput: protected TPipeBase, public IOutputStream {
|
|
61
|
-
public:
|
|
62
|
-
/**
|
|
63
|
-
* Starts a new process and opens a pipe.
|
|
64
|
-
*
|
|
65
|
-
* @param command Command line to start a process with.
|
|
66
|
-
*/
|
|
67
|
-
TPipeOutput(const TString& command);
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* Waits for the process to terminate and throws an exception if it ended
|
|
71
|
-
* with a non-zero exit status.
|
|
72
|
-
*/
|
|
73
|
-
void Close();
|
|
74
|
-
|
|
75
|
-
private:
|
|
76
|
-
void DoWrite(const void* buf, size_t len) override;
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
class TPipedBase {
|
|
80
|
-
protected:
|
|
81
|
-
TPipedBase(PIPEHANDLE fd);
|
|
82
|
-
virtual ~TPipedBase();
|
|
83
|
-
|
|
84
|
-
protected:
|
|
85
|
-
TPipeHandle Handle_;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Input stream that binds to a standard output stream of an existing process.
|
|
90
|
-
*/
|
|
91
|
-
class TPipedInput: public TPipedBase, public IInputStream {
|
|
92
|
-
public:
|
|
93
|
-
TPipedInput(PIPEHANDLE fd);
|
|
94
|
-
~TPipedInput() override;
|
|
95
|
-
|
|
96
|
-
private:
|
|
97
|
-
size_t DoRead(void* buf, size_t len) override;
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Output stream that binds to a standard input stream of an existing process.
|
|
102
|
-
*/
|
|
103
|
-
class TPipedOutput: public TPipedBase, public IOutputStream {
|
|
104
|
-
public:
|
|
105
|
-
TPipedOutput(PIPEHANDLE fd);
|
|
106
|
-
~TPipedOutput() override;
|
|
107
|
-
|
|
108
|
-
private:
|
|
109
|
-
void DoWrite(const void* buf, size_t len) override;
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
/** @} */
|
package/inc/util/stream/printf.h
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <util/system/compat.h>
|
|
4
|
-
|
|
5
|
-
class IOutputStream;
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Stream-based `printf` function. Prints formatted data into the provided stream.
|
|
9
|
-
* Works the same way as a standard C `printf`.
|
|
10
|
-
*
|
|
11
|
-
* @param out Stream to write into.
|
|
12
|
-
* @param fmt Format string.
|
|
13
|
-
* @param ... Additional arguments.
|
|
14
|
-
*/
|
|
15
|
-
size_t Y_PRINTF_FORMAT(2, 3) Printf(IOutputStream& out, const char* fmt, ...);
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Stream-based `vprintf` function. Prints formatted data from variable argument
|
|
19
|
-
* list into the provided stream. Works the same way as a standard C `vprintf`.
|
|
20
|
-
*
|
|
21
|
-
* @param out Stream to write into.
|
|
22
|
-
* @param fmt Format string.
|
|
23
|
-
* @param params Additional arguments as a variable argument list.
|
|
24
|
-
*/
|
|
25
|
-
size_t Y_PRINTF_FORMAT(2, 0) Printf(IOutputStream& out, const char* fmt, va_list params);
|
package/inc/util/stream/str.h
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include "zerocopy.h"
|
|
4
|
-
#include "zerocopy_output.h"
|
|
5
|
-
|
|
6
|
-
#include <util/generic/string.h>
|
|
7
|
-
#include <util/generic/noncopyable.h>
|
|
8
|
-
#include <util/generic/store_policy.h>
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @addtogroup Streams_Strings
|
|
12
|
-
* @{
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Input stream for reading data from a string.
|
|
17
|
-
*/
|
|
18
|
-
class TStringInput: public IZeroCopyInputFastReadTo {
|
|
19
|
-
public:
|
|
20
|
-
/**
|
|
21
|
-
* Constructs a string input stream that reads character data from the
|
|
22
|
-
* provided string.
|
|
23
|
-
*
|
|
24
|
-
* Note that this stream keeps a reference to the provided string, so it's
|
|
25
|
-
* up to the user to make sure that the string doesn't get destroyed while
|
|
26
|
-
* this stream is in use.
|
|
27
|
-
*
|
|
28
|
-
* For reading data from `TStringBuf`s, see `TMemoryInput` (`util/stream/mem.h`).
|
|
29
|
-
*
|
|
30
|
-
* @param s String to read from.
|
|
31
|
-
*/
|
|
32
|
-
inline TStringInput(const TString& s) noexcept
|
|
33
|
-
: S_(&s)
|
|
34
|
-
, Pos_(0)
|
|
35
|
-
{
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
TStringInput(const TString&&) = delete;
|
|
39
|
-
|
|
40
|
-
~TStringInput() override;
|
|
41
|
-
|
|
42
|
-
TStringInput(TStringInput&&) noexcept = default;
|
|
43
|
-
TStringInput& operator=(TStringInput&&) noexcept = default;
|
|
44
|
-
|
|
45
|
-
protected:
|
|
46
|
-
size_t DoNext(const void** ptr, size_t len) override;
|
|
47
|
-
void DoUndo(size_t len) override;
|
|
48
|
-
|
|
49
|
-
private:
|
|
50
|
-
const TString* S_;
|
|
51
|
-
size_t Pos_;
|
|
52
|
-
|
|
53
|
-
friend class TStringStream;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Stream for writing data into a string.
|
|
58
|
-
*/
|
|
59
|
-
class TStringOutput: public IZeroCopyOutput {
|
|
60
|
-
public:
|
|
61
|
-
/**
|
|
62
|
-
* Constructs a string output stream that appends character data to the
|
|
63
|
-
* provided string.
|
|
64
|
-
*
|
|
65
|
-
* Note that this stream keeps a reference to the provided string, so it's
|
|
66
|
-
* up to the user to make sure that the string doesn't get destroyed while
|
|
67
|
-
* this stream is in use.
|
|
68
|
-
*
|
|
69
|
-
* @param s String to append to.
|
|
70
|
-
*/
|
|
71
|
-
inline TStringOutput(TString& s) noexcept
|
|
72
|
-
: S_(s)
|
|
73
|
-
{
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
TStringOutput(TStringOutput&& s) noexcept = default;
|
|
77
|
-
|
|
78
|
-
~TStringOutput() override;
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* @param size Number of additional characters to
|
|
82
|
-
* reserve in output string.
|
|
83
|
-
*/
|
|
84
|
-
inline void Reserve(size_t size) {
|
|
85
|
-
S_.reserve(S_.size() + size);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
protected:
|
|
89
|
-
size_t DoNext(void** ptr) override;
|
|
90
|
-
void DoUndo(size_t len) override;
|
|
91
|
-
void DoWrite(const void* buf, size_t len) override;
|
|
92
|
-
void DoWriteC(char c) override;
|
|
93
|
-
|
|
94
|
-
private:
|
|
95
|
-
TString& S_;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* String input/output stream, similar to `std::stringstream`.
|
|
100
|
-
*/
|
|
101
|
-
class TStringStream: private TEmbedPolicy<TString>, public TStringInput, public TStringOutput {
|
|
102
|
-
using TEmbeddedString = TEmbedPolicy<TString>;
|
|
103
|
-
|
|
104
|
-
public:
|
|
105
|
-
inline TStringStream()
|
|
106
|
-
: TEmbeddedString()
|
|
107
|
-
, TStringInput(*TEmbeddedString::Ptr())
|
|
108
|
-
, TStringOutput(*TEmbeddedString::Ptr())
|
|
109
|
-
{
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
inline TStringStream(const TString& string)
|
|
113
|
-
: TEmbeddedString(string)
|
|
114
|
-
, TStringInput(*TEmbeddedString::Ptr())
|
|
115
|
-
, TStringOutput(*TEmbeddedString::Ptr())
|
|
116
|
-
{
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
inline TStringStream(const TStringStream& other)
|
|
120
|
-
: TEmbeddedString(other.Str())
|
|
121
|
-
, TStringInput(*TEmbeddedString::Ptr())
|
|
122
|
-
, TStringOutput(*TEmbeddedString::Ptr())
|
|
123
|
-
{
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
inline TStringStream& operator=(const TStringStream& other) {
|
|
127
|
-
// All references remain alive, we need to change position only
|
|
128
|
-
Str() = other.Str();
|
|
129
|
-
Pos_ = other.Pos_;
|
|
130
|
-
return *this;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
~TStringStream() override;
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* @returns Whether @c this contains any data
|
|
137
|
-
*/
|
|
138
|
-
explicit operator bool() const noexcept {
|
|
139
|
-
return !Empty();
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* @returns String that this stream is writing into.
|
|
144
|
-
*/
|
|
145
|
-
inline TString& Str() noexcept {
|
|
146
|
-
return *Ptr();
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* @returns String that this stream is writing into.
|
|
151
|
-
*/
|
|
152
|
-
inline const TString& Str() const noexcept {
|
|
153
|
-
return *Ptr();
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* @returns Pointer to the character data contained
|
|
158
|
-
* in this stream. The data is guaranteed
|
|
159
|
-
* to be null-terminated.
|
|
160
|
-
*/
|
|
161
|
-
inline const char* Data() const noexcept {
|
|
162
|
-
return Ptr()->data();
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* @returns Total number of characters in this
|
|
167
|
-
* stream. Note that this is not the same
|
|
168
|
-
* as the total number of characters
|
|
169
|
-
* available for reading.
|
|
170
|
-
*/
|
|
171
|
-
inline size_t Size() const noexcept {
|
|
172
|
-
return Ptr()->size();
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* @returns Whether the string that this stream
|
|
177
|
-
* operates on is empty.
|
|
178
|
-
*/
|
|
179
|
-
Y_PURE_FUNCTION
|
|
180
|
-
inline bool Empty() const noexcept {
|
|
181
|
-
return Str().empty();
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
using TStringOutput::Reserve;
|
|
185
|
-
|
|
186
|
-
/**
|
|
187
|
-
* Clears the string that this stream operates on and resets the
|
|
188
|
-
* read/write pointers.
|
|
189
|
-
*/
|
|
190
|
-
inline void Clear() {
|
|
191
|
-
Str().clear();
|
|
192
|
-
Pos_ = 0;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
// TODO: compatibility with existing code, remove
|
|
196
|
-
|
|
197
|
-
Y_PURE_FUNCTION
|
|
198
|
-
bool empty() const {
|
|
199
|
-
return Empty();
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
void clear() {
|
|
203
|
-
Clear();
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
|
|
207
|
-
/** @} */
|