def setUp(self): super(TestForwardDeclaration, self).setUp() name = type(self).__name__ src = Source(name.lower() + ".c") a = Structure("A") a.append_field(Pointer(a)("next")) b = Structure("B") b.append_field(Pointer(a)("next")) src.add_types([a, b]) src_content = """\ /* {} */ typedef struct A A; struct A {{ A *next; }}; typedef struct B {{ A *next; }} B; """.format(src.path) self.files = [(src, src_content)]
def setUp(self): super(TestCrossDeclaration, self).setUp() src = Source(type(self).__name__.lower() + ".c") a = Structure("A") b = Structure("B") b.append_field(Pointer(a)("ref")) a.append_field(Pointer(b)("ref")) src.add_types([a, b]) src_content = """\ /* {} */ typedef struct B B; typedef struct A {{ B *ref; }} A; struct B {{ A *ref; }}; """.format(src.path) self.files = [(src, src_content)]
def setUp(self): super(TestForwardDeclarationHeader, self).setUp() name = type(self).__name__ hdr = Header(name.lower() + ".h") src = Source(name.lower() + ".c") a = Structure("A") a.append_field(Pointer(a)("next")) b = Structure("B") b.append_field(Pointer(a)("next")) hdr.add_type(a) hdr_content = """\ /* {path} */ #ifndef INCLUDE_{fname_upper}_H #define INCLUDE_{fname_upper}_H typedef struct A A; struct A {{ A *next; }}; #endif /* INCLUDE_{fname_upper}_H */ """.format(path=hdr.path, fname_upper=name.upper()) src.add_type(b) src_content = """\ /* {} */ #include "{}" typedef struct B {{ A *next; }} B; """.format(src.path, hdr.path) self.files = [(hdr, hdr_content), (src, src_content)]
def gen_state(self): s = Structure(self.qtn.for_struct_name + "State") for f in self.state_fields: s.append_field(f.type(f.name, array_size = f.num)) return s