/*******************************************************************************
* Copyright (c) 2012-2015 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.ide.ext.java.jdt.core.util;
/**
* @author Evgen Vidolob
*/
public class CharTable1 extends CharTable {
static final CharTable1 INSTANCE = new CharTable1();
static final char X[] = (
"\000\001\002\003\004\004\004\005\006\007\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\010\011\012\003\013\003\003\003\014\015\016\004\017\020" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\021\022\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\023\023\023\023\023\023\023\024" +
"\023\025\023\026\027\030\031\003\003\003\003\003\003\003\003\003\032\032\033" +
"\003\003\003\003\003\034\035\036\037\040\041\042\043\044\045\046\047\050\034" +
"\035\051\037\052\053\054\043\055\056\057\060\061\062\063\064\065\066\067\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003" +
"\003\003\003\003\003\003\003\003\003\003\003\003\003\003\003").toCharArray();
static final char Y[] = (
"\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000" +
"\004\000\000\000\000\000\000\000\000\000\004\000\002\000\000\000\000\000\000" +
"\000\006\000\000\000\000\000\000\000\006\006\006\006\006\006\006\006\006\006" +
"\006\006\006\006\006\006\006\000\000\000\000\000\000\000\000\000\000\000\000" +
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004\006" +
"\006\010\012\006\014\016\016\016\016\020\022\024\024\024\024\024\024\024\024" +
"\024\024\024\024\024\024\024\024\006\026\030\030\030\030\000\000\000\000\000" +
"\000\000\000\000\000\000\000\000\000\000\004\032\034\006\006\006\006\006\006" +
"\000\000\000\000\000\000\000\000\000\000\000\000\000\036\006\006\006\006\006" +
"\006\006\006\006\006\000\000\000\000\000\000\000\000\000\000\000\000\000\000" +
"\000\040\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042\042" +
"\042\042\042\044\044\044\044\044\044\044\044\044\044\044\044\044\044\044\044" +
"\044\044\044\044\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" +
"\000\000\000\000\000\000\000\000\006\046\046\046\046\046\006\006\006\006\006" +
"\006\006\006\006\006\006\050\050\050\006\052\050\050\050\050\050\050\050\050" +
"\050\050\050\050\050\050\050\050\050\050\050\050\050\050\054\052\006\052\054" +
"\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030" +
"\030\030\030\030\030\030\030\030\006\006\006\006\006\030\030\030\012\006\030" +
"\030\030\030\030\030\030\030\030\030\030\030\030\056\060\062\030\056\064\064" +
"\066\070\070\070\072\062\062\062\074\076\062\062\062\030\030\030\030\030\030" +
"\030\030\030\030\030\030\030\030\030\062\062\030\030\030\030\030\030\030\030" +
"\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\030\006\100\100" +
"\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100\100" +
"\100\100\100\100\100\100\102\006\006\006\006\104\104\104\104\104\104\104\104" +
"\104\104\104\104\104\106\106\106\106\106\106\106\106\106\106\106\106\106\104" +
"\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106\110\106\106\106" +
"\106\106\106\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\104" +
"\106\106\106\106\106\106\106\106\106\106\106\106\106\112\104\006\112\114\112" +
"\114\104\112\104\104\104\104\106\106\116\116\106\106\106\116\106\106\106\106" +
"\106\104\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106\106\106" +
"\106\106\106\106\106\106\106\106\104\114\104\112\114\104\104\104\112\104\104" +
"\104\112\106\106\106\106\106\106\106\106\106\106\106\106\106\104\114\104\112" +
"\104\104\112\112\006\104\104\104\112\106\106\106\106\106\106\106\106\106\106" +
"\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106" +
"\106\106\106\106\106\106\106\106\106\106\104\104\104\104\104\104\104\106\106" +
"\106\106\106\106\106\106\106\104\106\106\106\106\106\106\106\106\106\106\106" +
"\106\106\104\104\104\104\104\104\104\104\104\104\104\104\104\106\106\106\106" +
"\106\106\106\106\106\106\106\106\106\104\104\104\104\104\104\104\104\106\106" +
"\006\006\104\104\104\104\104\104\104\104\104\104\104\104\120\106\106\106\106" +
"\106\106\106\106\106\106\106\106\122\106\106\106\104\104\104\104\104\104\104" +
"\104\104\104\104\104\120\106\106\106\106\106\106\106\106\106\106\106\106\122" +
"\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\120\106\106\106" +
"\106\106\106\106\106\106\106\106\106\122\106\106\106\104\104\104\104\104\104" +
"\104\104\104\104\104\104\120\106\106\106\106\106\106\106\106\106\106\106\106" +
"\122\106\106\106\104\104\104\104\104\104\104\104\104\104\104\104\120\106\106" +
"\106\106\106\106\106\106\106\106\106\106\122\106\106\106\006\006\124\124\124" +
"\124\124\126\126\126\126\126\130\130\130\130\130\132\132\132\132\132\134\134" +
"\134\134\134").toCharArray();
static final int A[] = new int[94];
static final String A_DATA =
"\000\u7005\000\u7005\u7800\000\000\u7005\000\u7005\u7800\000\u7800\000\u7800" +
"\000\000\030\u6800\030\000\034\u7800\000\u7800\000\000\u074B\000\u074B\000" +
"\u074B\000\u074B\000\u046B\000\u058B\000\u080B\000\u080B\000\u080B\u7800\000" +
"\000\034\000\034\000\034\000\u042B\000\u048B\000\u050B\000\u080B\000\u700A" +
"\u7800\000\u7800\000\000\030\242\u7001\242\u7001\241\u7002\241\u7002\000\u3409" +
"\000\u3409\u0800\u7005\u0800\u7005\u0800\u7005\u7800\000\u7800\000\u0800\u7005" +
"\000\034\000\u3008\000\u3008\u4000\u3006\u4000\u3006\u4000\u3006\000\u3008" +
"\000\u3008\000\u3008\u4800\u1010\u4800\u1010\u4800\u1010\u4800\u1010\u4000" +
"\u3006\u4000\u3006\000\034\000\034\u4000\u3006\u6800\034\u6800\034\u6800\034" +
"\u7800\000\000\u7001\000\u7001\000\u7002\000\u7002\000\u7002\u7800\000\000" +
"\u7001\u7800\000\u7800\000\000\u7001\u7800\000\000\u7002\000\u7001\000\031" +
"\000\u7002\000\031\u1800\u3649\u1800\u3649\u1800\u3509\u1800\u3509\u1800\u37C9" +
"\u1800\u37C9\u1800\u3689\u1800\u3689\u1800\u3549\u1800\u3549";
static {
char[] data = A_DATA.toCharArray();
assert (data.length == (94 * 2));
int i = 0, j = 0;
while (i < (94 * 2)) {
int entry = data[i++] << 16;
A[j++] = entry | data[i++];
}
}
@Override
int getProp(int ch) {
char offset = (char)ch;
return A[Y[(X[offset >> 5] << 4) | ((offset >> 1) & 0xF)] | (offset & 0x1)];
}
@Override
int getNumericValue(int ch) {
int val = getProp(ch);
int result;
switch (val & 0xC00) {
default:
case (0x00000000):
result = -1;
break;
case (0x00000400):
result = ch + ((val & 0x3E0) >> 5) & 0x1F;
break;
case (0x00000800):
switch (ch) {
case 0x10113:
result = 40;
break;
case 0x10114:
result = 50;
break;
case 0x10115:
result = 60;
break;
case 0x10116:
result = 70;
break;
case 0x10117:
result = 80;
break;
case 0x10118:
result = 90;
break;
case 0x10119:
result = 100;
break;
case 0x1011A:
result = 200;
break;
case 0x1011B:
result = 300;
break;
case 0x1011C:
result = 400;
break;
case 0x1011D:
result = 500;
break;
case 0x1011E:
result = 600;
break;
case 0x1011F:
result = 700;
break;
case 0x10120:
result = 800;
break;
case 0x10121:
result = 900;
break;
case 0x10122:
result = 1000;
break;
case 0x10123:
result = 2000;
break;
case 0x10124:
result = 3000;
break;
case 0x10125:
result = 4000;
break;
case 0x10126:
result = 5000;
break;
case 0x10127:
result = 6000;
break;
case 0x10128:
result = 7000;
break;
case 0x10129:
result = 8000;
break;
case 0x1012A:
result = 9000;
break;
case 0x1012B:
result = 10000;
break;
case 0x1012C:
result = 20000;
break;
case 0x1012D:
result = 30000;
break;
case 0x1012E:
result = 40000;
break;
case 0x1012F:
result = 50000;
break;
case 0x10130:
result = 60000;
break;
case 0x10131:
result = 70000;
break;
case 0x10132:
result = 80000;
break;
case 0x10133:
result = 90000;
break;
case 0x10323:
result = 50;
break;
default:
result = -2;
break;
}
break;
case (0x00000C00):
result = (ch + ((val & 0x3E0) >> 5) & 0x1F) + 10;
break;
}
return result;
}
@Override
boolean isWhitespace(int ch) {
int props = getProp(ch);
return ((props & 0x00007000) == 0x00004000);
}
@Override
boolean isJavaIdentifierStart(int ch) {
int props = getProp(ch);
return ((props & 0x00007000) >= 0x00005000);
}
@Override
boolean isJavaIdentifierPart(int ch) {
int props = getProp(ch);
return ((props & 0x00003000) != 0);
}
}