Copyright test
[jalview.git] / src / com / stevesoft / pat / Skip2.java
1 /*******************************************************************************
2  * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3  * Copyright (C) $(date) The Jalview Authors
4  *
5  * This file is part of Jalview.
6  *  
7  * Jalview is free software: you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License 
9  * as published by the Free Software Foundation, either version 3
10  * of the License, or (at your option) any later version.
11  *   
12  * Jalview is distributed in the hope that it will be useful, but 
13  * WITHOUT ANY WARRANTY; without even the implied warranty 
14  * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
15  * PURPOSE.  See the GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
19  * The Jalview Authors are detailed in the 'AUTHORS' file.
20  *******************************************************************************/
21 //
22 // This software is now distributed according to
23 // the Lesser Gnu Public License.  Please see
24 // http://www.gnu.org/copyleft/lesser.txt for
25 // the details.
26 //    -- Happy Computing!
27 //
28 package com.stevesoft.pat;
29
30 /**
31  * This is the same as Skip, except it needs a minimum of two characters in the
32  * initializing String.
33  * 
34  * @see com.stevesoft.pat.Skip
35  * @see com.stevesoft.pat.SkipBMH
36  */
37 public class Skip2 extends Skip
38 {
39   int c1, mask1;
40
41   public Skip2(String s, boolean ign, int offset)
42   {
43     super(s, ign, offset);
44     c1 = s.charAt(1);
45     m1 = 2 == s.length();
46     if (ign)
47     {
48       mask1 = mkmask(c1);
49     }
50     else
51     {
52       mask1 = 0;
53     }
54   }
55
56   public int find(StringLike s, int start, int end)
57   {
58     if (start > end)
59     {
60       return -1;
61     }
62     start += offset;
63     int vend = min(s.length() - 2, end + offset);
64     for (int i = start; i <= vend; i++)
65     {
66       if (0 == (s.charAt(i) & mask) && 0 == (s.charAt(i + 1) & mask1))
67       {
68         // if(m1||s.regionMatches(ign,i,src,0,src.length()) )
69         if (m1 || CaseMgr.regionMatches(s, ign, i, src, 0, src.length()))
70         {
71           return i - offset;
72         }
73       }
74     }
75     return -1;
76   }
77 }