diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/sdprepeatfield.h --- a/epoc32/include/sdprepeatfield.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/sdprepeatfield.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,211 @@ -sdprepeatfield.h +/* +* Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* 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 +* which accompanies this distribution, and is available +* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* Name : SdpRepeatField.h +* Part of : SDP Codec +* Interface : SDK API, SDP Codec API +* Version : 1.0 +* +*/ + + + +#ifndef CSDPREPEATFIELD_H +#define CSDPREPEATFIELD_H + +// INCLUDES +#include +#include +#include "_sdpdefs.h" +#include + +// FORWARD DECLARATIONS +class RReadStream; +class RWriteStream; + +// CLASS DECLARATION +/** + * @publishedAll + * @released + * + * This class encapsulates the repeat times field of the + * Session Description Protocol. + * + * The normative reference for correct formatting and values is + * draft-ietf-mmusic-sdp-new-14 unless specified otherwise in + * member documentation. The implementation supports this normative + * reference, but does not enforce it fully. + * + * @lib sdpcodec.lib + */ +class CSdpRepeatField : public CBase + { + public: // Constructors and destructor + /** + * Constructs a new repeat times field. + * + * @param aText A string containing a correctly + * formatted field value terminated by a CRLF. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* DecodeL(const TDesC8& aText); + + /** + * Constructs a new repeat times field and adds the pointer to the + * cleanup stack. + * + * @param aText A string containing a correctly + * formatted field value terminated by a CRLF. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* DecodeLC(const TDesC8& aText); + + /** + * Constructs a new repeat times field. + * + * @param aRepeatInterval Repeat interval value + * greater than zero. + * @param aActiveDuration Active duration. + * @param aOffsets At least one time offset. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* NewL( + const TSdpTypedTime aRepeatInterval, + const TSdpTypedTime aActiveDuration, + const RArray& aOffsets); + + /** + * Constructs a new repeat times field and adds the pointer to the + * cleanup stack. + * + * @param aRepeatInterval Repeat interval value + * greater than zero. + * @param aActiveDuration Active duration. + * @param aOffsets At least one time offset. + * @return a new instance. + */ + IMPORT_C static CSdpRepeatField* NewLC( + const TSdpTypedTime aRepeatInterval, + const TSdpTypedTime aActiveDuration, + const RArray& aOffsets); + + /** + * Deletes the resources held by the instance. + */ + IMPORT_C ~CSdpRepeatField(); + + public: // New functions + /** + * Outputs the field formatted according to SDP syntax and including + * the terminating CRLF. + * + * @param aStream Stream used for output. On return + * the stream includes correctly formatted repeat field. + */ + IMPORT_C void EncodeL(RWriteStream& aStream) const; + + /** + * Creates a new instance that is equal to the target. + * + * @return a new instance. + */ + IMPORT_C CSdpRepeatField * CloneL() const; + + /** + * Compares this instance to another for equality. + * + * @param aObj The instance to compare to. + * @return ETrue if equal, EFalse if not. + */ + IMPORT_C TBool operator == (const CSdpRepeatField & aObj) const; + + /** + * Gets the repeat interval. + * + * @return The repeat interval. + */ + IMPORT_C const TSdpTypedTime RepeatInterval() const; + + /** + * Sets the repeat interval. + * + * @param aValue Repeat interval value greater than zero. + * @leave KErrSdpCodecRepeatField if aValue is not positive integer + * value. + */ + IMPORT_C void SetRepeatIntervalL(const TSdpTypedTime aValue); + + /** + * Gets the active duration.. + * + * @return The active duration. + */ + IMPORT_C const TSdpTypedTime ActiveDuration() const; + + /** + * Sets the active duration. + * + * @param Active duration. + */ + IMPORT_C void SetActiveDuration(const TSdpTypedTime aValue); + + /** + * Gets the array of time offsets. + * This array is used directly for element insertion and removal. + * + * @return The offsets. + */ + IMPORT_C const RArray& TimeOffsets() const; + + /** + * Sets the time offsets. + * + * @param aOffsets At least one time offset. + */ + IMPORT_C void SetTimeOffsetsL(const RArray& aValue); + + public: + /** + * Externalizes the object to stream + * + * @param aStream Stream where the object's state will be stored + */ + void ExternalizeL(RWriteStream& aStream) const; + + /** + * Creates object from the stream data + * + * @param aStream Stream where the object's state will be read + * @return Initialized object + */ + static CSdpRepeatField* InternalizeL(RReadStream& aStream); + + private: + CSdpRepeatField(const TSdpTypedTime aRepeatInterval, + const TSdpTypedTime aActiveDuration); + CSdpRepeatField(); + void ConstructL(const TDesC8& aText); + void ConstructL(const RArray& aOffsets); + + + private: // Data + RStringPool iPool; + TSdpTypedTime iRepeatInterval; + TSdpTypedTime iActiveDuration; + RArray iTimeOffsets; + + __DECLARE_TEST; + }; + +#endif // CSDPREPEATFIELD_H