MCPcopy Create free account
hub / github.com/4paradigm/OpenMLDB / Build

Method Build

src/codec/flat_array.h:197–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

195 }
196
197 void Build() {
198 buffer_->resize(GetSize());
199 char* cbuffer = reinterpret_cast<char*>(&((*buffer_)[0]));
200 if (col_cnt_ - modify_times_ >= 128) {
201 if (modify_times_ > 0) {
202 uint16_t modify_count = (uint16_t)(modify_times_ | 0x8000);
203 memcpy(cbuffer, static_cast<const void*>(&modify_count), 2);
204 } else {
205 memcpy(cbuffer, static_cast<const void*>(&col_cnt_), 2);
206 }
207 memrev16ifbe(static_cast<void*>(cbuffer));
208 cbuffer += 2;
209 } else {
210 if (modify_times_ > 0) {
211 uint8_t modify_count = (uint8_t)(modify_times_ | 0x80);
212 memcpy(cbuffer, static_cast<const void*>(&modify_count), 1);
213 } else {
214 uint8_t col_cnt_tmp = (uint8_t)col_cnt_;
215 memcpy(cbuffer, static_cast<const void*>(&col_cnt_tmp), 1);
216 }
217 cbuffer += 1;
218 }
219 std::vector<Column>::iterator it = datas_.begin();
220 for (; it != datas_.end(); ++it) {
221 Column& col = *it;
222 memcpy(cbuffer, static_cast<const void*>(&col.type), 1);
223 cbuffer += 1;
224 uint16_t buffer_size = (uint16_t)col.buffer.size();
225 if (buffer_size < 128) {
226 uint8_t size_value = (uint8_t)buffer_size;
227 memcpy(cbuffer, static_cast<const void*>(&size_value), 1);
228 cbuffer += 1;
229 } else {
230 uint8_t first_value = (uint8_t)(buffer_size >> 8 | 0x80);
231 uint8_t second_value = (uint8_t)(buffer_size & 0xFF);
232 memcpy(cbuffer, static_cast<const void*>(&first_value), 1);
233 cbuffer += 1;
234 memcpy(cbuffer, static_cast<const void*>(&second_value), 1);
235 cbuffer += 1;
236 }
237 if (!col.buffer.empty()) {
238 memcpy(cbuffer, static_cast<const void*>(col.buffer.c_str()),
239 col.buffer.size());
240 }
241 cbuffer += col.buffer.size();
242 }
243 }
244
245 private:
246 uint32_t GetSize() {

Callers 2

EncodeRowMethod · 0.45
TEST_FFunction · 0.45

Calls 2

sizeMethod · 0.45
emptyMethod · 0.45

Tested by 1

TEST_FFunction · 0.36