upnpavcontroller/upnpxmlparser/inc/upnpitemtoxml.h
author Sampo Huttunen <sampo.huttunen@nokia.com>
Wed, 24 Nov 2010 09:39:46 +0200
branchIOP_Improvements
changeset 45 a6c41ca11adf
parent 38 5360b7ddc251
permissions -rw-r--r--
Updated the SIS package, there was some BC issue with the earlier version. Also updated the platform UID to S^3 version.

/*
* Copyright (c) 2006-2007 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:      Generates XML from an UPNP Item
*
*/






#ifndef C_UPNPITEMTOXML_H
#define C_UPNPITEMTOXML_H

// INCLUDES
#include <e32base.h>
#include <s32mem.h>

// CONSTANTS
// None

// MACROS
// None

// FORWARD DECLARATIONS
class CUpnpItem;

/**
 * Converts an UPnP item to xml document
 *
 * @since Series 60 3.2
 * @lib upnpxmlparser.lib
 */
NONSHARABLE_CLASS( CUpnpItemToXML ) : public CBase
    {
public:  // Constructors and destructor

    /**
     * Two-phased constructor.
     *
     * @param aItem
     * @return new instance
     */
    static CUpnpItemToXML* NewL( const CUpnpItem& aItem );
    
    /**
     * Two-phased constructor.
     *
     * @param aItem
     * @return new instance
     */
    static CUpnpItemToXML* NewLC( const CUpnpItem& aItem );

    /**
     * Destructor.
     */
    virtual ~CUpnpItemToXML();


public: // Functions from CUPnPObject

    /**
     * Returns object's XML description
     * Leaves in case of errors.
     * @since Series 60 3.1
     * @param none
     * @return HBufC8 pointer to buffer containing XML data
     */
    HBufC8* AsXmlL( const TBool aIncludeChilds = ETrue );

    /**
     * Returns object's XML description. This version of the method
     * is used to create the XML with empty <res> tag
     * Leaves in case of errors.
     * @since Series 60 3.1
     * @param None
     * @return HBufC8 pointer to buffer containing XML data
     */
    HBufC8* AsXmlEmptyL();


    /**
     * CUpnpItemToXML::AsResultArgumentL
     * Returns object's XML description that is embedded inside a
     * DIDL-LITE tag. The <res> tag of xml description is empty.
     * The returned value is xml encoded can therefore be used
     * for example when creating a CreateObject action.
     * @since Series 60 3.1
     * @param none
     * @return TDesC8& the date string
     */
    HBufC8* AsResultArgumentL();

    /**
     * Creates valid XML headers to source data. Do not decode the XML.
     *
     * @since Series 60 3.1
     * @param TDesC8 reference to source data
     * @return HBufC8 buffer to valid XML
     */
    HBufC8* CreateUnDecodedXmlL( const TDesC8& aData );

private:

    /**
     * Return value from an element
     *
     * @param aElemenName (const TDesC8&) name of the element
     * @return (const TDesC8&) value of the element
     */
    const TDesC8& GetValueFromElement(
                                const TDesC8& aElementName );

    /**
     * Validates format of dc:date
     *
     * @param aDate dc:date string
     * @return ETrue if format of dc:date is valid
     */
    TBool ValidateDateL( const TDesC8& aDate );
    
    /**
     * Validates format of res@duration
     *
     * @param aDuration res@duration string
     * @return ETrue if format of res@duration is valid
     */
    TBool ValidateDurationL( const TDesC8& aDuration );
    
    /**
     * Parse to a delimeter
     *
     * @param aLexer lexer
     * @param aDelimeter delimeter character
     */
    void ParseToDelimeter( TLex8& aLex, TChar aDelimeter );    

    void FillMetaDataL(RBufWriteStream& aStream);
	
private:

    /**
     * C++ default constructor.
     */
    CUpnpItemToXML( const CUpnpItem& aItem );

    /**
     * By default Symbian 2nd phase constructor is private.
     */
    void ConstructL();

private:    // Data

    CUpnpItem*  iItem; // Not own
    };

#endif      // C_UPNPITEMTOXML_H
            
// End of File