connectivitymodules/SeCon/wbxml/conmlhandler/inc/sconconmlgenerator.h
branchRCL_3
changeset 20 4a793f564d72
parent 0 d0791faffa3f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/connectivitymodules/SeCon/wbxml/conmlhandler/inc/sconconmlgenerator.h	Wed Sep 01 12:20:56 2010 +0100
@@ -0,0 +1,232 @@
+/*
+* Copyright (c) 2005-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:  ConML parser/generator
+*
+*/
+
+
+#ifndef __SCONCONMLGENERATOR_H__
+#define __SCONCONMLGENERATOR_H__
+
+// -----------------------------------------------------------------------------
+// Includes
+// -----------------------------------------------------------------------------
+#include "sconxmlelement.h"
+#include "sconconmldtd.h"
+#include "sconconmltags.h"
+#include "sconwbxmldefs.h"
+#include "sconxmlworkspace.h"
+
+// -----------------------------------------------------------------------------
+// MWBXMLConMLCallback - Call back for parsed data
+// -----------------------------------------------------------------------------
+class MWBXMLConMLCallback
+    {
+public:
+     /**
+    * Call back function for delivering the parsed data
+    * @param aContent contains the parsed data
+    * @return none
+    */
+
+    virtual void ConMLL( ConML_ConMLPtr_t aContent ) = 0;
+    };
+
+// -----------------------------------------------------------------------------
+// TWBXMLContentFormat
+// -----------------------------------------------------------------------------
+enum TWBXMLContentFormat
+    {
+    EWBXMLContentFormatOpaque,
+    EWBXMLContentFormatInlineString
+    };
+    
+// -----------------------------------------------------------------------------
+// CSConConMLGenerator - Generates XBXML and XML documents
+// -----------------------------------------------------------------------------
+NONSHARABLE_CLASS( CSConConMLGenerator ) : public CBase
+    {
+public:
+
+    static CSConConMLGenerator* NewL();
+    ~CSConConMLGenerator();
+        
+    /**
+    * Returns the generated WBXML document
+    * @param none 
+    * @return the document as TPtrC8
+    */
+    TPtrC8 WBXMLDocument();
+
+    /**
+    * Returns the generated XML document
+    * @param none 
+    * @return the document as TPtrC8
+    */
+    TPtrC8 XMLDocument();
+    
+    
+    // WBXML Parser
+    
+    /**
+    * Sets the callback function to call after parsing
+    * @param aCallback callback function to call when parsing finished
+    * @return none
+    */
+    void SetCallback ( MWBXMLConMLCallback* aCallbakc );
+    
+    /**
+    * Starts the document after header has been parsed 
+    * @param aVersion - version of WBXML document
+    * @param aPublicId - public ID of WBXML document as known public ID
+    * @param aCharset - Character set of WBXML document
+    * @return none
+    */
+    void StartDocument( TUint8 aVersion, TInt32 aPublicId, TUint32 aCharset );
+
+    /**
+    * Starts the document after header has been parsed 
+    * @param aVersion - version of WBXML document
+    * @param aPublicIdStr - public ID of WBXML document as a inline string 
+    * @param aCharset - Character set of WBXML document
+    * @return none
+    */
+    void StartDocument( 
+        TUint8 aVersion, const TDesC8& aPublicIdStr, TUint32 aCharset );
+    
+    /**
+    * Starts a new element in the document
+    * @param aTag - Tag of the element
+    * @return none
+    */
+    void StartElementL( TWBXMLTag aTag );
+
+    /**
+    * Starts a character data in the document
+    * @param aBuffer - Character data
+    * @return none
+    */
+    void CharactersL( const TDesC8& aBuffer );
+
+    /**
+    * Document has been parsed - the end of document
+    * @param none
+    * @return none
+    */
+    void EndDocument();
+        
+    /**
+    * End tag of an element has been found
+    * @param aTag - tag of the element to be closed 
+    * @return none
+    */
+    void EndElementL( TWBXMLTag aTag );
+    
+    // Generator
+    
+    /**
+    * Starts the generation of a document
+    * @param aContent - data for the document
+    * @return none
+    */
+    TInt GenerateConMLDocument ( ConML_ConMLPtr_t aContent );
+
+private:
+
+    // WBXML Generator
+    void WriteMUint32L( TUint32 aValue );
+    void WriteOpaqueDataL( const TDesC8& aData );
+    void WriteInlineStringL( const TDesC8& aData );
+    
+    // XML Generator
+    void IndentL();
+    TPtrC8 TranslateElement( TUint8 aElement );
+
+    // WBXML / XML Generator
+    void BeginDocumentL( TUint8 aVersion, TInt32 aPublicId, TUint32 aCharset, 
+        const TDesC8& aStringTbl = TPtrC8() );
+    void BeginElementL( TUint8 aElement, TBool aHasContent = EFalse, 
+        TBool aHasAttributes = EFalse );
+    void EndElementL();
+    void AddElementL( 
+        TUint8 aElement, const TDesC8& aContent, 
+        const TWBXMLContentFormat aFormat = EWBXMLContentFormatOpaque );
+    void AppendPCDataL( TUint8 aElement, pcdataPtr_t aContent );
+    void AppendConMLL( ConML_ConMLPtr_t aContent );
+    void AppendExecuteL( ConML_ExecutePtr_t aContent );
+    void AppendSupplyDataL( ConML_SupplyDataPtr_t aContent );
+    void AppendInstallL( ConML_InstallPtr_t aContent );
+    void AppendCancelL ( ConML_CancelPtr_t aContent );
+    void AppendStatusL ( ConML_StatusPtr_t aContent );
+    void AppendGetStatusL( ConML_GetStatusPtr_t aContent );
+    void AppendRebootL( ConML_RebootPtr_t aContent );
+    void AppendTaskL( ConML_TaskPtr_t aContent );
+    void AppendTaskListL( ConML_TaskListPtr_t aContent );
+    void AppendUnInstallL( ConML_UnInstallPtr_t aContent );
+    void AppendListInstalledAppsL ( ConML_ListInstalledAppsPtr_t aContent );
+    void AppendListDataOwnersL ( ConML_ListDataOwnersPtr_t aContent );
+    void AppendBUROptionsL( ConML_BUROptionsPtr_t aContent );
+    void AppendSetBURModeL( ConML_SetBURModePtr_t aContent );
+    void AppendGetDataSizeL( ConML_GetDataSizePtr_t aContent );
+    void AppendRequestDataL( ConML_RequestDataPtr_t aContent );
+    void AppendUpdateDeviceInfoL( ConML_UpdateDeviceInfoPtr_t aContent );
+    void AppendListPublicFilesL( ConML_ListPublicFilesPtr_t aContent );
+    void AppendApplicationL( ConML_ApplicationPtr_t aContent );
+    void AppendApplicationListL( ConML_ApplicationListPtr_t aContent );
+    void AppendApplicationsL( ConML_ApplicationsPtr_t aContent );
+    void AppendParamL( ConML_ParamPtr_t aContent );
+    void AppendParamListL( ConML_ParamListPtr_t aContent );
+    void AppendInstParamsL( ConML_InstParamsPtr_t aContent );
+    void AppendProgressL( ConML_ProgressPtr_t aContent );
+    void AppendResultsL( ConML_ResultsPtr_t aContent );
+    void AppendDriveL( ConML_DrivePtr_t aContent );
+    void AppendDriveListL( ConML_DriveListPtr_t aContent );
+    void AppendDrivesL( ConML_DrivesPtr_t aContent );
+    void AppendDataOwnersL( ConML_DataOwnersPtr_t aContent );
+    void AppendPackageInfoL ( ConML_PackageInfoPtr_t aContent );
+    void AppendSIDL( ConML_SIDPtr_t aContent );
+    void AppendSIDListL( ConML_SIDListPtr_t aContent );
+    void AppendDeviceInfoL( ConML_DeviceInfoPtr_t aContent );
+    void AppendFilesL( ConML_FilesPtr_t aContent );
+    void AppendSupportedMethodsL( ConML_SupportedMethodsPtr_t aContent );
+    void AppendFileListL( ConML_FileListPtr_t  aContent );
+    void AppendFileL( ConML_FilePtr_t aContent );
+    void AppendGetDataOwnerStatusL( ConML_GetDataOwnerStatusPtr_t aContent );
+    void AppendGetMetadataL( ConML_GetMetadataPtr_t aContent );
+    
+    TInt HandleResult( TInt aResult, TInt aTreshold = 0 );
+    
+private:
+    void ConstructL();
+    CSConConMLGenerator();
+    void AddElement( CXMLElement* aElement );
+
+private:
+    // Parser
+    CXMLStack<CXMLElement>* iCmdStack;
+    CXMLStack<CXMLElement>* iCleanupStack;
+    MWBXMLConMLCallback* iCallback;
+
+    // Generator workspaces 
+    CXMLWorkspace* iWBXMLWorkspace;
+    CXMLWorkspace* iXMLWorkspace;
+
+    // XML
+    RArray<TUint8> iElemStack;
+    TInt iInitialIndentLevel;
+    TBool iDontNewLine;
+    TBool iDontIndent;
+    }; 
+
+#endif // __SCONCONMLGENERATOR_H__