Esempio n. 1
0
 /// <summary> 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>
 /// </summary>
 /// <returns> int corresponding to the VTD index
 /// </returns>
 public int evalXPath()
 {
     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 ");
 }
Esempio n. 2
0
        public override int evalNodeSet(VTDNav vn)
        {
            // TODO Auto-generated method stub
            int i = -1;

            if (cached)
            {
                if (count < ens.size_Renamed_Field)
                {
                    i = ens.intAt(count);
                    vn.recoverNode(i);
                    count++;
                    return(i);
                }
                else
                {
                    return(-1);
                }
            }
            else
            {
                cached = true;

                if (ens == null)
                {
                    ens = new FastIntBuffer(8);//page size 64
                }
                //record node set
                while ((i = e.evalNodeSet(vn)) != -1)
                {
                    ens.append(i);
                }
                e.reset(vn);
                if (ens.size_Renamed_Field > 0)
                {
                    i = ens.intAt(count);//count should be zero
                    vn.recoverNode(i);
                    count++;
                    return(i);
                }
                else
                {
                    return(-1);
                }
            }
        }
Esempio n. 3
0
        /*
         * (non-Javadoc)
         *
         * @see com.ximpleware.xpath.Expr#evalNodeSet(com.ximpleware.VTDNav)
         */
        public override int evalNodeSet(VTDNav vn)
        {
            int a;

            if (this.next == null)
            {
                return(e.evalNodeSet(vn));
            }
            else
            {
                while (true)
                {
                    switch (state)
                    {
                    case 0:
                        if (ih == null)
                        {
                            ih = new intHash();
                        }
                        if (current != null)
                        {
                            vn.push2();
                            while ((a = current.e.evalNodeSet(vn)) != -1)
                            {
                                if (isUnique(a))
                                {
                                    state = 1;
                                    return(a);
                                }
                            }
                            state = 2;
                            vn.pop2();
                            break;
                        }
                        else
                        {
                            state = 3;
                        }
                        break;


                    case 1:
                        while ((a = current.e.evalNodeSet(vn)) != -1)
                        {
                            if (isUnique(a))
                            {
                                state = 1;
                                return(a);
                            }
                        }
                        state = 2;
                        vn.pop2();
                        break;


                    case 2:
                        current = current.next;
                        if (current != null)
                        {
                            vn.push2();
                            while ((a = current.e.evalNodeSet(vn)) != -1)
                            {
                                if (isUnique(a))
                                {
                                    state = 1;
                                    return(a);
                                }
                            }
                            vn.pop2();
                            break;
                        }
                        else
                        {
                            state = 3;
                        }
                        break;


                    case 3:
                        return(-1);


                    default:
                        throw new XPathEvalException("Invalid state evaluating PathExpr");
                    }
                }
            }

            /*
             * default: throw new XPathEvalException( "Invalid state evaluating
             * PathExpr");
             */
        }