readCharString static method

List readCharString(
  1. Uint8List data,
  2. int offset,
  3. int length
)

Implementation

static List readCharString(Uint8List data, int offset, int length) {
  int end = offset + length;
  List arr = [];
  int _len = data.length;

  while (offset < end) {
    int? b0 = null;
    if (offset < _len) {
      b0 = data[offset];
    }

    int _offset1 = offset + 1;

    int? b1 = null;
    if (_offset1 < _len) {
      b1 = data[_offset1];
    }

    int vs = 1;
    var op = null, val = null;
    // operand
    if (b0 != null && b0 <= 20) {
      op = b0;
      vs = 1;
    }
    if (b0 != null && b0 == 12) {
      op = b0 * 100 + b1!;
      vs = 2;
    }
    if (b0 != null && b0 == 19 || b0 == 20) {
      op = b0 /*+" "+b1*/;
      vs = 2;
    }
    if (b0 != null && 21 <= b0 && b0 <= 27) {
      op = b0;
      vs = 1;
    }
    if (b0 != null && b0 == 28) {
      val = TyprBin.readShort(data, offset + 1);
      vs = 3;
    }
    if (b0 != null && 29 <= b0 && b0 <= 31) {
      op = b0;
      vs = 1;
    }
    if (b0 != null && 32 <= b0 && b0 <= 246) {
      val = b0 - 139;
      vs = 1;
    }
    if (b0 != null && 247 <= b0 && b0 <= 250) {
      val = (b0 - 247) * 256 + b1! + 108;
      vs = 2;
    }
    if (b0 != null && 251 <= b0 && b0 <= 254) {
      val = -(b0 - 251) * 256 - b1! - 108;
      vs = 2;
    }
    if (b0 != null && b0 == 255) {
      val = TyprBin.readInt(data, offset + 1) / 0xffff;
      vs = 5;
    }

    arr.add(val != null ? val : "o$op");
    offset += vs;
  }
  return arr;
}