67 lines
2.1 KiB
Python
Executable File
67 lines
2.1 KiB
Python
Executable File
"""LCM type definitions This file automatically generated by lcm.
|
|
struct file_send_lcmt {
|
|
string data;
|
|
}
|
|
"""
|
|
try:
|
|
import cStringIO.StringIO as BytesIO
|
|
except ImportError:
|
|
from io import BytesIO
|
|
import struct
|
|
|
|
class file_send_lcmt(object):
|
|
__slots__ = ["data"]
|
|
|
|
__typenames__ = ["string"]
|
|
|
|
__dimensions__ = [None]
|
|
|
|
def __init__(self):
|
|
self.data = ""
|
|
|
|
def encode(self):
|
|
buf = BytesIO()
|
|
buf.write(file_send_lcmt._get_packed_fingerprint())
|
|
self._encode_one(buf)
|
|
return buf.getvalue()
|
|
|
|
def _encode_one(self, buf):
|
|
__data_encoded = self.data.encode('utf-8')
|
|
buf.write(struct.pack('>I', len(__data_encoded)+1))
|
|
buf.write(__data_encoded)
|
|
buf.write(b"\0")
|
|
|
|
def decode(data):
|
|
if hasattr(data, 'read'):
|
|
buf = data
|
|
else:
|
|
buf = BytesIO(data)
|
|
if buf.read(8) != file_send_lcmt._get_packed_fingerprint():
|
|
raise ValueError("Decode error")
|
|
return file_send_lcmt._decode_one(buf)
|
|
decode = staticmethod(decode)
|
|
|
|
def _decode_one(buf):
|
|
self = file_send_lcmt()
|
|
__data_len = struct.unpack('>I', buf.read(4))[0]
|
|
self.data = buf.read(__data_len)[:-1].decode('utf-8', 'replace')
|
|
return self
|
|
_decode_one = staticmethod(_decode_one)
|
|
|
|
def _get_hash_recursive(parents):
|
|
if file_send_lcmt in parents: return 0
|
|
tmphash = (0x90df9b84cdceaf0a) & 0xffffffffffffffff
|
|
tmphash = (((tmphash<<1)&0xffffffffffffffff) + (tmphash>>63)) & 0xffffffffffffffff
|
|
return tmphash
|
|
_get_hash_recursive = staticmethod(_get_hash_recursive)
|
|
_packed_fingerprint = None
|
|
|
|
def _get_packed_fingerprint():
|
|
if file_send_lcmt._packed_fingerprint is None:
|
|
file_send_lcmt._packed_fingerprint = struct.pack(">Q", file_send_lcmt._get_hash_recursive([]))
|
|
return file_send_lcmt._packed_fingerprint
|
|
_get_packed_fingerprint = staticmethod(_get_packed_fingerprint)
|
|
|
|
def get_hash(self):
|
|
"""Get the LCM hash of the struct"""
|
|
return struct.unpack(">Q", file_send_lcmt._get_packed_fingerprint())[0] |