blob: 695cce6de531d74fb17097f1c3ef886d8e671441 [file] [log] [blame]
:: from loxi_ir import *
:: import py_gen.oftype
:: normal_members = [m for m in ofclass.members if type(m) == OFDataMember]
class ${ofclass.pyname}(${superclass}):
:: for m in ofclass.type_members:
${m.name} = ${m.value}
:: #endfor
def __init__(${', '.join(['self'] + ["%s=None" % m.name for m in normal_members])}):
:: for m in normal_members:
if ${m.name} != None:
self.${m.name} = ${m.name}
else:
self.${m.name} = ${py_gen.oftype.gen_init_expr(m.oftype, version=version)}
:: #endfor
return
def pack(self):
packed = []
:: include("_pack.py", ofclass=ofclass)
return ''.join(packed)
@staticmethod
def unpack(buf):
obj = ${ofclass.pyname}()
:: include("_unpack.py", ofclass=ofclass)
return obj
def __eq__(self, other):
if type(self) != type(other): return False
:: for m in normal_members:
if self.${m.name} != other.${m.name}: return False
:: #endfor
return True
def __ne__(self, other):
return not self.__eq__(other)
def show(self):
import loxi.pp
return loxi.pp.pp(self)
def pretty_print(self, q):
:: include('_pretty_print.py', ofclass=ofclass)