int CBlockStream::ReadBlock( CBlock *get ) { CBlockMember *bMember; int b_id, numMembers; unsigned char flags; if (!BlockAvailable()) return false; b_id = GetInteger(); numMembers = GetInteger(); flags = (unsigned char) GetChar(); if (numMembers < 0) return false; get->Create( b_id ); get->SetFlags( flags ); while ( numMembers-- > 0) { bMember = new CBlockMember; bMember->ReadMember( &m_stream, &m_streamPos ); get->AddMember( bMember ); } return true; }
int CBlockStream::ReadBlock( CBlock *get ) { CBlockMember *bMember; int b_id, numMembers; unsigned char flags; if (!BlockAvailable()) return false; b_id = GetInteger(); numMembers = GetInteger(); flags = (unsigned char) GetChar(); if (numMembers < 0) return false; get->Create( b_id ); get->SetFlags( flags ); // Stream blocks are generally temporary as they // are just used in an initial parsing phase... while ( numMembers-- > 0) { bMember = new CBlockMember; bMember->ReadMember( &m_stream, &m_streamPos ); get->AddMember( bMember ); } return true; }
int CBlockStream::ReadBlock( CBlock *get, CIcarus* icarus ) { CBlockMember *bMember; int b_id, numMembers; unsigned char flags; if (!BlockAvailable()) return false; b_id = LittleLong(*(int *) (m_stream + m_streamPos)); m_streamPos += sizeof( b_id ); numMembers = LittleLong(*(int *) (m_stream + m_streamPos)); m_streamPos += sizeof( numMembers ); flags = *(unsigned char*) (m_stream + m_streamPos); m_streamPos += sizeof( flags ); if (numMembers < 0) return false; get->Create( b_id ); get->SetFlags( flags ); while ( numMembers-- > 0) { bMember = new CBlockMember; bMember->ReadMember( &m_stream, &m_streamPos, icarus ); get->AddMember( bMember ); } return true; }
int CBlockStream::ReadBlock( CBlock *get, CIcarus* icarus ) { CBlockMember *bMember; int b_id, numMembers; unsigned char flags; if (!BlockAvailable()) return false; b_id = *(int *) (m_stream + m_streamPos); m_streamPos += sizeof( b_id ); numMembers = *(int *) (m_stream + m_streamPos); m_streamPos += sizeof( numMembers ); flags = *(unsigned char*) (m_stream + m_streamPos); m_streamPos += sizeof( flags ); if (numMembers < 0) return false; get->Create( b_id ); get->SetFlags( flags ); // Stream blocks are generally temporary as they // are just used in an initial parsing phase... #ifdef _XBOX extern void Z_SetNewDeleteTemporary(bool bTemp); Z_SetNewDeleteTemporary(true); #endif while ( numMembers-- > 0) { bMember = new CBlockMember; bMember->ReadMember( &m_stream, &m_streamPos, icarus ); get->AddMember( bMember ); } #ifdef _XBOX Z_SetNewDeleteTemporary(false); #endif return true; }