📄 warfiledriverfiledynamic.cpp
字号:
#include "StdAfx.h"#include "WarFileDriverFileDynamic.h" // class implemented#ifndef WAR_FILE_DRIVER_DYNAMIC_H# include "WarFileDriverDynamic.h"#endif/////////////////////////////// PUBLIC /////////////////////////////////////////============================= LIFECYCLE ====================================WarFileDriverFileDynamic::WarFileDriverFileDynamic(WarFileDriverDynamic *pDriver): WarFileDriverFile(pDriver),mIsOpen(false),mPosition(0){}// WarFileDriverFileDynamicWarFileDriverFileDynamic::~WarFileDriverFileDynamic(){}// ~WarFileDriverFileDynamic//============================= OPERATORS ====================================//============================= OPERATIONS ===================================void WarFileDriverFileDynamic::Open(const WarUrl& openUrl, war_uint32_t openFlags) throw(WarException){ if ((openFlags & F_CALLBACK) && !CanDoCallback()) openFlags &= ~F_CALLBACK; mFlags = openFlags; mIsOpen = true;}void WarFileDriverFileDynamic::Close() throw(WarException){ mIsOpen = false; mpContent->Reset(); mpContent = NULL;}war_uint32_t WarFileDriverFileDynamic::Read(war_cptr_t Buf, war_uint32_t bytes) throw(WarException){ war_uint32_t actual_bytes = bytes; war_flen_t bytes_left = GetLength() - GetPosition(); if (actual_bytes > bytes_left) actual_bytes = bytes_left; memcpy(Buf, mpContent->GetValue().c_str() + GetPosition(), actual_bytes); mPosition += actual_bytes; return actual_bytes;}void WarFileDriverFileDynamic::Flush() throw(WarException){}war_flen_t WarFileDriverFileDynamic::Seek(war_flen_t fileOffset, SeekModes seekMode) throw(WarException){ war_flen_t new_pos = 0; switch(seekMode) { case WAR_SEEK_BEGIN: new_pos = fileOffset; break; case WAR_SEEK_CURRENT: new_pos = GetPosition() + fileOffset; break; case WAR_SEEK_END: new_pos = GetLength() + fileOffset; break; } if ((0 > new_pos) && (GetLength() >= new_pos)) WarThrow(WarError(WAR_FERR_SEEK_FAILED), NULL); mPosition = new_pos; return GetPosition();}war_flen_t WarFileDriverFileDynamic::GetLength() throw(WarException){ return mpContent->GetValue().size();}war_flen_t WarFileDriverFileDynamic::GetPosition() throw(WarException){ return mPosition;}bool WarFileDriverFileDynamic::IsEof() throw(WarException){ return GetLength() == GetPosition();}bool WarFileDriverFileDynamic::IsOpen() throw(WarException){ return mIsOpen;}//============================= CALLBACK ===================================//============================= ACCESS ===================================//============================= INQUIRY ===================================/////////////////////////////// PROTECTED ////////////////////////////////////////////////////////////////// PRIVATE ///////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -