diff -r 000000000000 -r 2e3d3ce01487 filehandling/fileconverterfw/SRC/INBUF.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filehandling/fileconverterfw/SRC/INBUF.CPP Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,112 @@ +// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include + +#include // for CFileImportBuffer +#include +#include + +#include + +// +// class CImportBufferBase +// + +EXPORT_C CImportBufferBase::CImportBufferBase(TInt aSize) + :iMaxSize(aSize) + {} + +EXPORT_C CImportBufferBase::~CImportBufferBase() + { + delete iImportBuffer; + } + +EXPORT_C void CImportBufferBase::ConstructL() + { + iImportBuffer=HBufC8::NewL(iMaxSize); + ResetImportBuffer(); + } + +EXPORT_C void CImportBufferBase::ResetImportBuffer() +// + { + iReadPtr=CONST_CAST(TText8*,iImportBuffer->Ptr()); + iTBase=iReadPtr; + iEndBuf=iReadPtr; + } + +EXPORT_C void CImportBufferBase::ResetReadPtr() + { + iReadPtr=iTBase; + } + +EXPORT_C TInt CImportBufferBase::ReadL(TText8& aByte) + { + if (iReadPtr == iEndBuf) + { + TInt err = FillImportBuf(); + if (err) + return err; + } + aByte = *(iReadPtr++); + return KErrNone; + } + +EXPORT_C TInt CImportBufferBase::SeekL(TSeek /*aSeekMode*/, TInt /*anOffset*/) + { + // not implemented + return KErrNotSupported; + } + +EXPORT_C TInt CImportBufferBase::MaxSize() + { + return iMaxSize; + } + +EXPORT_C void CImportBufferBase::SetLength(TInt aLength) + { + iEndBuf=iTBase+aLength; + } + +// +// class CFileImportBuffer +// + +EXPORT_C CFileImportBuffer::CFileImportBuffer(RFile aSource, TInt aMaxSize) + : CImportBufferBase(aMaxSize), iSource(aSource) + {} + +EXPORT_C TInt CFileImportBuffer::SeekL(TSeek aSeekMode, TInt anOffset) + { + TInt err=iSource.Seek(aSeekMode, anOffset); + if (err==KErrNone) + return FillImportBuf(); + else + return err; + } + +EXPORT_C TInt CFileImportBuffer::FillImportBuf() + { + TPtr8 buf=iImportBuffer->Des(); + iSource.Read(buf,MaxSize()); + SetLength(buf.Length()); + ResetReadPtr(); + if (buf.Length() == 0) + return KErrEndOfInput; + else + return KErrNone; + }