final public int adjust(int n){ return e.adjust(n); //p.adjust(n); } final public boolean isFinal(){
final public void clearCache(){ Step temp = s; while(temp!=null){ if (temp.p!=null){ temp.p.expr.clearCache(); } temp = temp.nextS; } } }
final public boolean eval2(VTDNav vn) { boolean b; count++; // increment the position expr.setPosition(count); if (expr.isNumerical()){ b = (expr.evalNumber(vn)== count); } else{ b = expr.evalBoolean(vn); } return b; }
if (left.isNodeSet() && right.isNodeSet()) { return compNodeSetNodeSet(left, right, vn, op); } else { if (left.isNumerical() && right.isNodeSet()){ return compNumericalNodeSet(left, right, vn, op); if (left.isNodeSet() && right.isNumerical()) { if (left.isString() && right.isNodeSet()){ return compStringNodeSet(left, right, vn, op); if (left.isNodeSet() && right.isString()) { if (left.isBoolean() || right.isBoolean()) { if (op == EQ) return left.evalBoolean(vn) == right.evalBoolean(vn); else return left.evalBoolean(vn) != right.evalBoolean(vn); if (left.isNumerical() || right.isNumerical()) { if (op == EQ) return left.evalNumber(vn) == right.evalNumber(vn); else return left.evalNumber(vn) != right.evalNumber(vn); st1 = left.evalString(vn); st2 = right.evalString(vn); return compNumbers(left.evalNumber(vn),right.evalNumber(vn),op);
final public void markCacheable2(){ e.markCacheable2(); if (p.expr!=null){ if (p.expr.isFinal()&&p.expr.isNodeSet()){ CachedExpr ce = new CachedExpr(p.expr); p.expr = ce; } p.expr.markCacheable2(); } }
final public void markCacheable(){ e.markCacheable(); if (p.expr!=null){ if (p.expr.isFinal()&&p.expr.isNodeSet()){ CachedExpr ce = new CachedExpr(p.expr); p.expr = ce; } p.expr.markCacheable2(); } }
private int count(VTDNav vn){ int a = -1; // if (argCount!=1 || argumentList.e.isNodeSet()==false) // throw new IllegalArgumentException // ("Count()'s argument count is invalid"); vn.push2(); int size= vn.contextStack2.size ; try{ a = 0; argumentList.e.adjust(vn.getTokenCount()); while(argumentList.e.evalNodeSet(vn)!=-1){ a ++; } }catch(Exception e){ System.out.println("exception in count"); } argumentList.e.reset(vn); vn.contextStack2.size = size; vn.pop2(); return a; }
final private boolean compNodeSetNumerical(Expr left, Expr right, VTDNav vn, int op ){ int i, stackSize; double d; try { d = right.evalNumber(vn); vn.push2(); stackSize = vn.contextStack2.size; while ((i = left.evalNodeSet(vn)) != -1) { if (compareVNumber2(i,vn,d,op)){ left.reset(vn); vn.contextStack2.size = stackSize; vn.pop2(); return true; } } vn.contextStack2.size = stackSize; vn.pop2(); left.reset(vn); return false; } catch (Exception e) { throw new RuntimeException("Undefined behavior"); } }
/** * evalXPathToString() evaluates the xpath expression to a String * * @return String * */ final public String evalXPathToString() { return xpe.evalString(vn); }
/** * This method returns the next node in the nodeset * it returns -1 if there is no more node * Afer finishing evaluating, don't forget to <em> reset the xpath </em> * @return int corresponding to the VTD index */ public int evalXPath() throws XPathEvalException, NavException{ if (xpe!=null){ if (ft == true){ if (vn != null){ stackSize = vn.contextStack2.size; } ft = false; xpe.adjust(vn.getTokenCount()); } return xpe.evalNodeSet(vn); } throw new PilotException(" Null XPath expression "); }
@Override public double evalNumber(VTDNav vn) { // TODO Auto-generated method stub if (cached){ return en; }else{ cached = true; en = e.evalNumber(vn); return en; } }
@Override public boolean isBoolean() { // TODO Auto-generated method stub return e.isBoolean(); }
@Override public boolean evalBoolean(VTDNav vn) { // TODO Auto-generated method stub if (cached){ return eb; }else{ eb = e.evalBoolean(vn); return eb; } }
@Override public boolean isNumerical() { // TODO Auto-generated method stub return e.isNumerical(); }
private int evalFirstArgumentListNodeSet2(VTDNav vn){ vn.push2(); int size = vn.contextStack2.size; int a = -1; try { a = argumentList.e.evalNodeSet(vn); } catch (Exception e) { } vn.contextStack2.size = size; argumentList.e.reset(vn); vn.pop2(); return a; }
final public int evalNodeSet(VTDNav vn) throws XPathEvalException, NavException { // TODO Auto-generated method stub return exprVal.evalNodeSet(vn); }
@Override public boolean isFinal() { // TODO Auto-generated method stub return e.isFinal(); }
@Override public boolean isNodeSet() { // TODO Auto-generated method stub return e.isNodeSet(); }
if (left.isNodeSet() && right.isNodeSet()) { return compNodeSetNodeSet(left, right, vn, op); } else { if (left.isNumerical() && right.isNodeSet()){ return compNumericalNodeSet(left, right, vn, op); if (left.isNodeSet() && right.isNumerical()) { if (left.isString() && right.isNodeSet()){ return compStringNodeSet(left, right, vn, op); if (left.isNodeSet() && right.isString()) { if (left.isBoolean() || right.isBoolean()) { if (op == EQ) return left.evalBoolean(vn) == right.evalBoolean(vn); else return left.evalBoolean(vn) != right.evalBoolean(vn); if (left.isNumerical() || right.isNumerical()) { if (op == EQ) return left.evalNumber(vn) == right.evalNumber(vn); else return left.evalNumber(vn) != right.evalNumber(vn); st1 = left.evalString(vn); st2 = right.evalString(vn); return compNumbers(left.evalNumber(vn),right.evalNumber(vn),op);
final public void markCacheable2(){ e.markCacheable2(); if (p.expr!=null){ if (p.expr.isFinal()&&p.expr.isNodeSet()){ CachedExpr ce = new CachedExpr(p.expr); p.expr = ce; } p.expr.markCacheable2(); } }