Save This Page
Home » openjdk-7 » java » util » regex » [javadoc | source]
    1   /*
    2    *  Licensed to the Apache Software Foundation (ASF) under one or more
    3    *  contributor license agreements.  See the NOTICE file distributed with
    4    *  this work for additional information regarding copyright ownership.
    5    *  The ASF licenses this file to You under the Apache License, Version 2.0
    6    *  (the "License"); you may not use this file except in compliance with
    7    *  the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    *  Unless required by applicable law or agreed to in writing, software
   12    *  distributed under the License is distributed on an "AS IS" BASIS,
   13    *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    *  See the License for the specific language governing permissions and
   15    *  limitations under the License.
   16    */
   17   
   18   /**
   19    * @author Nikolay A. Kuznetsov
   20    */
   21   package java.util.regex;
   22   
   23   import java.util.ArrayList;
   24   
   25   /**
   26    * This class represent atomic group (?>X), once X matches,
   27    * this match become unchangeable till the end of the match.
   28    * 
   29    * @author Nikolay A. Kuznetsov
   30    */
   31   class AtomicJointSet extends NonCapJointSet {
   32       
   33       public AtomicJointSet(ArrayList children, FSet fSet) {
   34           super(children, fSet);
   35       }
   36   
   37       /**
   38        * Returns stringIndex+shift, the next position to match
   39        */
   40       public int matches(int stringIndex, CharSequence testString,
   41               MatchResultImpl matchResult) {
   42           int start = matchResult.getConsumed(groupIndex);
   43           matchResult.setConsumed(groupIndex, stringIndex);
   44   
   45           int size = children.size();
   46           for (int i = 0; i < size; i++) {
   47               AbstractSet e = (AbstractSet) children.get(i);
   48               int shift = e.matches(stringIndex, testString, matchResult);
   49               if (shift >= 0) {
   50                   // AtomicFset always returns true, but saves the index to run
   51                   // this next.match() from;
   52                   return next.matches(((AtomicFSet) fSet).getIndex(), testString,
   53                           matchResult);
   54               }
   55           }
   56   
   57           matchResult.setConsumed(groupIndex, start);
   58           return -1;
   59       }
   60   
   61       public void setNext(AbstractSet next) {
   62           this.next = next;
   63       }
   64   
   65       public AbstractSet getNext() {
   66           return next;
   67       }
   68   
   69       protected String getName() {
   70           return "NonCapJointSet"; //$NON-NLS-1$
   71       }
   72   }

Save This Page
Home » openjdk-7 » java » util » regex » [javadoc | source]