MCPcopy Create free account
hub / github.com/e2wugui/zeze / write_string

Method write_string

python/zeze/buffer.py:836–870  ·  view source on GitHub ↗
(self, s)

Source from the content-addressed store, hash-verified

834 return bn
835
836 def write_string(self, s):
837 bn = ByteBuffer.utf8_size(s)
838 if bn <= 0:
839 self.write_byte(0)
840 return
841 self.write_uint(bn)
842 self.ensure_write(bn)
843 buf = self.buf
844 wi = self.wi
845 if bn == len(s):
846 for c in s:
847 buf[wi] = ord(c)
848 wi += 1
849 else:
850 for c in s:
851 v = ord(c)
852 if v < 0x80:
853 buf[wi] = v
854 wi += 1
855 elif v < 0x800:
856 buf[wi] = 0xc0 + (v >> 6)
857 buf[wi + 1] = 0x80 + (v & 0x3f)
858 wi += 2
859 elif v < 0x10000:
860 buf[wi] = 0xe0 + (v >> 12)
861 buf[wi + 1] = 0x80 + ((v >> 6) & 0x3f)
862 buf[wi + 2] = 0x80 + (v & 0x3f)
863 wi += 3
864 else:
865 buf[wi] = 0xf0 + (v >> 18)
866 buf[wi + 1] = 0x80 + ((v >> 12) & 0x3f)
867 buf[wi + 2] = 0x80 + ((v >> 6) & 0x3f)
868 buf[wi + 3] = 0x80 + (v & 0x3f)
869 wi += 4
870 self.wi = wi
871
872 def read_string(self):
873 n = self.read_uint()

Callers 1

test_bytesMethod · 0.95

Calls 4

write_byteMethod · 0.95
write_uintMethod · 0.95
ensure_writeMethod · 0.95
utf8_sizeMethod · 0.80

Tested by 1

test_bytesMethod · 0.76