added iOS source code
[wl-app.git] / iOS / Pods / Realm / include / core / realm / impl / output_stream.hpp
1 /*************************************************************************
2  *
3  * Copyright 2016 Realm Inc.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  **************************************************************************/
18
19 #ifndef REALM_IMPL_OUTPUT_STREAM_HPP
20 #define REALM_IMPL_OUTPUT_STREAM_HPP
21
22 #include <cstddef>
23 #include <ostream>
24
25 #include <cstdint>
26
27 #include <realm/util/features.h>
28
29 #include <realm/impl/array_writer.hpp>
30
31 namespace realm {
32 namespace _impl {
33
34
35 class OutputStream : public ArrayWriterBase {
36 public:
37     OutputStream(std::ostream&);
38     ~OutputStream() noexcept;
39
40     ref_type get_ref_of_next_array() const noexcept;
41
42     void write(const char* data, size_t size);
43
44     ref_type write_array(const char* data, size_t size, uint32_t checksum) override;
45
46 private:
47     ref_type m_next_ref;
48     std::ostream& m_out;
49
50     void do_write(const char* data, size_t size);
51 };
52
53
54 // Implementation:
55
56 inline OutputStream::OutputStream(std::ostream& out)
57     : m_next_ref(0)
58     , m_out(out)
59 {
60 }
61
62 inline OutputStream::~OutputStream() noexcept
63 {
64 }
65
66 inline size_t OutputStream::get_ref_of_next_array() const noexcept
67 {
68     return m_next_ref;
69 }
70
71
72 } // namespace _impl
73 } // namespace realm
74
75 #endif // REALM_IMPL_OUTPUT_STREAM_HPP