lowlevellibsandfws/apputils/inc/BADESCA.H
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lowlevellibsandfws/apputils/inc/BADESCA.H	Tue Feb 02 02:01:42 2010 +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 <bamdesca.h>
+#endif
+
+#if !defined(__E32BASE_H__)
+#include <e32base.h>
+#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<TPtrC8>, 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<TPtrC16>, 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__
+
+
+
+