def __serialize_morph_rule(res: io.IOBase, r: 'MorphRule') -> None: MorphSerializeHelper.__serialize_short(res, r._id0_) for v in r.variants.items(): MorphSerializeHelper.__serialize_string(res, v[0]) for m in v[1]: MorphSerializeHelper.__serialize_morph_rule_variant(res, m) MorphSerializeHelper.__serialize_short(res, 0) Utils.writeByteIO(res, 0xFF)
def serialize(self, stream : io.IOBase) -> None: Utils.writeByteIO(stream, 0xAA) Utils.writeByteIO(stream, 1) self.__m_sofa.serialize(stream) SerializerHelper.serializeInt(stream, self.base_language.value) if (len(self.__m_entities) == 0): for d in self.__m_datas.items(): self.__m_entities.extend(d[1].referents) SerializerHelper.serializeInt(stream, len(self.__m_entities)) i = 0 while i < len(self.__m_entities): self.__m_entities[i].tag = i + 1 SerializerHelper.serializeString(stream, self.__m_entities[i].type_name) i += 1 for e0_ in self.__m_entities: e0_.serialize(stream) SerializerHelper.serializeTokens(stream, self.first_token, 0)
def __serialize_string(res: io.IOBase, s: str) -> None: if (s is None): Utils.writeByteIO(res, 0xFF) elif (len(s) == 0): Utils.writeByteIO(res, 0) else: data = s.encode("UTF-8", 'ignore') Utils.writeByteIO(res, len(data)) Utils.writeIO(res, data, 0, len(data))
def __serialize_int(res: io.IOBase, val: int) -> None: Utils.writeByteIO(res, val) Utils.writeByteIO(res, (val >> 8)) Utils.writeByteIO(res, (val >> 16)) Utils.writeByteIO(res, (val >> 24))
def __serialize_byte(res: io.IOBase, val: int) -> None: Utils.writeByteIO(res, val)
def __serialize_morph_misc_info(res: io.IOBase, mi: 'MorphMiscInfo') -> None: MorphSerializeHelper.__serialize_short(res, mi._m_value) for a in mi.attrs: MorphSerializeHelper.__serialize_string(res, a) Utils.writeByteIO(res, 0xFF)
def __serializeShort(res: io.IOBase, val: int) -> None: Utils.writeByteIO(res, val) Utils.writeByteIO(res, (val >> 8))