| Index: core/src/fxcrt/fx_extension.cpp
|
| diff --git a/core/src/fxcrt/fx_extension.cpp b/core/src/fxcrt/fx_extension.cpp
|
| index aa06fe5df987087c5dceffb946cd7dce7c9a7040..54815465fc7ba4d085a315ca5648a604f1424590 100644
|
| --- a/core/src/fxcrt/fx_extension.cpp
|
| +++ b/core/src/fxcrt/fx_extension.cpp
|
| @@ -14,6 +14,59 @@
|
| #include <ctime>
|
| #endif
|
|
|
| +CFX_CRTFileStream::CFX_CRTFileStream(IFXCRT_FileAccess* pFA)
|
| + : m_pFile(pFA), m_dwCount(1) {}
|
| +
|
| +CFX_CRTFileStream::~CFX_CRTFileStream() {
|
| + if (m_pFile) {
|
| + m_pFile->Release();
|
| + }
|
| +}
|
| +
|
| +IFX_FileStream* CFX_CRTFileStream::Retain() {
|
| + m_dwCount++;
|
| + return this;
|
| +}
|
| +
|
| +void CFX_CRTFileStream::Release() {
|
| + FX_DWORD nCount = --m_dwCount;
|
| + if (!nCount) {
|
| + delete this;
|
| + }
|
| +}
|
| +
|
| +FX_FILESIZE CFX_CRTFileStream::GetSize() {
|
| + return m_pFile->GetSize();
|
| +}
|
| +
|
| +FX_BOOL CFX_CRTFileStream::IsEOF() {
|
| + return GetPosition() >= GetSize();
|
| +}
|
| +
|
| +FX_FILESIZE CFX_CRTFileStream::GetPosition() {
|
| + return m_pFile->GetPosition();
|
| +}
|
| +
|
| +FX_BOOL CFX_CRTFileStream::ReadBlock(void* buffer,
|
| + FX_FILESIZE offset,
|
| + size_t size) {
|
| + return (FX_BOOL)m_pFile->ReadPos(buffer, size, offset);
|
| +}
|
| +
|
| +size_t CFX_CRTFileStream::ReadBlock(void* buffer, size_t size) {
|
| + return m_pFile->Read(buffer, size);
|
| +}
|
| +
|
| +FX_BOOL CFX_CRTFileStream::WriteBlock(const void* buffer,
|
| + FX_FILESIZE offset,
|
| + size_t size) {
|
| + return (FX_BOOL)m_pFile->WritePos(buffer, size, offset);
|
| +}
|
| +
|
| +FX_BOOL CFX_CRTFileStream::Flush() {
|
| + return m_pFile->Flush();
|
| +}
|
| +
|
| IFX_FileStream* FX_CreateFileStream(const FX_CHAR* filename, FX_DWORD dwModes) {
|
| IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create();
|
| if (!pFA) {
|
|
|