Lines Matching defs:ag
1213 attrgetterobject *ag;
1310 ag = PyObject_GC_New(attrgetterobject, (PyTypeObject *)state->attrgetter_type);
1311 if (ag == NULL) {
1316 ag->attr = attr;
1317 ag->nattrs = nattrs;
1318 ag->vectorcall = (vectorcallfunc)attrgetter_vectorcall;
1320 PyObject_GC_Track(ag);
1321 return (PyObject *)ag;
1325 attrgetter_clear(attrgetterobject *ag)
1327 Py_CLEAR(ag->attr);
1332 attrgetter_dealloc(attrgetterobject *ag)
1334 PyTypeObject *tp = Py_TYPE(ag);
1335 PyObject_GC_UnTrack(ag);
1336 (void)attrgetter_clear(ag);
1337 tp->tp_free(ag);
1342 attrgetter_traverse(attrgetterobject *ag, visitproc visit, void *arg)
1344 Py_VISIT(ag->attr);
1345 Py_VISIT(Py_TYPE(ag));
1383 attrgetter_call(attrgetterobject *ag, PyObject *args, PyObject *kw)
1389 return attrgetter_call_impl(ag, PyTuple_GET_ITEM(args, 0));
1393 attrgetter_vectorcall(PyObject *ag, PyObject *const *args, size_t nargsf, PyObject *kwnames)
1402 return attrgetter_call_impl((attrgetterobject *)ag, args[0]);
1406 attrgetter_call_impl(attrgetterobject *ag, PyObject *obj)
1409 Py_ssize_t i, nattrs=ag->nattrs;
1411 if (ag->nattrs == 1) {
1412 /* ag->attr is always a tuple */
1413 return dotted_getattr(obj, PyTuple_GET_ITEM(ag->attr, 0));
1416 assert(PyTuple_Check(ag->attr));
1417 assert(PyTuple_GET_SIZE(ag->attr) == nattrs);
1425 attr = PyTuple_GET_ITEM(ag->attr, i);
1453 attrgetter_args(attrgetterobject *ag)
1457 PyObject *attrstrings = PyTuple_New(ag->nattrs);
1461 for (i = 0; i < ag->nattrs; ++i) {
1462 PyObject *attr = PyTuple_GET_ITEM(ag->attr, i);
1476 attrgetter_repr(attrgetterobject *ag)
1479 int status = Py_ReprEnter((PyObject *)ag);
1483 return PyUnicode_FromFormat("%s(...)", Py_TYPE(ag)->tp_name);
1486 if (ag->nattrs == 1) {
1488 PyObject *attr = dotjoinattr(PyTuple_GET_ITEM(ag->attr, 0), &attrsep);
1490 repr = PyUnicode_FromFormat("%s(%R)", Py_TYPE(ag)->tp_name, attr);
1496 PyObject *attrstrings = attrgetter_args(ag);
1499 Py_TYPE(ag)->tp_name, attrstrings);
1503 Py_ReprLeave((PyObject *)ag);
1508 attrgetter_reduce(attrgetterobject *ag, PyObject *Py_UNUSED(ignored))
1510 PyObject *attrstrings = attrgetter_args(ag);
1514 return Py_BuildValue("ON", Py_TYPE(ag), attrstrings);