diff -r 000000000000 -r bde4ae8d615e os/ossrv/lowlevellibsandfws/apputils/inc/BADESCA.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/ossrv/lowlevellibsandfws/apputils/inc/BADESCA.H Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,326 @@ +// 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: +// Written by DavidW, October 1996 +// Descriptor arrays +// +// + +#if !defined(__BADESCA_H__) +#define __BADESCA_H__ + +#if !defined(__BAMDESCA_H__) +#include +#endif + +#if !defined(__E32BASE_H__) +#include +#endif + + +class CDesC8Array : public CArrayFixBase, public MDesC8Array +/** An implementation base class for 8 bit descriptor arrays. + +It provides some of the behaviour for 8 bit descriptor arrays. The class is +abstract and cannot be instantiated. +@publishedAll +@released +*/ + { +protected: + IMPORT_C CDesC8Array(TBufRep aRep,TInt aGranularity); +public: + IMPORT_C ~CDesC8Array(); + IMPORT_C void AppendL(const TDesC8& aPtr); + IMPORT_C void InsertL(TInt aPos,const TDesC8& aPtr); + IMPORT_C TInt InsertIsqL(const TDesC8& aPtr,TKeyCmpText aTextComparisonType=ECmpFolded); + IMPORT_C TInt InsertIsqAllowDuplicatesL(const TDesC8& aPtr,TKeyCmpText aTextComparisonType=ECmpFolded); + IMPORT_C void Sort(TKeyCmpText aTextComparisonType=ECmpFolded); + IMPORT_C TInt Find(const TDesC8& aPtr,TInt& aPos,TKeyCmpText aTextComparisonType=ECmpFolded) const; + IMPORT_C TInt FindIsq(const TDesC8& aPtr,TInt& aPos,TKeyCmpText aTextComparisonType=ECmpFolded) const; + IMPORT_C void Delete(TInt aPos); + IMPORT_C void Delete(TInt aIndex,TInt aCount); + IMPORT_C void Reset(); + inline TPtrC8 operator[](TInt aIndex) const; +// from MDesC8Array + IMPORT_C TInt MdcaCount() const; + IMPORT_C TPtrC8 MdcaPoint(TInt aIndex) const; + }; + +inline TPtrC8 CDesC8Array::operator[](TInt aIndex) const + { return(MdcaPoint(aIndex)); } + + +class CDesC8ArrayFlat : public CDesC8Array +/** An array of 8 bit descriptors implemented using a flat buffer. +"bafl.lib" +@since 5.0 +@publishedAll +@released +*/ + { +public: + IMPORT_C CDesC8ArrayFlat(TInt aGranularity); + IMPORT_C ~CDesC8ArrayFlat(); + }; + + +class CDesC8ArraySeg : public CDesC8Array +/** An array of 8 bit descriptors implemented using a segmented buffer. +"bafl.lib" +@since 5.0 +@publishedAll +@released +*/ + { +public: + IMPORT_C CDesC8ArraySeg(TInt aGranularity); + IMPORT_C ~CDesC8ArraySeg(); + }; + + +class CDesC16Array : public CArrayFixBase, public MDesC16Array +/** An implementation base class for 16 bit descriptor arrays. It provides some +of the behaviour for 16 bit descriptor arrays. + +The class is abstract and cannot be instantiated. +" bafl.lib " +@since 5.0 +@publishedAll +@released +*/ + { +protected: + IMPORT_C CDesC16Array(TBufRep aRep,TInt aGranularity); +public: + IMPORT_C ~CDesC16Array(); + IMPORT_C void AppendL(const TDesC16& aPtr); + IMPORT_C void InsertL(TInt aPos,const TDesC16& aPtr); + IMPORT_C TInt InsertIsqL(const TDesC16& aPtr,TKeyCmpText aTextComparisonType=ECmpFolded); + IMPORT_C TInt InsertIsqAllowDuplicatesL(const TDesC16& aPtr,TKeyCmpText aTextComparisonType=ECmpFolded); + IMPORT_C void Sort(TKeyCmpText aTextComparisonType=ECmpFolded); + IMPORT_C TInt Find(const TDesC16& aPtr,TInt& aPos,TKeyCmpText aTextComparisonType=ECmpFolded) const; + IMPORT_C TInt FindIsq(const TDesC16& aPtr,TInt& aPos,TKeyCmpText aTextComparisonType=ECmpFolded) const; + IMPORT_C void Delete(TInt aPos); + IMPORT_C void Delete(TInt aIndex,TInt aCount); + IMPORT_C void Reset(); + inline TPtrC16 operator[](TInt aIndex) const; +// from MDesC16Array + IMPORT_C TInt MdcaCount() const; + IMPORT_C TPtrC16 MdcaPoint(TInt aIndex) const; + }; + + + +inline TPtrC16 CDesC16Array::operator[](TInt aIndex) const +/** Returns a non-modifiable descriptor to represent the descriptor +element located at the specified index within the array. + +@param aIndex The position of the descriptor element within the array. +The position is relative to zero; i.e. zero implies the first descriptor +element in the array. This value must be non-negative and less than the +number of descriptors currently within the array otherwise the operator +panics with +@code +EArrayIndexOutOfRange +@endcode +@return A 16 bit non-modifiable pointer descriptor. */ + { return(MdcaPoint(aIndex)); } + + +class CDesC16ArrayFlat : public CDesC16Array +/** Array of 16 bit descriptors implemented using a flat buffer. +"bafl.lib +@since 5.0 +@publishedAll +@released +*/ + { +public: + IMPORT_C CDesC16ArrayFlat(TInt aGranularity); + IMPORT_C ~CDesC16ArrayFlat(); + }; + + +class CDesC16ArraySeg : public CDesC16Array +/** An array of 16 bit descriptors implemented using a segmented buffer. +"bafl.lib" +@since 5.0 +@publishedAll +@released +*/ + { +public: + IMPORT_C CDesC16ArraySeg(TInt aGranularity); + IMPORT_C ~CDesC16ArraySeg(); + }; + + +class CPtrC8Array : public CArrayFixFlat, public MDesC8Array +/** Array of 8 bit non-modifiable pointer descriptors, TPtrC8, implemented using +a flat buffer. +"bafl.lib" +@since 5.0 +@publishedAll +@released +*/ + { +public: + IMPORT_C CPtrC8Array(TInt aGranularity); + IMPORT_C ~CPtrC8Array(); +// + IMPORT_C void CopyL(const MDesC8Array& aArray); + inline void operator=(const MDesC8Array& aArray); +// Mixin members + IMPORT_C TInt MdcaCount() const; + IMPORT_C TPtrC8 MdcaPoint(TInt aIndex) const; + }; + + +class CPtrC16Array : public CArrayFixFlat, public MDesC16Array +/** An array of 16 bit non-modifiable pointer descriptors, TPtrC16, implemented +using a flat buffer. +"bafl.lib" +@since 5.0 +@publishedAll +@released +*/ + { +public: + IMPORT_C CPtrC16Array(TInt aGranularity); + IMPORT_C ~CPtrC16Array(); +// + IMPORT_C void CopyL(const MDesC16Array& aArray); + inline void operator=(const MDesC16Array& aArray); +// Mixin members + IMPORT_C TInt MdcaCount() const; + IMPORT_C TPtrC16 MdcaPoint(TInt aIndex) const; + }; + + +inline void CPtrC8Array::operator=(const MDesC8Array& aArray) +/** Copies a descriptor array into this array, deleting any pre-existing +elements. + +The function constructs TPtrC8 elements for each descriptor element +in the specified descriptor array. This operator behaves in the +same ways as CPtrC8Array::CopyL(). + +@param aArrayA reference to any descriptor array which satisfies +the protocol defined by this mixin class. */ + {CopyL(aArray);} + + +inline void CPtrC16Array::operator=(const MDesC16Array& aArray) +/** Copies a descriptor array into this array, deleting any pre-existing +elements. + +The function constructs TPtrC16 elements for each descriptor element +in the specified descriptor array.This operator behaves in the +same ways as CPtrC16Array::CopyL(). + +@param aArray A reference to any descriptor array which satisfies +the protocol defined by this mixin class. */ + {CopyL(aArray);} + +// generic text array definitions + +#if defined (_UNICODE) +/** Build independent implementation base class for descriptor arrays. + +@see CDesC8Array +@see CDesC16Array +@publishedAll +@released +*/ +typedef CDesC16Array CDesCArray; + +/** Build independent array of descriptors implemented using a flat buffer. + +@see CDesC8ArrayFlat +@see CDesC16ArrayFlat +@publishedAll +@released +*/ +typedef CDesC16ArrayFlat CDesCArrayFlat; + +/** Build independent array of descriptors implemented using a segmented buffer. + +@see CDesC16ArraySeg +@see CDesC8ArraySeg +@publishedAll +@released +*/ +typedef CDesC16ArraySeg CDesCArraySeg; + +/** Build independent array of non-modifiable pointer descriptors. + +A 16 bit build variant is generated for a Unicode build and an 8 bit build +variant generated for a non-Unicode build. + +This build independent type should always be used unless an explicit 8 bit +or 16 bit build variant is required. + +@see CPtrC16Array +@see CPtrC8Array +@publishedAll +@released +*/ +typedef CPtrC16Array CPtrCArray; +#else +/** Build independent implementation base class for descriptor arrays. + +@see CDesC8Array +@see CDesC16Array +@publishedAll +@released +*/ +typedef CDesC8Array CDesCArray; +/** Build independent array of descriptors implemented using a flat buffer. + +@see CDesC8ArrayFlat +@see CDesC16ArrayFlat +@publishedAll +@released +*/ +typedef CDesC8ArrayFlat CDesCArrayFlat; +/** Build independent array of descriptors implemented using a segmented buffer. + +@see CDesC16ArraySeg +@see CDesC8ArraySeg +@publishedAll +@released +*/ +typedef CDesC8ArraySeg CDesCArraySeg; +/** Build independent array of non-modifiable pointer descriptors. + +A 16 bit build variant is generated for a Unicode build and an 8 bit build +variant generated for a non-Unicode build. + +This build independent type should always be used unless an explicit 8 bit +or 16 bit build variant is required. + +@see CPtrC16Array +@see CPtrC8Array +@publishedAll +@released +*/ +typedef CPtrC8Array CPtrCArray; +#endif + + +#endif // __BADESCA_H__ + + + +