더북(TheBook)

여기까지 되었다면 간단한 직렬화 함수를 구현하는 작업은 그저 다음과 같이 DataType 인스턴스의 각 MemberVariable을 순회하는 것으로 마무리된다.

void Serialize(MemoryStream* inMemoryStream,
    const DataType* inDataType, uint8_t* inData)
{
    for (auto& mv : inDataType->GetMemberVariables())
    {
        void* mvData = inData + mv.GetOffset();
        switch (mv.GetPrimitiveType())
        {
            case EPT_Int:
                inMemoryStream->Serialize(*(int*) mvData);
                break;
            case EPT_String:
                inMemoryStream->Serialize(*(std::string*) mvData);
                break;
            case EPT_Float:
                inMemoryStream->Serialize(*(float*) mvData);
                break;
        }
    }
}

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.