Mercurial > hg > Members > kono > jpf-core
view src/classes/java/util/regex/Matcher.java @ 0:61d41facf527
initial v8 import (history reset)
author | Peter Mehlitz <Peter.C.Mehlitz@nasa.gov> |
---|---|
date | Fri, 23 Jan 2015 10:14:01 -0800 |
parents | |
children |
line wrap: on
line source
/* * Copyright (C) 2014, United States Government, as represented by the * Administrator of the National Aeronautics and Space Administration. * All rights reserved. * * The Java Pathfinder core (jpf-core) platform is licensed under the * Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package java.util.regex; /** * model of a regular expression matcher, to save memory and execution time */ public class Matcher { // this is the same trick like java.text.Format - avoiding a native // memory leak by means of overwriting a JPF state tracked index value // (well, it's still a leak since it never gets recycled unless we add a // finalizer, but it should be much less serious) static int nInstances; private int id = nInstances++; // just for peer implementation purposes Pattern pattern; String input; // that's an approximation (don't use CharSequence on the native side) Matcher() { } Matcher (Pattern pattern, CharSequence inp){ this.pattern = pattern; this.input = inp.toString(); register(); } public Pattern pattern() { return pattern; } native void register(); public native Matcher reset(); public String group() { return group(0); } public native String group(int group); public native int groupCount(); public Matcher reset(CharSequence inp) { this.input = inp.toString(); return reset(); } public native boolean matches(); public native boolean find(); public native boolean lookingAt(); public int start() { return start(0); } public native int start(int group); public int end() { return end(0); } public native int end(int group); public native boolean hasTransparentBounds(); public native Matcher useTransparentBounds(boolean b); public native boolean hasAnchoringBounds(); public native Matcher useAnchoringBounds(boolean b); public native int regionStart(); public native int regionEnd(); public native Matcher region(int start, int end); public static native String quoteReplacement(String abc); public native String replaceAll(String replacement); public native String replaceFirst(String replacement); @Override public native String toString(); public native boolean hitEnd(); public native boolean requireEnd(); // TODO public native MatchResult toMatchResult(); // TODO public native StringBuffer appendTail(StringBuffer sb); // TODO public native Matcher appendReplacement(StringBuffer sb, String replacement); }