def encode_string(self, string): """Encode a string type.""" data = bytearray(string, "UTF-8") buff = bytearray() buff.extend(varint.encode_unsigned(len(data))) buff.extend(data) return buff
def encode_double_array(self, value): """Encode an array of double values.""" if not isinstance(value, list): raise TypeError("value is not an array") buff = bytearray() buff.extend(varint.encode_unsigned(len(value))) for elem in value: if not isinstance(elem, float): raise TypeError("array element is not a float/double") buff.extend(self.encode_double(elem)) return buff
def encode_int_array(self, value): """Encode an array of integer values.""" if not isinstance(value, list): raise TypeError("value is not an array") buff = bytearray() buff.extend(varint.encode_unsigned(len(value))) for elem in value: if not isinstance(elem, int): raise TypeError("array element is not an integer") buff.extend(self.encode_int(elem)) return buff
def encode_boolean_array(value): """Encode an array of boolean values.""" if not isinstance(value, list): raise TypeError("value is not an array") buff = bytearray() buff.extend(varint.encode_unsigned(len(value))) for elem in value: if not isinstance(elem, bool): raise TypeError("array element is not a boolean") buff.extend(encode_boolean(elem)) return buff
def encode_int(self, value): """Encode an integer type.""" return varint.encode_unsigned(value)