| /* |
| * Permission is hereby granted, free of charge, to any person obtaining a copy of |
| * this software and associated documentation files (the "Software"), to deal in |
| * the Software without restriction, including without limitation the rights to |
| * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies |
| * of the Software, and to permit persons to whom the Software is furnished to do |
| * so, subject to the following conditions: |
| * |
| * The above copyright notice and this permission notice shall be included in all |
| * copies or substantial portions of the Software. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
| * SOFTWARE. |
| */ |
| package jdk.nashorn.internal.runtime.regexp.joni; |
| |
| public class Option { |
| |
| /* options */ |
| public static final int NONE = 0; |
| public static final int IGNORECASE = (1<<0); |
| public static final int EXTEND = (1<<1); |
| public static final int MULTILINE = (1<<2); |
| public static final int SINGLELINE = (1<<3); |
| public static final int FIND_LONGEST = (1<<4); |
| public static final int FIND_NOT_EMPTY = (1<<5); |
| public static final int NEGATE_SINGLELINE = (1<<6); |
| public static final int DONT_CAPTURE_GROUP = (1<<7); |
| public static final int CAPTURE_GROUP = (1<<8); |
| |
| /* options (search time) */ |
| public static final int NOTBOL = (1<<9); |
| public static final int NOTEOL = (1<<10); |
| public static final int POSIX_REGION = (1<<11); |
| public static final int MAXBIT = (1<<12); /* limit */ |
| |
| public static final int DEFAULT = NONE; |
| |
| public static String toString(final int option) { |
| String options = ""; |
| if (isIgnoreCase(option)) options += "IGNORECASE "; |
| if (isExtend(option)) options += "EXTEND "; |
| if (isMultiline(option)) options += "MULTILINE "; |
| if (isSingleline(option)) options += "SINGLELINE "; |
| if (isFindLongest(option)) options += "FIND_LONGEST "; |
| if (isFindNotEmpty(option)) options += "FIND_NOT_EMPTY "; |
| if (isNegateSingleline(option)) options += "NEGATE_SINGLELINE "; |
| if (isDontCaptureGroup(option)) options += "DONT_CAPTURE_GROUP "; |
| if (isCaptureGroup(option)) options += "CAPTURE_GROUP "; |
| |
| if (isNotBol(option)) options += "NOTBOL "; |
| if (isNotEol(option)) options += "NOTEOL "; |
| if (isPosixRegion(option)) options += "POSIX_REGION "; |
| |
| return options; |
| } |
| |
| public static boolean isIgnoreCase(final int option) { |
| return (option & IGNORECASE) != 0; |
| } |
| |
| public static boolean isExtend(final int option) { |
| return (option & EXTEND) != 0; |
| } |
| |
| public static boolean isSingleline(final int option) { |
| return (option & SINGLELINE) != 0; |
| } |
| |
| public static boolean isMultiline(final int option) { |
| return (option & MULTILINE) != 0; |
| } |
| |
| public static boolean isFindLongest(final int option) { |
| return (option & FIND_LONGEST) != 0; |
| } |
| |
| public static boolean isFindNotEmpty(final int option) { |
| return (option & FIND_NOT_EMPTY) != 0; |
| } |
| |
| public static boolean isFindCondition(final int option) { |
| return (option & (FIND_LONGEST | FIND_NOT_EMPTY)) != 0; |
| } |
| |
| public static boolean isNegateSingleline(final int option) { |
| return (option & NEGATE_SINGLELINE) != 0; |
| } |
| |
| public static boolean isDontCaptureGroup(final int option) { |
| return (option & DONT_CAPTURE_GROUP) != 0; |
| } |
| |
| public static boolean isCaptureGroup(final int option) { |
| return (option & CAPTURE_GROUP) != 0; |
| } |
| |
| public static boolean isNotBol(final int option) { |
| return (option & NOTBOL) != 0; |
| } |
| |
| public static boolean isNotEol(final int option) { |
| return (option & NOTEOL) != 0; |
| } |
| |
| public static boolean isPosixRegion(final int option) { |
| return (option & POSIX_REGION) != 0; |
| } |
| |
| /* OP_SET_OPTION is required for these options. ??? */ |
| // public static boolean isDynamic(int option) { |
| // return (option & (MULTILINE | IGNORECASE)) != 0; |
| // } |
| public static boolean isDynamic(final int option) { |
| return false; |
| } |
| } |