def __init__(self, name, fields):
super(CStruct, self).__init__(name, fields)
+ def duplicate_barrier(func):
+ def func_wrapper(self):
+ name = self.get_c_name()
+ return "#ifndef defined_{}\n#define defined_{}\n{}\n#endif".format(name, name, func(self))
+ return func_wrapper
+
+ @duplicate_barrier
def get_c_def(self):
return "\n".join([
"typedef struct __attribute__((__packed__)) {",
"}",
])
+ def duplicate_barrier(func):
+ def func_wrapper(self):
+ name = self.get_payload_struct_name()
+ return "#ifndef defined_{}\n#define defined_{}\n{}\n#endif".format(name, name, func(self))
+ return func_wrapper
+
+ @duplicate_barrier
def get_c_def(self):
if self.has_payload():
return "\n".join([
' offsetof(%s, context),' % self.header.get_c_name()
if has_context else ' 0,',
(' offsetof(%s, payload),' % self.get_c_name())
- if self.has_payload() else ' ~0,',
+ if self.has_payload() else ' INVALID_MSG_ID,',
' sizeof(%s),' % self.get_c_name(),
' (generic_swap_fn_t)%s,' % self.get_swap_to_be_func_name(),
' (generic_swap_fn_t)%s,' % self.get_swap_to_host_func_name(),
- ' ~0,',
+ ' INVALID_MSG_ID,',
' };',
'',
' %s = vapi_register_msg(&%s);' %
print("")
function_attrs = "static inline "
for t in parser.types_by_json[j].values():
+ print("#ifndef defined_inline_%s" % t.get_c_name())
+ print("#define defined_inline_%s" % t.get_c_name())
print("%s%s" % (function_attrs, t.get_swap_to_be_func_def()))
print("")
print("%s%s" % (function_attrs, t.get_swap_to_host_func_def()))
+ print("#endif")
print("")
for m in parser.messages_by_json[j].values():
if m.has_payload():