1/*============================================================================== 2 Bridge class for passing BPositionIO to functions who need CIO in MACLib 3 Ver 1.01 4 Copyright (C) 2005-2008 by SHINTA 5==============================================================================*/ 6 7/*============================================================================== 8BPositionIO* passed to SetPositionIO() must not be released before rleasing this class. 9==============================================================================*/ 10 11//------------------------------------------------------------------------------ 12#include "PositionBridgeIO.h" 13//------------------------------------------------------------------------------ 14// BeOS 15// C++ 16// Proj 17#include "All.h" 18//------------------------------------------------------------------------------ 19//============================================================================== 20TPositionBridgeIO::TPositionBridgeIO() 21 : CIO() 22{ 23 mPositionIO = NULL; 24} 25//------------------------------------------------------------------------------ 26TPositionBridgeIO::~TPositionBridgeIO() 27{ 28} 29//------------------------------------------------------------------------------ 30int TPositionBridgeIO::Close() 31{ 32 return B_OK; 33} 34//------------------------------------------------------------------------------ 35int TPositionBridgeIO::Create(const char* oName) 36{ 37 return B_OK; 38} 39//------------------------------------------------------------------------------ 40int TPositionBridgeIO::Delete() 41{ 42 return B_ERROR; 43} 44//------------------------------------------------------------------------------ 45int TPositionBridgeIO::GetName(char* oBuffer) 46{ 47 strcpy(oBuffer, "<TPositionBridgeIO>"); 48 return B_OK; 49} 50//------------------------------------------------------------------------------ 51int TPositionBridgeIO::GetPosition() 52{ 53 if ( mPositionIO == NULL ) 54 return 0; 55 return mPositionIO->Position(); 56} 57//------------------------------------------------------------------------------ 58int TPositionBridgeIO::GetSize() 59{ 60 if ( mPositionIO == NULL ) 61 return 0; 62 63 off_t aSize; 64 status_t err = mPositionIO->GetSize(&aSize); 65 if (err != B_OK) 66 return -1; 67 68 return aSize; 69} 70//------------------------------------------------------------------------------ 71int TPositionBridgeIO::Open(const char* oName) 72{ 73 return B_OK; 74} 75//------------------------------------------------------------------------------ 76int TPositionBridgeIO::Read(void* oBuf, unsigned int oBytesToRead, unsigned int* oBytesRead) 77{ 78 if ( mPositionIO == NULL ) 79 return ERROR_IO_READ; 80 *oBytesRead = mPositionIO->Read(oBuf, oBytesToRead); 81 return *oBytesRead == 0 ? ERROR_IO_READ : B_OK; 82} 83//------------------------------------------------------------------------------ 84int TPositionBridgeIO::Seek(int oDistance, unsigned int oMoveMode) 85{ 86 if ( mPositionIO == NULL ) 87 return B_ERROR; 88 return mPositionIO->Seek(oDistance, oMoveMode) < B_OK ? B_ERROR : B_OK; 89} 90//------------------------------------------------------------------------------ 91int TPositionBridgeIO::SetEOF() 92{ 93 if ( mPositionIO == NULL ) 94 return B_ERROR; 95 mPositionIO->SetSize(mPositionIO->Position()); 96 return B_OK; 97} 98//------------------------------------------------------------------------------ 99status_t TPositionBridgeIO::SetPositionIO(BPositionIO* oPositionIO) 100{ 101 mPositionIO = oPositionIO; 102 return B_OK; 103} 104//------------------------------------------------------------------------------ 105/* '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 106untested function 107'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' */ 108int TPositionBridgeIO::Write(const void* oBuf, unsigned int oBytesToWrite, unsigned int* oBytesWritten) 109{ 110 if ( mPositionIO == NULL ) 111 return ERROR_IO_WRITE; 112 *oBytesWritten = mPositionIO->Write(oBuf, oBytesToWrite); 113 return *oBytesWritten != oBytesToWrite ? ERROR_IO_WRITE : B_OK; 114} 115//------------------------------------------------------------------------------ 116//============================================================================== 117