Exemple #1
0
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}
Exemple #4
0
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;
}