MCPcopy Create free account
hub / github.com/beefytech/Beef / Read

Method Read

BeefySysLib/FileStream.cpp:102–146  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

100}
101
102void FileStream::Read(void* ptr, int size)
103{
104 if (mCacheBuffer != NULL)
105 {
106 while (true)
107 {
108 int buffOffset = mVFilePos - mCacheReadPos;
109 if ((buffOffset >= 0) && (buffOffset + size < mCacheSize))
110 {
111 // If inside
112 memcpy(ptr, mCacheBuffer + buffOffset, size);
113 mVFilePos += size;
114 return;
115 }
116 else if ((buffOffset >= 0) && (buffOffset < mCacheSize))
117 {
118 int subSize = mCacheReadPos + mCacheSize - mVFilePos;
119 memcpy(ptr, mCacheBuffer + buffOffset, subSize);
120 mVFilePos += subSize;
121
122 ptr = (uint8*) ptr + subSize;
123 size -= subSize;
124 }
125
126 mCacheReadPos = mVFilePos & ~(4096-1);
127 fseek(mFP, mCacheReadPos, SEEK_SET);
128 int aSize = (int)fread(mCacheBuffer, 1, mCacheSize, mFP);
129 if (aSize != mCacheSize)
130 {
131 // Zero out underflow bytes
132 memset((uint8*) ptr + aSize, 0, mCacheSize - aSize);
133 }
134 }
135 }
136 else
137 {
138 int aSize = (int)fread(ptr, 1, size, mFP);
139 if (aSize != size)
140 {
141 // Zero out underflow bytes
142 memset((uint8*) ptr + aSize, 0, size - aSize);
143 mReadPastEnd = true;
144 }
145 }
146}
147
148void FileStream::Write(void* ptr, int size)
149{

Callers

nothing calls this directly

Calls 1

BfpFile_ReadFunction · 0.50

Tested by

no test coverage detected