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