127 write(r); |
127 write(r); |
128 position.push_back(position.back()); |
128 position.push_back(position.back()); |
129 } |
129 } |
130 |
130 |
131 void writeStreamEnd() override { |
131 void writeStreamEnd() override { |
|
132 Record r(nullptr, position, L"stream-end"); |
|
133 write(r); |
|
134 |
132 auto id = position.back() + 1; |
135 auto id = position.back() + 1; |
133 position.pop_back(); |
136 position.pop_back(); |
134 position.back() = id; |
137 position.back() = id; |
135 // TODO: put end event under the start parent? |
|
136 Record r(nullptr, position, L"stream-end"); |
|
137 write(r); |
|
138 } |
138 } |
139 |
139 |
140 void writeCollectionStart(const Header& header) override { |
140 void writeCollectionStart(const Header& header) override { |
141 position.back()++; |
141 position.back()++; |
142 Record r(&header, position, L"collection-start"); |
142 Record r(&header, position, L"collection-start"); |
143 write(r); |
143 write(r); |
144 position.push_back(position.back()); |
144 position.push_back(position.back()); |
145 } |
145 } |
146 |
146 |
147 void writeCollectionEnd() override { |
147 void writeCollectionEnd() override { |
|
148 Record r(nullptr, position, L"collection-end"); |
|
149 write(r); |
|
150 |
148 auto id = position.back() + 1; |
151 auto id = position.back() + 1; |
149 position.pop_back(); |
152 position.pop_back(); |
150 position.back() = id; |
153 position.back() = id; |
151 // TODO: put end event under the start parent? |
|
152 Record r(nullptr, position, L"collection-end"); |
|
153 write(r); |
|
154 } |
154 } |
155 |
155 |
156 void writeBitString(const Header& header, std::vector<bool> value) override { |
156 void writeBitString(const Header& header, std::vector<bool> value) override { |
157 std::stringstream bits; |
157 std::stringstream bits; |
158 for (bool b : value) bits << (int) b; |
158 for (bool b : value) bits << (int) b; |