MCPcopy Create free account
hub / github.com/Distributive-Network/PythonMonkey / JSObjectProxy_iter_next

Method JSObjectProxy_iter_next

src/JSObjectProxy.cc:308–343  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

306}
307
308PyObject *JSObjectProxyMethodDefinitions::JSObjectProxy_iter_next(JSObjectProxy *self) {
309 PyObject *key = PyUnicode_FromString("next");
310 JS::RootedId id(GLOBAL_CX);
311 if (!keyToId(key, &id)) {
312 PyErr_SetString(PyExc_SystemError, "JSObjectProxy failed type conversion");
313 return NULL;
314 }
315
316 PyObject *nextFunction = getKey(self, key, id, false);
317 Py_DECREF(key);
318 if (nextFunction == NULL) {
319 PyErr_SetString(PyExc_SystemError, "JSObjectProxy could not retrieve key");
320 return NULL;
321 }
322
323 PyObject *retVal = JSFunctionProxyMethodDefinitions::JSFunctionProxy_call(nextFunction, PyTuple_New(0), NULL);
324 Py_DECREF(nextFunction);
325 if (retVal == NULL) {
326 return NULL;
327 }
328
329 // check if end of iteration
330 key = PyUnicode_FromString("done");
331 PyObject *done = JSObjectProxy_get((JSObjectProxy *)retVal, key);
332 Py_DECREF(key);
333 if (done == Py_True) {
334 PyErr_SetNone(PyExc_StopIteration);
335 return NULL;
336 }
337
338 key = PyUnicode_FromString("value");
339 PyObject *value = JSObjectProxy_get((JSObjectProxy *)retVal, key);
340 Py_DECREF(key);
341
342 return value;
343}
344
345PyObject *JSObjectProxyMethodDefinitions::JSObjectProxy_repr(JSObjectProxy *self) {
346 // Detect cyclic objects

Callers

nothing calls this directly

Calls 2

keyToIdFunction · 0.85
getKeyFunction · 0.85

Tested by

no test coverage detected