1535: #line 1794 "mxTools.pak"
1536:
1537: Py_C_Function( mxTools_setdict,
1538: "setdict(seq,value=None)\n\n"
1539: "Creates a dictionary from the given items sequence.\n"
1540: "The sequence must hashable entries which are used as\n"
1541: "dictionary keys. The values are all set to value."
1542: )
1543: {
1544: int n;
1545: PyObject *seq,*d = 0,*value = 0;
1546: register int i;
1547:
1548: Py_Get2Args("O|O",seq,value);
1549: n = PySequence_Length(seq);
1550: if (n < 0)
1551: Py_Error(PyExc_TypeError,
1552: "argument must be a sequence");
1553:
1554: if (!value) {
1555: Py_INCREF(Py_None);
1556: value = Py_None;
1557: }
1558: else
1559: Py_INCREF(value);
1560:
1561: d = PyDict_New();
1562: if (!d)
1563: goto onError;
1564:
1565: for (i = 0; i < n; i++) {
1566: register PyObject *k;
1567:
1568: k = PySequence_GetItem(seq,i);
1569: if (!k)
1570: goto onError;
1571: if (PyDict_SetItem(d,k,value))
1572: goto onError;
1573: Py_DECREF(k);
1574: }
1575:
1576: Py_DECREF(value);
1577: return d;
1578:
1579: onError:
1580: Py_XDECREF(d);
1581: Py_XDECREF(value);
1582: return NULL;
1583: }
1584: