igniteui-react-core
Version:
Ignite UI React Core.
240 lines (239 loc) • 8.22 kB
JavaScript
//
// Original version: https://github.com/mosa/Mono-Class-Libraries/blob/master/mcs/class/System.XML/System.Xml/XmlTextReader.cs
//
// System.Xml.XmlInputStream
// encoding-specification-wise XML input stream and reader
//
// Author:
// Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)
//
// (C)2003 Atsushi Enomoto
//
//
// 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.
//
import { TextReader } from "./TextReader";
import { markType } from "./type";
import { ObjectDisposedException } from "./ObjectDisposedException";
import { ArgumentNullException } from "./ArgumentNullException";
import { ArgumentOutOfRangeException } from "./ArgumentOutOfRangeException";
import { ArgumentException } from "./ArgumentException";
import { StringBuilder } from "./StringBuilder";
import { arrayCopy1 } from "./arrayExtended";
import { stringCreateFromCharArraySlice } from "./string";
/**
* @hidden
*/
export let NonBlockingStreamReader = /*@__PURE__*/ (() => {
class NonBlockingStreamReader extends TextReader {
constructor(a, b) {
super();
this.l = null;
this.k = null;
this.p = 0;
this.u = 0;
this.o = 0;
this.z = null;
this.x = null;
this.w = null;
this.n = false;
this.ab = null;
this.m = false;
let c = 1024;
this.w = a;
this.l = new Array(c);
this.o = c;
this.z = b;
this.x = this.y();
this.k = new Array(b.getMaxCharCount(c));
this.p = 0;
this.u = 0;
}
y() {
return this.z.getDecoder();
}
get aa() {
return this.z;
}
i() {
this.dispose1(true);
}
dispose1(a) {
if (a && this.w != null) {
this.w.close();
}
this.l = null;
this.k = null;
this.z = null;
this.x = null;
this.w = null;
super.dispose1(a);
}
ac() {
this.u = this.p = 0;
this.n = false;
this.x = this.y();
}
v() {
this.u = 0;
let a = 0;
this.p = 0;
let b = 0;
do {
a = this.w.read(this.l, 0, this.o);
if (a == 0) {
return 0;
}
this.n = (a < this.o);
this.p += this.x.c(this.l, b, a, this.k, 0);
b = 0;
} while (this.p == 0);
return this.p;
}
a() {
if (this.w == null) {
throw new ObjectDisposedException(1, "StreamReader", "Cannot read from a closed StreamReader");
}
if (this.u >= this.p && (this.n || this.v() == 0)) {
return -1;
}
return this.k[this.u].charCodeAt(0);
}
b() {
if (this.w == null) {
throw new ObjectDisposedException(1, "StreamReader", "Cannot read from a closed StreamReader");
}
if (this.u >= this.p && this.v() == 0) {
return -1;
}
return this.k[this.u++].charCodeAt(0);
}
c(a, b, c) {
if (this.w == null) {
throw new ObjectDisposedException(1, "StreamReader", "Cannot read from a closed StreamReader");
}
if (a == null) {
throw new ArgumentNullException(0, "dest_buffer");
}
if (b < 0) {
throw new ArgumentOutOfRangeException(2, "index", "< 0");
}
if (c < 0) {
throw new ArgumentOutOfRangeException(2, "count", "< 0");
}
if (b > a.length - c) {
throw new ArgumentException(1, "index + count > dest_buffer.Length");
}
let d = 0;
{
if (this.u >= this.p && this.v() == 0) {
return d > 0 ? d : 0;
}
let e = Math.min(this.p - this.u, c);
arrayCopy1(this.k, this.u, a, b, e);
this.u += e;
b += e;
c -= e;
d += e;
}
return d;
}
s() {
let a = '\0';
for (; this.u < this.p; this.u++) {
a = this.k[this.u];
if (a == '\n') {
this.u++;
let b = (this.m) ? (this.u - 2) : (this.u - 1);
if (b < 0) {
b = 0;
}
this.m = false;
return b;
}
else if (this.m) {
this.m = false;
return this.u - 1;
}
this.m = (a == '\r');
}
return -1;
}
g() {
if (this.w == null) {
throw new ObjectDisposedException(1, "StreamReader", "Cannot read from a closed StreamReader");
}
if (this.u >= this.p && this.v() == 0) {
return null;
}
let a = this.u;
let b = this.s();
if (b < this.p && b >= a) {
return stringCreateFromCharArraySlice(this.k, a, b - a);
}
if (this.ab == null) {
this.ab = new StringBuilder(0);
}
else {
this.ab.c = 0;
}
while (true) {
if (this.m) {
this.p--;
}
this.ab.l(stringCreateFromCharArraySlice(this.k, a, this.p - a));
if (this.v() == 0) {
if (this.ab.b > 32768) {
let c = this.ab;
this.ab = null;
return c.f(0, c.c);
}
return this.ab.f(0, this.ab.c);
}
a = this.u;
b = this.s();
if (b < this.p && b >= a) {
this.ab.l(stringCreateFromCharArraySlice(this.k, a, b - a));
if (this.ab.b > 32768) {
let d = this.ab;
this.ab = null;
return d.f(0, d.c);
}
return this.ab.f(0, this.ab.c);
}
}
}
h() {
if (this.w == null) {
throw new ObjectDisposedException(1, "StreamReader", "Cannot read from a closed StreamReader");
}
let a = new StringBuilder(0);
let b = this.k.length;
let c = new Array(b);
let d;
while ((d = this.c(c, 0, b)) != 0) {
a.g(c, 0, d);
}
return a.toString();
}
}
NonBlockingStreamReader.$t = /*@__PURE__*/ markType(NonBlockingStreamReader, 'NonBlockingStreamReader', TextReader.$);
return NonBlockingStreamReader;
})();