--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/inc/WimBerSet.h Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,274 @@
+/*
+* Copyright (c) 2002 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: An implementation of a CWimBerSet, which holds CWimBer objects
+*
+*/
+
+
+
+#ifndef WIMBERSET_H
+#define WIMBERSET_H
+
+
+//INCLUDES
+#include "WimBerConsts.h"
+#include <e32base.h>
+#include <bigint.h>
+
+
+
+//FORWARD DECLARATIONS
+class CWimBer;
+
+/*
+* Class CWimBerSet contains set of CWimBer objects
+*
+* @lib WimBer
+* @since Series60 2.6
+*/
+
+class CWimBerSet: public CArrayPtrSeg<CWimBer>
+ {
+
+ public:
+
+ /*
+ * Two-phased constructor
+ * @param aGranularity -Initial size of the created set
+ * @return CWimBerSet* -initialized object which is inserted into
+ * cleanupstack
+ */
+ IMPORT_C static CWimBerSet* NewLC( const TInt aGranularity );
+
+ /*
+ * Two-phased constructor
+ * @param aGranularity -Initial size of the created set
+ * @return CWimBerSet* -initialized object
+ */
+ IMPORT_C static CWimBerSet* NewL( const TInt aGranularity );
+
+ /*
+ * Destructor. Allocated memory is released
+ */
+ IMPORT_C virtual ~CWimBerSet();
+
+ /*
+ * Function creates CWimBer integer object.
+ * @param aValue. -Integer for object creation
+ * @return void
+ */
+ IMPORT_C void CreateIntL( const TInt aValue );
+
+ /*
+ * Funtion creates long CWimBer integer object.
+ * @param aValue. -Integer for object creation.
+ * @return void
+ */
+ IMPORT_C void CreateLongIntL( RInteger& aValue );
+
+ /*
+ * Function creates CWimBer octet string object. The octet string is an
+ * arbitrarily long binary value.
+ * @param aString -String for octet creation
+ * @return void
+ */
+ IMPORT_C void CreateOctetL( TDesC8& aString );
+
+ /*
+ * Function creates CWimBer NULL object ( 0x05 0x00 ).
+ * @return void
+ */
+ IMPORT_C void CreateNullL();
+
+ /*
+ * Function creates CWimBer object identifier object.
+ * @param aString -object identifier content
+ * @return void
+ */
+ IMPORT_C void CreateOidL( TDesC8& aString );
+
+
+ /*
+ * Function creates CWimBer printable string object.
+ * The printable string is defined to only contain
+ * the characters A-Z, a-z, 0-9, space,
+ * and the punctuation characters ()-+=:',./?.
+ * @param aString -printable string
+ * @return void
+ */
+ IMPORT_C void CreatePrintableL( TDesC8& aString );
+
+ /*
+ * Function creates CWimBer IA5 string object.
+ * IA5 ( International Alphabet 5 )
+ * is equivalent to US-ASCII.
+ * @param aString -IA5 string
+ * @return void
+ */
+ IMPORT_C void CreateIA5L( TDesC8& aString );
+
+ /*
+ * Function creates CWimBer universal time object.
+ * Note this value only represents years using two digits.
+ * @param aString -universal time
+ * @return void
+ */
+ IMPORT_C void CreateUTCL( TDesC8& aString );
+
+ /*
+ * Append start of sequence ( 30 xx, xx = length )
+ * @param aDefinite. -ETrue for definite length sequence, EFalse for
+ * indefinite length.
+ * @return void
+ */
+ IMPORT_C void CreateSeqStartL( TBool aDefinite );
+
+ /*
+ * Append start of set ( 31 xx, xx = length )
+ * @param aDefinite. -ETrue for definite length sequence, EFalse for
+ * indefinite length.
+ * @return void
+ */
+ IMPORT_C void CreateSetStartL( TBool aDefinite );
+
+ /*
+ * Append start of the constructed.
+ * @param aTag -object type ( tag )
+ * @param aDefinite -ETrue for definite length sequence, EFalse for
+ * indefinite length.
+ * @return void
+ */
+ IMPORT_C void CreateConstructedStartL( TBerTag aTag, TBool aDefinite );
+
+ /*
+ * Function closes last constructed object.
+ * @return void
+ */
+ IMPORT_C void CreateEndL();
+
+ /*
+ * Used to create a CWimBer object
+ * from buffer, which already contains a full CWimBer
+ * encoded object.
+ * @param aBuffer -contains full CWimBer encoded object.
+ * @return void
+ */
+ IMPORT_C void CreateBEREncodedObjectL( TDesC8& aBuffer );
+
+ /*
+ * Function writes all created CWimBer objects (which are
+ * Appended to set) to descriptor. Function also fixes all definite
+ * lengths.
+ * @param aTarget -Descriptor where data is written.
+ * @return TInt -Error code(negative) or the number of WimBer objects
+ * (positive).
+ */
+ IMPORT_C TInt FlushL( HBufC8*& aTarget );
+
+ public:
+
+ /*
+ * Encode and write object identifier.
+ * @param aString -Object ID. e.g. _L8("1.2.3.4.5")
+ * @param aOnlyLen - ETrue if You don't want to write object to iTarget
+ * @return TInt -Error code
+ */
+ TInt AppendObjectIdL( const TDesC8& aString, TBool aOnlyLen = EFalse );
+
+
+ private:
+
+ /*
+ * Write constructed type start.
+ * @param aTag -type of constructed tag e.g. 04 for octetS.
+ * @param aLength -Length or 0 for indefinite length
+ * @return void
+ */
+ void AppendConstructedL( TBerTag aTag, TUint aLength = 0 );
+
+ /*
+ * Close indefinite length. (= add 0x00 0x00)
+ * @return void
+ */
+ void CloseIndefinite();
+
+ /*
+ * Encode and write boolean object.
+ * @param aBool -ETrue or EFalse
+ * @return void
+ */
+ void AppendBoolL( TBool aBool );
+
+ /*
+ * Encode and write integer object.
+ * @param aData -Integer to be written to data.
+ * @return void
+ */
+ void AppendIntL( TInt aData );
+
+ /*
+ * Encode and write long integer object.
+ * @param aData -Integer to be written to data.
+ * @return void
+ */
+ void AppendLongIntL( const RInteger* aData );
+
+ /*
+ * Encode and write null object. (0x05 0x00)
+ * @return void
+ */
+ void AppendNull();
+
+
+ /*
+ * Encode and write string to iTarget
+ * @param aTag - Object type ( tag )
+ * @param aString - String to be written
+ * @void
+ */
+ void AppendStringL( TBerTag aTag, const TDesC8& aString );
+
+ /*
+ * Write CWimBer encoded object to iTarget.
+ * Note that this function doesn't add any tags
+ * etc. it trusts that the given object already
+ * is a whole CWimBer encoded object.
+ * @param aString -Buffer containing CWimBer encoded object
+ * @return void
+ */
+ void AppendBerEncodedObject( const TDesC8& aString );
+
+ private:
+
+ /*
+ * Default constructor
+ * @param aGranularity -Granularity for this array
+ */
+ CWimBerSet( const TInt aGranularity );
+
+ private:
+
+ // Descriptor for data. Not owned.
+ HBufC8* iTarget;
+
+ // Nesting level of object. ( encoding ).
+ TInt iLevel;
+
+ // Max level which is used in encoding.
+ TInt iMaxLevel;
+
+ };
+
+
+#endif //WIMBERSET_H