Esempio n. 1
0
  public Object read(Buffer buf) {
    HeaderInfo info = parseHeader(buf);
    Object obj = null;

    switch (info.type) {
      case TYPE_INTEGER:
        obj = New.i8((byte) info.value);
        break;
      case TYPE_I8:
        obj = New.i8(buf.readI8());
        break;
      case TYPE_I16:
        obj = New.i16(buf.readI16());
        break;
      case TYPE_I32:
        obj = New.i32(buf.readI32());
        break;
      case TYPE_I64:
        obj = New.i64(buf.readI64());
        break;
      case TYPE_F32:
        obj = New.f32(buf.readF32());
        break;
      case TYPE_F64:
        obj = New.f64(buf.readF64());
        break;
      case TYPE_STRING:
        obj = readString(buf, info.length);
        break;
      case TYPE_TRUE:
        obj = New.bool(true);
        break;
      case TYPE_FALSE:
        obj = New.bool(false);
        break;
      case TYPE_NULL:
        obj = null;
        break;
      case TYPE_LIST:
        obj = readList(buf, info.length);
        break;
      case TYPE_MAP:
        obj = readMap(buf, info.length);
        break;
      default:
        if (W) Log.warn("read variant: unknown type, returning null.");
        obj = null;
    }

    New.release(info);
    return obj;
  }