(
cl: ClassIR, attr: str, rtype: RType, func_ir: FuncIR, emitter: Emitter
)
| 1232 | |
| 1233 | |
| 1234 | def generate_readonly_getter( |
| 1235 | cl: ClassIR, attr: str, rtype: RType, func_ir: FuncIR, emitter: Emitter |
| 1236 | ) -> None: |
| 1237 | emitter.emit_line("static PyObject *") |
| 1238 | emitter.emit_line( |
| 1239 | "{}({} *self, void *closure)".format( |
| 1240 | getter_name(cl, attr, emitter.names), cl.struct_name(emitter.names) |
| 1241 | ) |
| 1242 | ) |
| 1243 | emitter.emit_line("{") |
| 1244 | if rtype.is_unboxed: |
| 1245 | emitter.emit_line( |
| 1246 | "{}retval = {}{}((PyObject *) self);".format( |
| 1247 | emitter.ctype_spaced(rtype), NATIVE_PREFIX, func_ir.cname(emitter.names) |
| 1248 | ) |
| 1249 | ) |
| 1250 | emitter.emit_error_check("retval", rtype, "return NULL;") |
| 1251 | emitter.emit_box("retval", "retbox", rtype, declare_dest=True) |
| 1252 | emitter.emit_line("return retbox;") |
| 1253 | else: |
| 1254 | emitter.emit_line( |
| 1255 | f"return {NATIVE_PREFIX}{func_ir.cname(emitter.names)}((PyObject *) self);" |
| 1256 | ) |
| 1257 | emitter.emit_line("}") |
| 1258 | |
| 1259 | |
| 1260 | def generate_property_setter( |
no test coverage detected
searching dependent graphs…