static Box* createFrame(Box* back, BoxedCode* code, Box* globals, Box* locals) { BoxedFrame* frame = new BoxedFrame(NULL); frame->_back = xincref(back); frame->_code = (Box*)xincref(code); frame->_globals = xincref(globals); frame->_locals = xincref(locals); frame->_linenumber = -1; return frame; }
static Box* propertyInit(Box* _self, Box* fget, Box* fset, Box** args) { RELEASE_ASSERT(isSubclass(_self->cls, property_cls), ""); Box* fdel = args[0]; Box* doc = args[1]; BoxedProperty* self = static_cast<BoxedProperty*>(_self); Box* prev_get = self->prop_get; Box* prev_set = self->prop_set; Box* prev_del = self->prop_del; Box* prev_doc = self->prop_doc; self->prop_get = fget == Py_None ? NULL : incref(fget); self->prop_set = fset == Py_None ? NULL : incref(fset); self->prop_del = fdel == Py_None ? NULL : incref(fdel); self->prop_doc = xincref(doc); self->getter_doc = false; Py_XDECREF(prev_get); Py_XDECREF(prev_set); Py_XDECREF(prev_del); Py_XDECREF(prev_doc); /* if no docstring given and the getter has one, use that one */ if ((doc == NULL || doc == Py_None) && fget != NULL) { propertyDocCopy(self, fget); } return incref(Py_None); }