- if ((tag = PyString_AsString(key)) == 0)
- goto end;
- if ((kd = key_structfind(KEYDATA_KD(me), tag)) == 0)
- MAPERR(key);
- key_incref(kd);
- rc = keydata_pywrap(kd);
-end:
- return (rc);
-}
-
-static int keydatastruct_pystore(PyObject *me,
- PyObject *key, PyObject *value)
-{
- const char *tag;
- int rc = -1;
-
- if ((tag = PyString_AsString(key)) == 0)
- goto end;
- key_split(&KEYDATA_KD(me));
- if (value) {
- if (!KEYDATA_PYCHECK(value))
- TYERR("expected KeyData value");
- key_structset(KEYDATA_KD(me), tag, KEYDATA_KD(value));
- } else {
- if (!key_structfind(KEYDATA_KD(me), tag))
- MAPERR(key);
- key_structset(KEYDATA_KD(me), tag, 0);
- }
- rc = 0;
-end:
- return (rc);
-}
-
-static PyMappingMethods keydatastruct_pymapping = {
- gmap_pysize, /* @mp_length@ */
- keydatastruct_pylookup, /* @mp_subscript@ */
- keydatastruct_pystore /* @mp_ass_subscript@ */