This is an archived page. It's not actively maintained.


This article covers features introduced in SpiderMonkey 17

Take ownership of a JSIdArray and free it later.


AutoIdArray(JSContext *cx, JSIdArray *ida);
Name Type Description
cx JSContext * The context in which to add the root. Requires request. In a JS_THREADSAFE build, the caller must be in a request on this JSContext.
ida JSIdArray * A pointer to JSIdArray to take the ownership.


Method Description
bool operator!() const Return true if this has no owned array.
jsid operator[](size_t i) const Return a jsid in specified index of the owned array.
size_t length() const Return the length of the owned array.
JSIdArray *steal() Return the owned array and release the ownership.


JS::AutoIdArray takes the ownership of JSIdArray, and frees it in destructor by calling JS_DestroyIdArray.


  JS::AutoIdArray ids(cx, JS_Enumerate(cx, obj));
  if (!ids) // Check the returned value from JS_Enumerate
    return false;

  for (int32_t i = 0, len = ids.length(); i < len; i++) {
    someFunc(cx, ids[i]);

  /* when leaving this scope, the JSIdArray returned by JS_Enumerate is freed. */

See Also