llvm::iterator_range<BoxIterator> Box::pyElements() { static std::string iter_str("__iter__"); Box* iter = callattr(const_cast<Box*>(this), &iter_str, true, ArgPassSpec(0), NULL, NULL, NULL, NULL, NULL); if (iter) { return llvm::iterator_range<BoxIterator>(++BoxIterator(iter), BoxIterator(nullptr)); } raiseExcHelper(TypeError, "'%s' object is not iterable", getTypeName(this)->c_str()); }
static BoxIterator end(const Box& box) { return BoxIterator(box, true/*at_end==true*/); }
static BoxIterator begin(const Box& box) { return BoxIterator(box); }