williamr@2: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2: // All rights reserved.
williamr@2: // This component and the accompanying materials are made available
williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2: // which accompanies this distribution, and is available
williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2: //
williamr@2: // Initial Contributors:
williamr@2: // Nokia Corporation - initial contribution.
williamr@2: //
williamr@2: // Contributors:
williamr@2: //
williamr@2: // Description:
williamr@2: //
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: /**
williamr@2:  @file
williamr@2:  @internalTechnology
williamr@2: */
williamr@2: 
williamr@2: #if (!defined TRBUF_H)
williamr@2: #define TRBUF_H
williamr@2: 
williamr@2: #include <e32base.h>
williamr@2: #include <e32std.h>
williamr@2: 
williamr@2: namespace Elements
williamr@2: {
williamr@2: 
williamr@2: class TRBuf8 : public RBuf8
williamr@2: /**
williamr@2: 	class to provide a RBuf8 destructor
williamr@2: */
williamr@2: 	{
williamr@2: 	public:
williamr@2: 		static TRBuf8* New(TInt aMaxLength)
williamr@2: 			{
williamr@2: 			TRBuf8* self = new TRBuf8;
williamr@2: 			if (self!=NULL)
williamr@2: 				{
williamr@2: 				if (self->Create(aMaxLength)!=KErrNone)
williamr@2: 					{
williamr@2: 					delete self;
williamr@2: 					self = NULL;
williamr@2: 					}
williamr@2: 				}
williamr@2: 			return self;
williamr@2: 			}
williamr@2: 
williamr@2: 		static TRBuf8* NewL(TInt aMaxLength)
williamr@2: 			{
williamr@2: 			TRBuf8* self = new (ELeave) TRBuf8;
williamr@2: 			CleanupStack::PushL(self);
williamr@2: 			self->CreateL(aMaxLength);
williamr@2: 			CleanupStack::Pop(self);
williamr@2: 			return self;
williamr@2: 			}
williamr@2: 
williamr@2: 		~TRBuf8()
williamr@2: 			{
williamr@2: 			Close();
williamr@2: 			}
williamr@2: 	};
williamr@2: 
williamr@2: class TRBuf16 : public RBuf16
williamr@2: /**
williamr@2: 	class to provide a RBuf16 destructor
williamr@2: */
williamr@2: 	{
williamr@2: 	public:
williamr@2: 		static TRBuf16* New(TInt aMaxLength)
williamr@2: 			{
williamr@2: 			TRBuf16* self = new TRBuf16;
williamr@2: 			if (self!=NULL)
williamr@2: 				{
williamr@2: 				if (self->Create(aMaxLength)!=KErrNone)
williamr@2: 					{
williamr@2: 					delete self;
williamr@2: 					self = NULL;
williamr@2: 					}
williamr@2: 				}
williamr@2: 			return self;
williamr@2: 			}
williamr@2: 
williamr@2: 		static TRBuf16* NewL(TInt aMaxLength)
williamr@2: 			{
williamr@2: 			TRBuf16* self = new (ELeave) TRBuf16;
williamr@2: 			CleanupStack::PushL(self);
williamr@2: 			self->CreateL(aMaxLength);
williamr@2: 			CleanupStack::Pop(self);
williamr@2: 			return self;
williamr@2: 			}
williamr@2: 
williamr@2: 		~TRBuf16()
williamr@2: 			{
williamr@2: 			Close();
williamr@2: 			}
williamr@2: 	};
williamr@2: 
williamr@2: #if defined(_UNICODE)
williamr@2: typedef TRBuf16 TRBuf;
williamr@2: #else
williamr@2: typedef TRBuf8 TRBuf;
williamr@2: #endif
williamr@2: 
williamr@2: } //namespace Elements
williamr@2: 
williamr@2: 
williamr@2: #endif //TRBUF_H