void PythonList::AppendItem(const PythonObject &object) { if (IsAllocated() && object.IsValid()) { // `PyList_Append` does *not* steal a reference, so do not call `Py_INCREF` // here like we do with `PyList_SetItem`. PyList_Append(m_py_obj, object.get()); } }
PythonObject PythonDictionary::GetItemForKey(const PythonObject &key) const { if (IsAllocated() && key.IsValid()) return PythonObject(PyRefType::Borrowed, PyDict_GetItem(m_py_obj, key.get())); return PythonObject(); }
void PythonTuple::SetItemAtIndex(uint32_t index, const PythonObject &object) { if (IsAllocated() && object.IsValid()) { // PyTuple_SetItem is documented to "steal" a reference, so we need to // convert it to an owned reference by incrementing it. Py_INCREF(object.get()); PyTuple_SetItem(m_py_obj, index, object.get()); } }
void PythonDictionary::SetItemForKey(const PythonObject &key, const PythonObject &value) { if (IsAllocated() && key.IsValid() && value.IsValid()) PyDict_SetItem(m_py_obj, key.get(), value.get()); }