USerializedSet.java
3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*
* Decompiled with CFR 0_118.
*/
package com.adobe.agl.impl;
public final class USerializedSet {
private char[] array = new char[8];
private int arrayOffset;
private int bmpLength;
private int length;
public final boolean getSet(char[] src, int srcStart) {
this.array = null;
this.length = 0;
this.bmpLength = 0;
this.arrayOffset = 0;
this.length = src[srcStart++];
if ((this.length & 32768) > 0) {
this.length &= 32767;
if (src.length < srcStart + 1 + this.length) {
this.length = 0;
throw new IndexOutOfBoundsException();
}
this.bmpLength = src[srcStart++];
} else {
if (src.length < srcStart + this.length) {
this.length = 0;
throw new IndexOutOfBoundsException();
}
this.bmpLength = this.length;
}
this.array = new char[this.length];
System.arraycopy(src, srcStart, this.array, 0, this.length);
return true;
}
public final void setToOne(int c) {
if (1114111 < c) {
return;
}
if (c < 65535) {
this.length = 2;
this.bmpLength = 2;
this.array[0] = (char)c;
this.array[1] = (char)(c + 1);
} else if (c == 65535) {
this.bmpLength = 1;
this.length = 3;
this.array[0] = 65535;
this.array[1] = '\u0001';
this.array[2] = '\u0000';
} else if (c < 1114111) {
this.bmpLength = 0;
this.length = 4;
this.array[0] = (char)(c >> 16);
this.array[1] = (char)c;
this.array[2] = (char)(++c >> 16);
this.array[3] = (char)c;
} else {
this.bmpLength = 0;
this.length = 2;
this.array[0] = 16;
this.array[1] = 65535;
}
}
public final boolean getRange(int rangeIndex, int[] range) {
if (rangeIndex < 0) {
return false;
}
if (this.array == null) {
this.array = new char[8];
}
if (range == null || range.length < 2) {
throw new IllegalArgumentException();
}
if ((rangeIndex *= 2) < this.bmpLength) {
range[0] = this.array[rangeIndex++];
range[1] = rangeIndex < this.bmpLength ? this.array[rangeIndex] : (rangeIndex < this.length ? this.array[rangeIndex] << 16 | this.array[rangeIndex + 1] : 1114112);
int[] arrn = range;
arrn[1] = arrn[1] - 1;
return true;
}
rangeIndex -= this.bmpLength;
this.length -= this.bmpLength;
if ((rangeIndex *= 2) < this.length) {
int offset = this.arrayOffset + this.bmpLength;
range[0] = this.array[offset + rangeIndex] << 16 | this.array[offset + rangeIndex + 1];
range[1] = (rangeIndex += 2) < this.length ? this.array[offset + rangeIndex] << 16 | this.array[offset + rangeIndex + 1] : 1114112;
int[] arrn = range;
arrn[1] = arrn[1] - 1;
return true;
}
return false;
}
public final int countRanges() {
return (this.bmpLength + (this.length - this.bmpLength) / 2 + 1) / 2;
}
}