def encode_to_stream(self, value, out_stream: OutputStream): out_stream.write_int32(len(value)) for elem in value: if elem is None: out_stream.write_byte(False) else: out_stream.write_byte(True) self._elem_coder.encode_to_stream(elem, out_stream)
def encode_to_stream(self, value: List, out_stream: OutputStream): for item in value: self._field_coder.encode_to_stream(item, self._data_out_stream) self._write_data_to_output_stream(out_stream) # write end message if self._separated_with_end_message: out_stream.write_var_int64(1) out_stream.write_byte(0x00)
def encode_to_stream(self, map_value, out_stream: OutputStream): out_stream.write_int32(len(map_value)) for key in map_value: self._key_coder.encode_to_stream(key, out_stream) value = map_value[key] if value is None: out_stream.write_byte(True) else: out_stream.write_byte(False) self._value_coder.encode_to_stream(map_value[key], out_stream)
def write_mask(self, value, row_kind_value, out_stream: OutputStream): field_pos = 0 null_byte_search_table = self.null_byte_search_table remaining_bits_num = self._remaining_bits_num # first byte contains the row kind bits b = self.row_kind_search_table[row_kind_value] for i in range(0, 8 - ROW_KIND_BIT_SIZE): if field_pos + i < len(value) and value[field_pos + i] is None: b |= null_byte_search_table[i + ROW_KIND_BIT_SIZE] field_pos += 8 - ROW_KIND_BIT_SIZE out_stream.write_byte(b) for _ in range(1, self._leading_complete_bytes_num): b = 0x00 for i in range(0, 8): if value[field_pos + i] is None: b |= null_byte_search_table[i] field_pos += 8 out_stream.write_byte(b) if self._leading_complete_bytes_num >= 1 and remaining_bits_num: b = 0x00 for i in range(remaining_bits_num): if value[field_pos + i] is None: b |= null_byte_search_table[i] out_stream.write_byte(b)
def encode_to_stream(self, value, out_stream: OutputStream): out_stream.write_byte(0)