@@ -120,54 +120,6 @@ def write_checked_header(output_path, result_struct, functions, typedefs):
120120 f .write (f"#endif // { output_path .stem .upper ()} _H\n " )
121121
122122
123- def resolve_typedef (typedefs , type_name ):
124- """Resolve a typedef to its underlying type."""
125-
126- def resolve_base_type (ptr_decl ):
127- # handle cases like: typedef int******* ptr;
128- cur_type = ptr_decl
129- pointer_type_name = ""
130-
131- while isinstance (cur_type , c_ast .PtrDecl ):
132- cur_type = cur_type .type
133- pointer_type_name += "*"
134-
135- assert isinstance (cur_type , c_ast .TypeDecl )
136- if isinstance (cur_type .type , c_ast .IdentifierType ):
137- base_type_name = " " .join (cur_type .type .names )
138- pointer_type_name = base_type_name + pointer_type_name
139- else :
140- pointer_type_name = "" .join (cur_type .type .name ) + pointer_type_name
141-
142- return pointer_type_name
143-
144- resolved_type = typedefs .get (type_name )
145-
146- if resolved_type is None :
147- return type_name
148-
149- if isinstance (resolved_type , c_ast .TypeDecl ):
150- if isinstance (resolved_type .type , c_ast .Enum ):
151- return type_name
152-
153- if isinstance (resolved_type .type , c_ast .Struct ):
154- return type_name
155-
156- if isinstance (resolved_type .type , c_ast .Union ):
157- return type_name
158-
159- if isinstance (resolved_type .type , c_ast .IdentifierType ):
160- return type_name
161-
162- raise Exception (f"Unhandled TypeDecl typedef { type_name } " )
163- elif isinstance (resolved_type , c_ast .PtrDecl ):
164- pointer_type_name = resolve_base_type (resolved_type )
165- return pointer_type_name
166- else :
167- resolved_type .show ()
168- raise Exception (f"Unhandled typedef { type_name } " )
169-
170-
171123def generate_checked_function (func , typedefs ):
172124 """Generate a checked version of the given function."""
173125 func_name = func .name # Access the name directly from Decl
@@ -182,8 +134,8 @@ def generate_checked_function(func, typedefs):
182134 if isinstance (func .type .type , c_ast .TypeDecl ):
183135 return_type = " " .join (func .type .type .type .names )
184136
185- resolved_type = resolve_typedef ( typedefs , return_type )
186- if resolved_type . endswith ( "*" ):
137+ resolved_type = typedefs . get ( return_type , return_type )
138+ if isinstance ( resolved_type , c_ast . PtrDecl ):
187139 return_pointer = True
188140
189141 # Start building the new function
0 commit comments