| 6021 | } |
| 6022 | |
| 6023 | void runVoid(CppiaCtx *ctx) HXCPP_OVERRIDE |
| 6024 | { |
| 6025 | hx::Object *iterator = init->runObject(ctx); |
| 6026 | CPPIA_CHECK(iterator); |
| 6027 | BCR_VCHECK; |
| 6028 | Dynamic hasNext = iterator->__Field(HX_CSTRING("hasNext"),HX_PROP_DYNAMIC); |
| 6029 | BCR_VCHECK; |
| 6030 | CPPIA_CHECK(hasNext.mPtr); |
| 6031 | Dynamic getNext = iterator->__Field(HX_CSTRING("next"),HX_PROP_DYNAMIC); |
| 6032 | BCR_VCHECK; |
| 6033 | CPPIA_CHECK(getNext.mPtr); |
| 6034 | |
| 6035 | while(hasNext()) |
| 6036 | { |
| 6037 | if (ctx->exception) |
| 6038 | return; |
| 6039 | var.set(ctx,getNext()); |
| 6040 | if (ctx->exception) |
| 6041 | return; |
| 6042 | loop->runVoid(ctx); |
| 6043 | if (ctx->exception) |
| 6044 | return; |
| 6045 | |
| 6046 | if (ctx->breakContReturn) |
| 6047 | { |
| 6048 | if (ctx->breakContReturn & (bcrBreak|bcrReturn)) |
| 6049 | break; |
| 6050 | // clear Continue |
| 6051 | ctx->breakContReturn = 0; |
| 6052 | } |
| 6053 | } |
| 6054 | } |
| 6055 | }; |
| 6056 | |
| 6057 | struct WhileExpr : public CppiaVoidExpr |