/** Copyright (c) 2004 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: Content writer for the XML Serializer.**/// INCLUDE FILES#include <e32std.h>#include "TPEngWriter.h"// ================= MEMBER FUNCTIONS =======================// C++ default constructor can NOT contain any code, that// might leave.//TPEngWriter::TPEngWriter( TDes8& aBuffer ) : iBuffer( aBuffer ) { }// -----------------------------------------------------------------------------// TPEngWriter::WriteL()//// Writes the text to buffer, leaves if the buffer overflows.// Returns pointer descriptor pointing to just written text// (pointer desriptor stays valid until the actual buffer stays valid).// -----------------------------------------------------------------------------//const TPtrC8 TPEngWriter::WriteL( const TDesC8& aText ) { if ( iBuffer.MaxLength() < ( iBuffer.Length() + aText.Length() ) ) { User::Leave( KErrOverflow ); } else { TInt startOfNew( iBuffer.Length() ); iBuffer.Append( aText ); return iBuffer.Mid( startOfNew ); } return TPtrC8( NULL, 0 ); }// -----------------------------------------------------------------------------// TPEngWriter::WriteL()//// Writes one character to buffer, leaves if the buffer overflows.// -----------------------------------------------------------------------------//void TPEngWriter::WriteL( TUint8 aCharacter ) { if ( iBuffer.MaxLength() < ( iBuffer.Length() + 1 ) ) //here magic number 1 means that we are //writing just one character at time { User::Leave( KErrOverflow ); } else { iBuffer.Append( &aCharacter, 1 ); //here magic number 1 means that we are //writing just one character at time } }// -----------------------------------------------------------------------------// TPEngWriter::CurrentLength()// -----------------------------------------------------------------------------//TInt TPEngWriter::CurrentLength() { return iBuffer.Length(); }// -----------------------------------------------------------------------------// TPEngWriter::ReverseTo()// -----------------------------------------------------------------------------//TInt TPEngWriter::ReverseTo( TInt aLength ) { if ( aLength > iBuffer.Length() ) { return KErrUnderflow; } iBuffer.SetLength( aLength ); return KErrNone; }// End of File