unpack method
dynamic
unpack()
Implementation
Unpackable unpack() {
int type = unpackUint8();
if (type < 0x80) {
return type;
} else if ((type ^ 0xe0) < 0x20) {
return (type ^ 0xe0) - 0x20;
}
int size;
if ((size = type ^ 0xa0) <= 0x0f) {
return unpackRaw(size);
} else if ((size = type ^ 0xb0) <= 0x0f) {
return unpackString(size);
} else if ((size = type ^ 0x90) <= 0x0f) {
return unpackArray(size);
} else if ((size = type ^ 0x80) <= 0x0f) {
return unpackMap(size);
}
switch (type) {
case 0xc0:
return null;
case 0xc1:
return null;
case 0xc2:
return false;
case 0xc3:
return true;
case 0xca:
return unpackFloat();
case 0xcb:
return unpackDouble();
case 0xcc:
return unpackUint8();
case 0xcd:
return unpackUint16();
case 0xce:
return unpackUint32();
case 0xcf:
return unpackUint64();
case 0xd0:
return unpackInt8();
case 0xd1:
return unpackInt16();
case 0xd2:
return unpackInt32();
case 0xd3:
return unpackInt64();
case 0xd8:
size = unpackUint16();
return unpackString(size);
case 0xd9:
size = unpackUint32();
return unpackString(size);
case 0xda:
size = unpackUint16();
return unpackRaw(size);
case 0xdb:
size = unpackUint32();
return unpackRaw(size);
case 0xdc:
size = unpackUint16();
return unpackArray(size);
case 0xdd:
size = unpackUint32();
return unpackArray(size);
case 0xde:
size = unpackUint16();
return unpackMap(size);
case 0xdf:
size = unpackUint32();
return unpackMap(size);
}
}