parseOperand function

dynamic parseOperand(
  1. dynamic parser,
  2. dynamic b0
)

Implementation

parseOperand(parser, b0) {
  var b1;
  var b2;
  var b3;
  var b4;
  if (b0 == 28) {
    b1 = parser.parseByte();
    b2 = parser.parseByte();
    return b1 << 8 | b2;
  }

  if (b0 == 29) {
    b1 = parser.parseByte();
    b2 = parser.parseByte();
    b3 = parser.parseByte();
    b4 = parser.parseByte();
    return b1 << 24 | b2 << 16 | b3 << 8 | b4;
  }

  if (b0 == 30) {
    return parseFloatOperand(parser);
  }

  if (b0 >= 32 && b0 <= 246) {
    return b0 - 139;
  }

  if (b0 >= 247 && b0 <= 250) {
    b1 = parser.parseByte();
    return (b0 - 247) * 256 + b1 + 108;
  }

  if (b0 >= 251 && b0 <= 254) {
    b1 = parser.parseByte();
    return -(b0 - 251) * 256 - b1 - 108;
  }

  throw ('Invalid b0 ' + b0);
}