blob: 6116c78b6c21a74f486b7cb0c830b66d89c562d2 [file] [log] [blame]
Rich Lane002e70c2013-05-09 17:08:16 -07001:: from loxi_ir import *
Rich Laneda11f8b2013-06-19 15:53:25 -07002:: import py_gen.oftype
Rich Lane002e70c2013-05-09 17:08:16 -07003:: normal_members = [m for m in ofclass.members if type(m) == OFDataMember]
Rich Laned1dd9e62013-02-20 18:28:01 -08004class ${ofclass.pyname}(${superclass}):
5:: for m in ofclass.type_members:
6 ${m.name} = ${m.value}
7:: #endfor
8
Rich Lane8ca3b772013-04-30 13:36:55 -07009 def __init__(${', '.join(['self'] + ["%s=None" % m.name for m in normal_members])}):
10:: for m in normal_members:
Rich Laned1dd9e62013-02-20 18:28:01 -080011 if ${m.name} != None:
12 self.${m.name} = ${m.name}
13 else:
Rich Lane0f7f9d52013-11-29 17:00:49 -080014:: if m.name == 'xid':
15:: # HACK for message xid
16 self.${m.name} = None
17:: else:
Andreas Wundsam69ecfdc2013-09-17 13:50:12 -070018 self.${m.name} = ${py_gen.oftype.gen_init_expr(m.oftype, version=version)}
Rich Lane0f7f9d52013-11-29 17:00:49 -080019:: #endif
Rich Laned1dd9e62013-02-20 18:28:01 -080020:: #endfor
21 return
22
23 def pack(self):
24 packed = []
25:: include("_pack.py", ofclass=ofclass)
26 return ''.join(packed)
27
28 @staticmethod
29 def unpack(buf):
30 obj = ${ofclass.pyname}()
31:: include("_unpack.py", ofclass=ofclass)
32 return obj
33
34 def __eq__(self, other):
35 if type(self) != type(other): return False
Rich Lane8ca3b772013-04-30 13:36:55 -070036:: for m in normal_members:
Rich Laned1dd9e62013-02-20 18:28:01 -080037 if self.${m.name} != other.${m.name}: return False
38:: #endfor
39 return True
40
41 def __ne__(self, other):
42 return not self.__eq__(other)
43
44 def show(self):
45 import loxi.pp
46 return loxi.pp.pp(self)
47
48 def pretty_print(self, q):
49:: include('_pretty_print.py', ofclass=ofclass)