コード例 #1
0
ファイル: frame.cpp プロジェクト: gongfuPanada/pyston
 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;
 }
コード例 #2
0
ファイル: descr.cpp プロジェクト: corona10/pyston
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);
}