(self, argname: str, displayname: str, *, limited_capi: bool)
| 503 | pass |
| 504 | |
| 505 | def parse_arg(self, argname: str, displayname: str, *, limited_capi: bool) -> str | None: |
| 506 | if self.format_unit == 'O&': |
| 507 | self.use_converter() |
| 508 | return self.format_code(""" |
| 509 | if (!{converter}({argname}, &{paramname})) {{{{ |
| 510 | goto exit; |
| 511 | }}}} |
| 512 | """, |
| 513 | argname=argname, |
| 514 | converter=self.converter) |
| 515 | if self.format_unit == 'O!': |
| 516 | cast = '(%s)' % self.type if self.type != 'PyObject *' else '' |
| 517 | if self.subclass_of in type_checks: |
| 518 | typecheck, typename = type_checks[self.subclass_of] |
| 519 | return self.format_code(""" |
| 520 | if (!{typecheck}({argname})) {{{{ |
| 521 | {bad_argument} |
| 522 | goto exit; |
| 523 | }}}} |
| 524 | {paramname} = {cast}{argname}; |
| 525 | """, |
| 526 | argname=argname, |
| 527 | bad_argument=self.bad_argument(displayname, typename, limited_capi=limited_capi), |
| 528 | typecheck=typecheck, typename=typename, cast=cast) |
| 529 | return self.format_code(""" |
| 530 | if (!PyObject_TypeCheck({argname}, {subclass_of})) {{{{ |
| 531 | {bad_argument} |
| 532 | goto exit; |
| 533 | }}}} |
| 534 | {paramname} = {cast}{argname}; |
| 535 | """, |
| 536 | argname=argname, |
| 537 | bad_argument=self.bad_argument(displayname, '({subclass_of})->tp_name', |
| 538 | expected_literal=False, limited_capi=limited_capi), |
| 539 | subclass_of=self.subclass_of, cast=cast) |
| 540 | if self.format_unit == 'O': |
| 541 | cast = '(%s)' % self.type if self.type != 'PyObject *' else '' |
| 542 | return self.format_code(""" |
| 543 | {paramname} = {cast}{argname}; |
| 544 | """, |
| 545 | argname=argname, cast=cast) |
| 546 | return None |
| 547 | |
| 548 | def set_template_dict(self, template_dict: TemplateDict) -> None: |
| 549 | pass |
no test coverage detected