bool CChildLimitedDatasetColumnInfo::buildReadAhead(HqlCppTranslator & translator, BuildCtx & ctx, ReadAheadState & state) { try { OwnedHqlExpr self = container->getRelativeSelf(); if (sizeField) { OwnedHqlExpr mappedSize = replaceSelector(sizeField, querySelfReference(), self); OwnedHqlExpr replacedSize = quickFullReplaceExpressions(mappedSize, state.requiredValues, state.mappedValues); if (containsSelector(replacedSize, queryRootSelf())) return false; callDeserializerSkipInputSize(translator, ctx, state. helper, replacedSize); return true; } else { OwnedHqlExpr mappedCount = replaceSelector(countField, querySelfReference(), self); OwnedHqlExpr replacedCount = quickFullReplaceExpressions(mappedCount, state.requiredValues, state.mappedValues); if (containsSelector(replacedCount, queryRootSelf())) return false; if (fixedChildSize != UNKNOWN_LENGTH) { OwnedHqlExpr scaledSize = multiplyValue(replacedCount, fixedChildSize); callDeserializerSkipInputSize(translator, ctx, state. helper, scaledSize); return true; } BuildCtx loopctx(ctx); CHqlBoundExpr bound; translator.buildTempExpr(loopctx, replacedCount, bound); OwnedHqlExpr test = createValue(no_postdec, LINK(bound.expr)); loopctx.addLoop(test, NULL, false); StringBuffer prefetcherInstanceName; translator.ensureRowPrefetcher(prefetcherInstanceName, ctx, column->queryRecord()); StringBuffer s; s.append(prefetcherInstanceName).append("->readAhead("); translator.generateExprCpp(s, state.helper).append(");"); loopctx.addQuoted(s); return true; } } catch (IException * e) { //yuk yuk yuk!! Couldn't resolve the dataset count/size for some strange reason e->Release(); } return false; }
static void winMotion (int x, int y) { float t[XYZ]; if(!polygonPicking && !cellPicking && !createVect){ /* not in picking mode */ if ( activePrim == WORLD){ mouseMovingFlag = TRUE; handleTrackball(x, y); } else{ /* the primitive being handled is NOT the world camera */ switch(modelMode){ case TRANS: t[X] = t[Y] = t[Z] = 0.0; /* printf("before %f %f %f\n", t[X], t[Y], t[Z]); */ if (rotateflag) pan(x,y,t); else if (zoomflag)zoom(x,y,t); multiplyValue(t, mouseTransSpeed); /* apply some scaling to the mouse */ /* printf("after %f %f %f\n", t[X], t[Y], t[Z]); */ vadd(t, Prim[activePrim].trans, Prim[activePrim].trans); break; case ROT: /*printf("Entered Rotation Mode!\n"); */ if (rotateflag){ if (horizontalFlag){ Prim[activePrim].rot[Z] -= (float) (oldMouseX - x)*mouseRotSpeed; }else if(verticalFlag){ Prim[activePrim].rot[Y] -= (float) (oldMouseY - y)*mouseRotSpeed; }else{ Prim[activePrim].rot[Z] -= (float) (oldMouseX - x)*mouseRotSpeed; Prim[activePrim].rot[Y] -= (float) (oldMouseY - y)*mouseRotSpeed; //Prim[activePrim].rot[X] -= (float) (oldMouseX - x)*mouseRotSpeed; //Prim[activePrim].rot[Y] -= (float) (oldMouseY - y)*mouseRotSpeed; } } else if (zoomflag) Prim[activePrim].rot[X] -= (float) (oldMouseX - x)*mouseRotSpeed; //Prim[activePrim].rot[X] -= (float) (oldMouseX - x)*mouseRotSpeed; break; case SCALE: /*printf("Entered Scaling Mode!\n");*/ if (rotateflag){ //if (horizontalFlag){ //Prim[activePrim].scale[X] -= (float) (oldMouseX - x)*mouseRotSpeed; // }else if(verticalFlag){ //Prim[activePrim].scale[Y] -= (float) (oldMouseY - y)*mouseRotSpeed; // }else{ Prim[activePrim].scale[Z] -= (float) (oldMouseX - x)*mouseScaleSpeed; Prim[activePrim].scale[Y] -= (float) (oldMouseX - x)*mouseScaleSpeed; //Prim[activePrim].scale[X] -= (float) (oldMouseX - x)*mouseScaleSpeed; //Prim[activePrim].scale[Y] += (float) (oldMouseY - y)*mouseScaleSpeed; //} } else if (zoomflag){ Prim[activePrim].scale[X] -= (float) (oldMouseX - x)*mouseScaleSpeed; //Prim[activePrim].scale[Z] -= (float) (oldMouseX - x)*mouseScaleSpeed; } break; default: break; } } oldMouseX = x; oldMouseY = y; glutPostRedisplay(); } }