home *** CD-ROM | disk | FTP | other *** search
- package com.ibm.xml.internal;
-
- import com.ibm.xml.framework.ChunkyCharArray;
- import com.ibm.xml.framework.StringPool;
- import com.ibm.xml.framework.StringProducer;
-
- final class UTF8CharReader$UTF8CharDataChunk implements StringProducer {
- // $FF: synthetic field
- private final UTF8CharReader this$0;
- protected StringPool fInnerStringPool;
- protected int fChunk;
- protected char[] fData;
- protected UTF8CharReader$UTF8CharDataChunk fPreviousChunk;
- protected UTF8CharReader$UTF8CharDataChunk fNextChunk;
-
- public UTF8CharReader$UTF8CharDataChunk(UTF8CharReader var1, StringPool var2, UTF8CharReader$UTF8CharDataChunk var3) throws Exception {
- this.this$0 = var1;
- this.this$0 = var1;
- this.fInnerStringPool = var2;
- this.fChunk = var3 == null ? 0 : var3.fChunk + 1;
- this.fPreviousChunk = var3;
- if (var3 != null) {
- var3.fNextChunk = this;
- }
-
- }
-
- protected UTF8CharReader$UTF8CharDataChunk(UTF8CharReader var1, UTF8CharReader$UTF8CharDataChunk var2) {
- this.this$0 = var1;
- this.this$0 = var1;
- this.fInnerStringPool = var2.fInnerStringPool;
- this.fChunk = var2.fChunk;
- this.fData = var2.fData;
- this.fPreviousChunk = null;
- this.fNextChunk = null;
- }
-
- public UTF8CharReader$UTF8CharDataChunk chunkFor(int var1) {
- int var2 = var1 >> 14;
-
- UTF8CharReader$UTF8CharDataChunk var3;
- for(var3 = this; var2 != var3.fChunk; var3 = var3.fPreviousChunk) {
- }
-
- return var3;
- }
-
- public char[] toCharArray() {
- return this.fData;
- }
-
- public void setCharArray(char[] var1) {
- this.fData = var1;
- }
-
- public UTF8CharReader$UTF8CharDataChunk nextChunk() {
- return this.fNextChunk;
- }
-
- public void clearPreviousChunk() {
- if (this.fPreviousChunk != null) {
- this.fPreviousChunk.fNextChunk = null;
- this.fPreviousChunk = null;
- }
-
- }
-
- public String toString(int var1, int var2) {
- if (var1 + var2 <= 16384) {
- return new String(this.fData, var1, var2);
- } else {
- StringBuffer var3 = new StringBuffer(var2);
- int var4 = 16384 - var1;
- var3.append(this.fData, var1, var4);
- var2 -= var4;
- UTF8CharReader$UTF8CharDataChunk var5 = this.fNextChunk;
-
- do {
- var4 = var2 <= 16384 ? var2 : 16384;
- var3.append(var5.fData, 0, var4);
- var2 -= var4;
- var5 = var5.fNextChunk;
- } while(var2 > 0);
-
- String var6 = var3.toString();
- Object var8 = null;
- return var6;
- }
- }
-
- public boolean equalsString(int var1, int var2, String var3, int var4) {
- if (var2 != var4) {
- return false;
- } else if (var1 + var2 <= 16384) {
- for(int var11 = 0; var11 < var2; ++var11) {
- if (this.fData[var1++] != var3.charAt(var11)) {
- return false;
- }
- }
-
- return true;
- } else {
- int var5 = 16384 - var1;
- int var6 = 0;
-
- while(var6 < var5) {
- if (this.fData[var1++] != var3.charAt(var6++)) {
- return false;
- }
- }
-
- var2 -= var5;
- UTF8CharReader$UTF8CharDataChunk var7 = this.fNextChunk;
-
- do {
- var1 = 0;
- var5 = var2 <= 16384 ? var2 : 16384;
- var2 -= var5;
-
- while(var5-- > 0) {
- if (var7.fData[var1++] != var3.charAt(var6++)) {
- return false;
- }
- }
-
- var7 = var7.fNextChunk;
- } while(var2 > 0);
-
- return true;
- }
- }
-
- protected UTF8CharReader$UTF8CharDataChunk createClump(int var1) {
- UTF8CharReader$UTF8CharDataChunk var2 = new UTF8CharReader$UTF8CharDataChunk(this.this$0, this);
- UTF8CharReader$UTF8CharDataChunk var3 = this.fNextChunk;
- UTF8CharReader$UTF8CharDataChunk var4 = var2;
-
- UTF8CharReader$UTF8CharDataChunk var5;
- do {
- var5 = new UTF8CharReader$UTF8CharDataChunk(this.this$0, var3);
- var4.fNextChunk = var5;
- var3 = var3.fNextChunk;
- var4 = var5;
- } while(var5.fChunk != var1);
-
- return var2;
- }
-
- public int addString(int var1, int var2) {
- int var3 = var1 >> 14;
- if (var3 != this.fChunk) {
- if (this.fPreviousChunk != null) {
- return this.fPreviousChunk.addString(var1, var2);
- } else {
- try {
- this.this$0.fErrorHandler.error(168);
- } catch (Exception var5) {
- }
-
- return -1;
- }
- } else {
- int var4 = var1 + var2 - 1 >> 14;
- return var3 == var4 ? this.fInnerStringPool.addString(this, var1 & 16383, var2) : this.fInnerStringPool.addString(this.createClump(var4), var1 & 16383, var2);
- }
- }
-
- public int addSymbol(int var1, int var2, int var3) {
- int var4 = var1 >> 14;
- if (var4 != this.fChunk) {
- if (this.fPreviousChunk != null) {
- return this.fPreviousChunk.addSymbol(var1, var2, var3);
- } else {
- try {
- this.this$0.fErrorHandler.error(168);
- } catch (Exception var11) {
- }
-
- return -1;
- }
- } else {
- int var5 = var1 + var2 - 1 >> 14;
- int var6 = var1 & 16383;
- if (var4 == var5) {
- if (var3 == 0) {
- for(int var13 = 0; var13 < var2; ++var13) {
- var3 = StringHasher.hashChar(var3, var13, this.fData[var6++] & '\uffff');
- }
-
- var3 = StringHasher.finishHash(var3);
- }
-
- return this.fInnerStringPool.addSymbol(this, var1 & 16383, var2, var3);
- } else {
- if (var3 == 0) {
- int var7 = 0;
-
- int var9;
- for(var9 = 16384 - var6; var6 < 16384; var3 = StringHasher.hashChar(var3, var7++, this.fData[var6++] & '\uffff')) {
- }
-
- int var8 = var2 - var9;
- UTF8CharReader$UTF8CharDataChunk var10 = this.fNextChunk;
-
- do {
- var6 = 0;
-
- for(var9 = var8 <= 16384 ? var8 : 16384; var6 < var9; var3 = StringHasher.hashChar(var3, var7++, var10.fData[var6++] & '\uffff')) {
- }
-
- var8 -= var9;
- var10 = var10.fNextChunk;
- } while(var8 > 0);
-
- var3 = StringHasher.finishHash(var3);
- }
-
- return this.fInnerStringPool.addSymbol(this.createClump(var5), var1 & 16383, var2, var3);
- }
- }
- }
-
- public void append(ChunkyCharArray var1, int var2, int var3) {
- UTF8CharReader$UTF8CharDataChunk var4 = this.chunkFor(var2);
- int var5 = var2 & 16383;
- int var6 = var5 + var3 <= 16384 ? var3 : 16384 - var5;
-
- while(true) {
- var1.append(var4.fData, var5, var6);
- var3 -= var6;
- if (var3 == 0) {
- return;
- }
-
- var4 = var4.fNextChunk;
- var5 = 0;
- var6 = var3 <= 16384 ? var3 : 16384;
- }
- }
- }
-