MCPcopy Create free account
hub / github.com/ROCm/AMDMIGraphX / CFunction

Class CFunction

tools/api.py:149–190  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

147
148
149class CFunction:
150 def __init__(self, name: str) -> None:
151 self.name = name
152 self.params: List[str] = []
153 self.body: List[str] = []
154 self.va_start: List[str] = []
155 self.va_end: List[str] = []
156
157 def add_param(self, type: str, pname: str) -> None:
158 self.params.append('{} {}'.format(type, pname))
159
160 def add_statement(self, stmt: str) -> None:
161 self.body.append(stmt)
162
163 def add_vlist(self, name: str) -> None:
164 last_param = self.params[-1].split()[-1]
165 self.va_start = [
166 'va_list {};'.format(name),
167 'va_start({}, {});'.format(name, last_param)
168 ]
169 self.va_end = ['va_end({});'.format(name)]
170 self.add_param('...', '')
171
172 def substitute(self, form: Template, **kwargs) -> str:
173 return form.substitute(error_type=error_type,
174 try_wrap=try_wrap,
175 name=self.name,
176 params=', '.join(self.params),
177 body=";\n ".join(self.body),
178 va_start="\n ".join(self.va_start),
179 va_end="\n ".join(self.va_end),
180 **kwargs)
181
182 def generate_header(self) -> str:
183 return self.substitute(header_function, export_c_macro=export_c_macro)
184
185 def generate_function_pointer(self, name: Optional[str] = None) -> str:
186 return self.substitute(function_pointer_typedef,
187 fname=name or self.name)
188
189 def generate_body(self) -> str:
190 return self.substitute(c_api_impl)
191
192
193class BadParam:

Callers 1

create_cfunctionMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected