Initial import
[jpf-core.git] / src / classes / java / util / regex / Pattern.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18
19 package java.util.regex;
20
21 /**
22  * simplified model of java.util.refex.Pattern, which otherwise
23  * is very expensive in terms of state memory and execution costs
24  */
25 public class Pattern {
26
27   String regex;
28   int flags;
29   
30   public static Pattern compile (String regex) {
31     return new Pattern(regex, 0);
32   }
33   
34   public static Pattern compile (String regex, int flags){
35     return new Pattern(regex, flags);
36   }
37   
38   private Pattern (String regex, int flags){
39     this.regex = regex;
40     this.flags = flags;
41   }
42   
43   public Matcher matcher (CharSequence input){
44     return new Matcher(this, input);
45   }
46   
47   public String pattern() {
48     return regex;
49   }
50   
51   public String[] split (CharSequence input){
52     return split(input,0);
53   }
54
55   public String[] split (CharSequence input, int limit){
56     return split0(input.toString(), limit); // just to avoid the CharSequence charAt() hassle on the native side
57   }
58
59   private native String[] split0(String input, int limit);
60   
61   @Override
62   public String toString() {
63     return regex;
64   }
65 }