1/*
2 * Copyright (C) 2008 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.ibm.icu4jni.regex;
18
19public class NativeRegEx {
20
21    /**
22     * Opens (compiles) an ICU regular expression.
23     */
24    public static native int open(String pattern, int flags);
25
26    /**
27     * Makes a copy of a compiled regular expression.
28     */
29    public static native int clone(int regex);
30
31    /**
32     * Closes the regular expression, recovering all resources (memory) it was
33     * holding.
34     */
35    public static native void close(int regex);
36
37    /**
38     * Sets the subject text string upon which the regular expression will look
39     * for matches.
40     */
41    public static native void setText(int regex, String text);
42
43    /**
44     * Attempts to match the input string, beginning at startIndex, against the
45     * pattern.
46     */
47    public static native boolean matches(int regex, int startIndex);
48
49    /**
50     * Attempts to match the input string, starting from the specified index,
51     * against the pattern.
52     */
53    public static native boolean lookingAt(int regex, int startIndex);
54
55    /**
56     * Finds the first matching substring of the input string that matches the
57     * pattern.
58     */
59    public static native boolean find(int regex, int startIndex);
60
61    /**
62     * Finds the first matching substring of the input string that matches the
63     * pattern.
64     */
65    public static native boolean findNext(int regex);
66
67    /**
68     * Gets the number of capturing groups in this regular expression's pattern.
69     */
70    public static native int groupCount(int regex);
71
72    /**
73     * Gets all the group information for the current match of the pattern.
74     */
75    public static native void startEnd(int regex, int[] startEnd);
76
77    /**
78     * Sets the region of the input to be considered during matching.
79     */
80    public static native void setRegion(int regex, int start, int end);
81
82    /**
83     * Queries the start of the region of the input to be considered during
84     * matching.
85     */
86    public static native int regionStart(int regex);
87
88    /**
89     * Queries the end of the region of the input to be considered during
90     * matching.
91     */
92    public static native int regionEnd(int regex);
93
94    /**
95     * Controls the transparency of the region bounds.
96     */
97    public static native void useTransparentBounds(int regex, boolean value);
98
99    /**
100     * Queries the transparency of the region bounds.
101     */
102    public static native boolean hasTransparentBounds(int regex);
103
104    /**
105     * Controls the anchoring property of the region bounds.
106     */
107    public static native void useAnchoringBounds(int regex, boolean value);
108
109    /**
110     * Queries the anchoring property of the region bounds.
111     */
112    public static native boolean hasAnchoringBounds(int regex);
113
114    /**
115     * Queries whether we hit the end of the input during the last match.
116     */
117    public static native boolean hitEnd(int regex);
118
119    /**
120     * Queries whether more input might change a current match, but wouldn't
121     * destroy it.
122     */
123    public static native boolean requireEnd(int regex);
124
125    /**
126     * Resets the matcher, cause a current match to be lost, and sets the
127     * position at which a subsequent findNext() would start.
128     */
129    public static native void reset(int regex, int position);
130}
131