StateNode.java revision 953:221a84ef44c0
1126370Sphk/*
2126370Sphk * Permission is hereby granted, free of charge, to any person obtaining a copy of
3247405Salfred * this software and associated documentation files (the "Software"), to deal in
4247405Salfred * the Software without restriction, including without limitation the rights to
5247405Salfred * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
6126370Sphk * of the Software, and to permit persons to whom the Software is furnished to do
7126370Sphk * so, subject to the following conditions:
8126370Sphk *
9126370Sphk * The above copyright notice and this permission notice shall be included in all
10126370Sphk * copies or substantial portions of the Software.
11126370Sphk *
12126370Sphk * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13126370Sphk * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14126370Sphk * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15126370Sphk * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16126370Sphk * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17126370Sphk * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
18126370Sphk * SOFTWARE.
19126370Sphk */
20126370Sphkpackage jdk.nashorn.internal.runtime.regexp.joni.ast;
21126370Sphk
22126370Sphkimport jdk.nashorn.internal.runtime.regexp.joni.constants.NodeStatus;
23126370Sphk
24126370Sphkpublic abstract class StateNode extends Node implements NodeStatus {
25126370Sphk    protected int state;
26126370Sphk
27126370Sphk    @Override
28126370Sphk    public String toString(final int level) {
29126370Sphk        return "\n  state: " + stateToString();
30126370Sphk    }
31126370Sphk
32126370Sphk    public String stateToString() {
33126370Sphk        final StringBuilder states = new StringBuilder();
34126370Sphk        if (isMinFixed()) states.append("MIN_FIXED ");
35247405Salfred        if (isMaxFixed()) states.append("MAX_FIXED ");
36126370Sphk        if (isMark1()) states.append("MARK1 ");
37126370Sphk        if (isMark2()) states.append("MARK2 ");
38126370Sphk        if (isMemBackrefed()) states.append("MEM_BACKREFED ");
39126370Sphk        if (isStopBtSimpleRepeat()) states.append("STOP_BT_SIMPLE_REPEAT ");
40126370Sphk        if (isRecursion()) states.append("RECURSION ");
41126370Sphk        if (isCalled()) states.append("CALLED ");
42253719Salfred        if (isAddrFixed()) states.append("ADDR_FIXED ");
43247405Salfred        if (isInRepeat()) states.append("IN_REPEAT ");
44126370Sphk        if (isNestLevel()) states.append("NEST_LEVEL ");
45126370Sphk        if (isByNumber()) states.append("BY_NUMBER ");
46126370Sphk
47126370Sphk        return states.toString();
48247405Salfred    }
49247405Salfred
50247405Salfred    public boolean isMinFixed() {
51247405Salfred        return (state & NST_MIN_FIXED) != 0;
52247405Salfred    }
53247405Salfred
54247405Salfred    public void setMinFixed() {
55247405Salfred        state |= NST_MIN_FIXED;
56247405Salfred    }
57247405Salfred
58247405Salfred    public boolean isMaxFixed() {
59247405Salfred        return (state & NST_MAX_FIXED) != 0;
60247405Salfred    }
61247405Salfred
62130585Sphk    public void setMaxFixed() {
63247405Salfred        state |= NST_MAX_FIXED;
64253719Salfred    }
65253719Salfred
66126370Sphk    public boolean isCLenFixed() {
67253719Salfred        return (state & NST_CLEN_FIXED) != 0;
68253719Salfred    }
69253719Salfred
70253719Salfred    public void setCLenFixed() {
71253719Salfred        state |= NST_CLEN_FIXED;
72253719Salfred    }
73247405Salfred
74247405Salfred    public boolean isMark1() {
75247405Salfred        return (state & NST_MARK1) != 0;
76253719Salfred    }
77253719Salfred
78253719Salfred    public void setMark1() {
79253719Salfred        state |= NST_MARK1;
80253719Salfred    }
81253719Salfred
82253719Salfred    public boolean isMark2() {
83253719Salfred        return (state & NST_MARK2) != 0;
84253719Salfred    }
85253719Salfred
86253719Salfred    public void setMark2() {
87253719Salfred        state |= NST_MARK2;
88253719Salfred    }
89253719Salfred
90253719Salfred    public void clearMark2() {
91253719Salfred        state &= ~NST_MARK2;
92253719Salfred    }
93253719Salfred
94253719Salfred    public boolean isMemBackrefed() {
95253719Salfred        return (state & NST_MEM_BACKREFED) != 0;
96253719Salfred    }
97253719Salfred
98253719Salfred    public void setMemBackrefed() {
99253719Salfred        state |= NST_MEM_BACKREFED;
100253719Salfred    }
101253719Salfred
102253719Salfred    public boolean isStopBtSimpleRepeat() {
103253719Salfred        return (state & NST_STOP_BT_SIMPLE_REPEAT) != 0;
104253719Salfred    }
105253719Salfred
106253719Salfred    public void setStopBtSimpleRepeat() {
107253719Salfred        state |= NST_STOP_BT_SIMPLE_REPEAT;
108253719Salfred    }
109253719Salfred
110253719Salfred    public boolean isRecursion() {
111253719Salfred        return (state & NST_RECURSION) != 0;
112253719Salfred    }
113253719Salfred
114247405Salfred    public void setRecursion() {
115247405Salfred        state |= NST_RECURSION;
116221121Sattilio    }
117221121Sattilio
118221121Sattilio    public boolean isCalled() {
119221121Sattilio        return (state & NST_CALLED) != 0;
120221121Sattilio    }
121221121Sattilio
122221121Sattilio    public void setCalled() {
123247405Salfred        state |= NST_CALLED;
124247405Salfred    }
125247405Salfred
126247405Salfred    public boolean isAddrFixed() {
127221121Sattilio        return (state & NST_ADDR_FIXED) != 0;
128221121Sattilio    }
129221121Sattilio
130247405Salfred    public void setAddrFixed() {
131247405Salfred        state |= NST_ADDR_FIXED;
132247405Salfred    }
133247405Salfred
134247405Salfred    public boolean isInRepeat() {
135221121Sattilio        return (state & NST_IN_REPEAT) != 0;
136253719Salfred    }
137253719Salfred
138247405Salfred    public void setInRepeat() {
139221121Sattilio        state |= NST_IN_REPEAT;
140221121Sattilio    }
141221121Sattilio
142221121Sattilio    public boolean isNestLevel() {
143221121Sattilio        return (state & NST_NEST_LEVEL) != 0;
144221121Sattilio    }
145221121Sattilio
146221121Sattilio    public void setNestLevel() {
147221121Sattilio        state |= NST_NEST_LEVEL;
148247405Salfred    }
149247405Salfred
150247405Salfred    public boolean isByNumber() {
151247405Salfred        return (state & NST_BY_NUMBER) != 0;
152247405Salfred    }
153253719Salfred
154247405Salfred    public void setByNumber() {
155247405Salfred        state |= NST_BY_NUMBER;
156247405Salfred    }
157247405Salfred
158247405Salfred}
159247405Salfred