[docs]classSerializable:""" The base class of all protobuf-serializable classes in angr. """__slots__=()@classmethoddef_get_cmsg(cls):""" Get a cmessage object. :return: The correct cmessage object. """raiseNotImplementedError()
[docs]defserialize_to_cmessage(self):""" Serialize the class object and returns a protobuf cmessage object. :return: A protobuf cmessage object. :rtype: protobuf.cmessage """raiseNotImplementedError()
[docs]defserialize(self):""" Serialize the class object and returns a bytes object. :return: A bytes object. :rtype: bytes """returnself.serialize_to_cmessage().SerializeToString()
[docs]@classmethoddefparse_from_cmessage(cls,cmsg,**kwargs):""" Parse a protobuf cmessage and create a class object. :param cmsg: The probobuf cmessage object. :return: A unserialized class object. :rtype: cls """raiseNotImplementedError()
[docs]@classmethoddefparse(cls,s,**kwargs):""" Parse a bytes object and create a class object. :param bytes s: A bytes object. :return: A class object. :rtype: cls """pb2_obj=cls._get_cmsg()pb2_obj.ParseFromString(s)returncls.parse_from_cmessage(pb2_obj,**kwargs)