Big5TransformDecode function

String Big5TransformDecode(
  1. List<int> src
)

Implementation

String Big5TransformDecode(List<int> src) {
  var r = 0;
  var size = 0;
  var nDst = '';

  var nSrc = 0;

  void write(input) => nDst += (new String.fromCharCode(input));

  for (var nSrc = 0; nSrc < src.length; nSrc += size) {
    var c0 = src[nSrc];
    if (c0 < 0x80) {
      r = c0;
      size = 1;
    } else if (0x81 <= c0 && c0 < 0xFF) {
      if (nSrc + 1 >= src.length) {
        r = RUNE_ERROR;
        size = 1;
        write(r);
        continue;
      }
      var c1 = src[nSrc + 1];
      r = 0xfffd;
      size = 2;

      var i = c0 * 16 * 16 + c1;
      var s = decode[i];
      if (s != null) {
        write(s);
        continue;
      }
    } else {
      r = RUNE_ERROR;
      size = 1;
    }
    write(r);
    continue;
  }
  return nDst;
}