コード例 #1
0
ファイル: PacketHeaderParts.cpp プロジェクト: lailongwei/llbc
void LLBC_PacketHeaderParts::SetPartToPacket(int serialNo, const _Part &part, LLBC_Packet &packet)
{
    switch (part.type)
    {
    case _PartTypes::SInt32Type:
        packet.SetHeaderPartVal(serialNo, static_cast<sint32>(part.value.i64Val));
        break;
    case _PartTypes::UInt32Type:
        packet.SetHeaderPartVal(serialNo, static_cast<uint32>(part.value.i64Val));
        break;

    case _PartTypes::SInt16Type:
        packet.SetHeaderPartVal(serialNo, static_cast<sint16>(part.value.i64Val));
        break;
    case _PartTypes::UInt16Type:
        packet.SetHeaderPartVal(serialNo, static_cast<uint16>(part.value.i64Val));
        break;

    case _PartTypes::SInt8Type:
        packet.SetHeaderPartVal(serialNo, static_cast<sint8>(part.value.i64Val));
        break;
    case _PartTypes::UInt8Type:
        packet.SetHeaderPartVal(serialNo, static_cast<uint8>(part.value.i64Val));
        break;

    case _PartTypes::SInt64Type:
        packet.SetHeaderPartVal(serialNo, part.value.i64Val);
        break;
    case _PartTypes::UInt64Type:
        packet.SetHeaderPartVal(serialNo, static_cast<uint64>(part.value.i64Val));
        break;

    case _PartTypes::FloatType:
        packet.SetHeaderPartVal(serialNo, *reinterpret_cast<const float *>(&part.value.i64Val));
        break;
    case _PartTypes::DoubleType:
        packet.SetHeaderPartVal(serialNo, *reinterpret_cast<const double *>(&part.value.i64Val));
        break;

    case _PartTypes::StrType:
        packet.SetHeaderPartVal(serialNo, *part.value.strVal);
        break;

    case _PartTypes::BytesType:
        packet.SetHeaderPartVal(serialNo,
                                part.value.bytesVal->GetDataStartWithReadPos(),
                                part.value.bytesVal->GetReadableSize());
        break;

    default:
        ASSERT(false && "llbc library internal error, Unknown packet header part type: %d");
        break;
    }
}