(cl: ClassIR, name: str, emitter: Emitter)
| 1094 | |
| 1095 | |
| 1096 | def generate_getseters_table(cl: ClassIR, name: str, emitter: Emitter) -> None: |
| 1097 | emitter.emit_line(f"static PyGetSetDef {name}[] = {{") |
| 1098 | if not cl.is_trait: |
| 1099 | for attr in cl.attributes: |
| 1100 | emitter.emit_line(f'{{"{attr}",') |
| 1101 | emitter.emit_line( |
| 1102 | " (getter){}, (setter){},".format( |
| 1103 | getter_name(cl, attr, emitter.names), setter_name(cl, attr, emitter.names) |
| 1104 | ) |
| 1105 | ) |
| 1106 | emitter.emit_line(" NULL, NULL},") |
| 1107 | for prop, (getter, setter) in cl.properties.items(): |
| 1108 | if getter.decl.implicit: |
| 1109 | continue |
| 1110 | |
| 1111 | emitter.emit_line(f'{{"{prop}",') |
| 1112 | emitter.emit_line(f" (getter){getter_name(cl, prop, emitter.names)},") |
| 1113 | |
| 1114 | if setter: |
| 1115 | emitter.emit_line(f" (setter){setter_name(cl, prop, emitter.names)},") |
| 1116 | emitter.emit_line("NULL, NULL},") |
| 1117 | else: |
| 1118 | emitter.emit_line("NULL, NULL, NULL},") |
| 1119 | |
| 1120 | if cl.has_dict: |
| 1121 | emitter.emit_line('{"__dict__", PyObject_GenericGetDict, PyObject_GenericSetDict},') |
| 1122 | |
| 1123 | emitter.emit_line("{NULL} /* Sentinel */") |
| 1124 | emitter.emit_line("};") |
| 1125 | |
| 1126 | |
| 1127 | def generate_getseters(cl: ClassIR, emitter: Emitter) -> None: |
no test coverage detected
searching dependent graphs…