3 RawRead::RawRead(File *SrcFile)
5 RawRead::SrcFile=SrcFile;
14 void RawRead::Read(int Size)
16 #if !defined(SHELL_EXT) && !defined(NOCRYPT)
19 int CurSize=Data.Size();
20 int SizeToRead=Size-(CurSize-DataSize);
23 int AlignedReadSize=SizeToRead+((~SizeToRead+1)&0xf);
24 Data.Add(AlignedReadSize);
25 int ReadSize=SrcFile->Read(&Data[CurSize],AlignedReadSize);
26 Crypt->DecryptBlock(&Data[CurSize],AlignedReadSize);
27 DataSize+=ReadSize==0 ? 0:Size;
37 DataSize+=SrcFile->Read(&Data[DataSize],Size);
42 void RawRead::Read(byte *SrcData,int Size)
47 memcpy(&Data[DataSize],SrcData,Size);
53 void RawRead::Get(byte &Field)
60 void RawRead::Get(ushort &Field)
62 Field=Data[ReadPos]+(Data[ReadPos+1]<<8);
67 void RawRead::Get(uint &Field)
69 Field=Data[ReadPos]+(Data[ReadPos+1]<<8)+(Data[ReadPos+2]<<16)+
70 (Data[ReadPos+3]<<24);
75 void RawRead::Get8(Int64 &Field)
80 Field=int32to64(High,Low);
84 void RawRead::Get(byte *Field,int Size)
86 memcpy(Field,&Data[ReadPos],Size);
91 void RawRead::Get(wchar *Field,int Size)
93 RawToWide(&Data[ReadPos],Field,Size);
98 uint RawRead::GetCRC(bool ProcessedOnly)
100 return(DataSize>2 ? CRC(0xffffffff,&Data[2],(ProcessedOnly ? ReadPos:DataSize)-2):0xffffffff);