--- a/contentctrl_plat/ds_folder_util_api/inc/nsmlfolderparser.h Thu Aug 19 09:41:17 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,310 +0,0 @@
-/*
-* Copyright (c) 2004 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: Folder XML parser
-*
-*/
-
-
-// 1.2 Changes: nsmlxmlparser module added
-
-
-#ifndef __NSMLFOLDERPARSER_H__
-#define __NSMLFOLDERPARSER_H__
-
-// ------------------------------------------------------------------------------------------------
-// Includes
-// ------------------------------------------------------------------------------------------------
-#include <e32base.h>
-#include <s32strm.h>
-
-// ------------------------------------------------------------------------------------------------
-// Class forward declarations
-// ------------------------------------------------------------------------------------------------
-class CNSmlXmlParser;
-class CNSmlExtData;
-
-
-//Constants
-
-// the maximum length of an integer in characters
-const TInt KIntegerMaxLength = 12;
-
-// the length of a datetime in characters
-const TInt KDateTimeLength = 16;
-
-// ------------------------------------------------------------------------------------------------
-// Typedefs
-// ------------------------------------------------------------------------------------------------
-// the array used for xval-values
-typedef CArrayPtrFlat<HBufC8> CNSmlXValArray;
-// the array used for extension data
-typedef CArrayPtrFlat<CNSmlExtData> CNSmlExtDataArray;
-
-// enumeration for boolean values
-enum TNSmlBoolean
- {
- EBooleanMissing = 0, // not included in the xml
- EBooleanTrue,
- EBooleanFalse
- };
-
-// The error values returned from parser and generator functions
-enum TNSmlParserGeneratorError
- {
- EErrorNone, // no error
- EOutOfMemory, // out of memory
- EMandatoryFieldNotFound,// XNam inside Ext missing
- EInvalidBooleanValue, // Invalid value inside boolean elements
- EInvalidIntegerValue, // Invalid value inside integer elements
- EInvalidDatetimeValue, // Invalid value inside datetime elements
- EInvalidCDataStructure, // CDATA error
- EInvalidXmlError, // Xml includes invalid data, i.e. xml generally against dtd
- EInvalidFilename, // file was not found or the filename was otherwise erroneous
- EUnknownError // Unknown error
- };
-
-// extension data (found in and folder)
-class CNSmlExtData : public CBase
- {
-public:
- IMPORT_C static CNSmlExtData* NewL();
- IMPORT_C static CNSmlExtData* NewLC();
- IMPORT_C virtual ~CNSmlExtData();
-
- IMPORT_C void AddXValL( HBufC8* aXVal );
-
- IMPORT_C void GenerateXmlL( TPtr8& aXml, const CNSmlXmlParser* aParser ) const;
- IMPORT_C TInt CountXmlSize( const CNSmlXmlParser* aParser ) const;
- IMPORT_C void ConvertIntoEntitiesL( const CNSmlXmlParser* aParser );
-
-private:
- CNSmlExtData();
- void ConstructL();
-
-public:
- HBufC8* iXNam;
- CNSmlXValArray* iXVals;
- };
-
-
-// folder attributes
-struct TNSmlFolderAttributeData
- {
- IMPORT_C TNSmlFolderAttributeData();
-
- /*
- * Returns the count of attributes that are not EBooleanMissing.
- */
- IMPORT_C TInt AttributeCount() const;
-
- IMPORT_C void GenerateXml( TPtr8& aXml, const CNSmlXmlParser* aParser ) const;
- IMPORT_C TInt CountXmlSize( const CNSmlXmlParser* aParser ) const;
-
- TNSmlBoolean iHidden;
- TNSmlBoolean iSystem;
- TNSmlBoolean iArchived;
- TNSmlBoolean iDelete;
- TNSmlBoolean iWritable;
- TNSmlBoolean iReadable;
- TNSmlBoolean iExecutable;
- };
-
-// Base class for actual parsergenerators.
-// Implements basic utilities for parsing and generating the xml.
-class CNSmlXmlParser : public CBase
- {
-public:
- /*
- * The constructor.
- */
- IMPORT_C CNSmlXmlParser();
-
- /*
- * The destructor.
- */
- IMPORT_C virtual ~CNSmlXmlParser();
-
- /*
- * Parses through the given xml and places the data it contains to
- * member variables. Removes all the comments from the original string.
- * @param aXml The xml to be parsed.
- * @return
- */
- virtual TNSmlParserGeneratorError ParseXml( HBufC8* aXml ) =0;
-
- /*
- * Generates xml using the data in member variables of the child class.
- * aXml contains the generated xml when method returns successfully.
- * Caller should not instantiate
- * the buffer, since this method counts the size of the xml and
- * instantiates the buffer using the size as its maximum size.
- * Caller gets the control of the buffer when method returns.
- * @param aXml A pointer to a buffer, which is instantiated in this
- * method and contains the xml when method returns succesfully.
- * @return
- */
- virtual TNSmlParserGeneratorError GenerateXml( HBufC8*& aXml ) =0;
-
- /*
- * Counts the size of the generated xml, when the xml would be generated
- * using the data in child class' member variables.
- */
- virtual TInt CountXmlSizeL() =0;
-
- /* utility functions */
-
- void PreProcessL( HBufC8* aXml ) const;
-
- TPtrC8 BooleanToString( const TNSmlBoolean aValue ) const;
- TBuf8<KDateTimeLength> DateTimeToStringL( const TTime& aValue ) const;
- TBuf8<KIntegerMaxLength> IntegerToString( const TInt aValue ) const;
-
- TNSmlBoolean StringToBooleanL( const TPtrC8& aValue ) const;
- TInt StringToIntegerL( const TPtrC8& aValue ) const;
- // Note: Ignores UTC-times (Z-ending) and treats them as local time!
- TTime StringToTTimeL( TPtrC8& aValue ) const;
-
- void AppendElement( TPtr8& aPtr, const TDesC8& aElementName, const TDesC8& aValue ) const;
- void AppendElement( TPtr8& aPtr, const TDesC8& aElementName ) const;
- void AppendEndElement( TPtr8& aPtr, const TDesC8& aElementName ) const;
-
- TInt SizeOfElements( const TDesC8& aElementName ) const;
- TInt SizeOfBoolean( const TNSmlBoolean aValue, const TDesC8& aElementName ) const;
- TInt SizeOfDatetime( const TDesC8& aElementName ) const;
- TInt SizeOfInteger( const TDesC8& aElementName ) const;
- TInt SizeOfString( const HBufC8* aValue, const TDesC8& aElementName ) const;
-
- TInt EntitiesToCharactersL( HBufC8*& aXml, TInt aStartPos, TInt aEndPos ) const;
- TInt CharactersToEntitiesL( HBufC8*& aXml, TInt aStartPos, TInt aEndPos ) const;
-
- TBool IsWhitespace( const TDesC8& aText ) const;
- void LeaveIfNotWhiteSpaceL( const TDesC8& aText ) const;
-
- TNSmlParserGeneratorError CheckError( const TInt error ) const;
-
-protected:
- // parsing methods
- void ParseL( TPtrC8& aXml );
- void AddToCompleteL( const TPtrC8 aStr );
- void ResetBufferL( HBufC8*& aBuf ) const;
- void AddToBufferL( const TText c, HBufC8*& aBuf ) const;
-
- virtual void NextElementL( TPtrC8 aElement ) =0;
- virtual void NextDataL( TPtrC8 aData ) =0;
-
-private:
- TInt ReplaceL( HBufC8*& aText, const TDesC8& aTarget, const TDesC8& aItem, TInt aStartPos, TInt aEndPos ) const;
- void CheckDatetimeErrorL( const TInt error ) const;
-
-protected:
- HBufC8* iBuffer;
- HBufC8* iCompleteBuffer;
- };
-
-// Folder parser. Implements parsing and generating of Folder xml.
-class CNSmlFolderParser : public CNSmlXmlParser
- {
-public:
- IMPORT_C static CNSmlFolderParser* NewL();
- IMPORT_C static CNSmlFolderParser* NewLC();
- IMPORT_C virtual ~CNSmlFolderParser();
-
- IMPORT_C virtual TNSmlParserGeneratorError ParseXml( HBufC8* aXml );
- IMPORT_C virtual TNSmlParserGeneratorError GenerateXml( HBufC8*& aXml );
- IMPORT_C virtual TInt CountXmlSizeL() ;
-
- IMPORT_C void AddExtL( CNSmlExtData* aExt );
-
-protected:
- virtual void NextElementL( TPtrC8 aElement );
- virtual void NextDataL( TPtrC8 aData );
-
-protected:
-
- // the folder elements (states) in the order they appear in DTD
- enum TNSmlCurrentFolderElement
- {
- EFolderNone = 0,
- EFolder,
- EFolderName,
- EFolderCreated,
- EFolderModified,
- EFolderAccessed,
- EAttributes,
- EAttributesH,
- EAttributesS,
- EAttributesA,
- EAttributesD,
- EAttributesW,
- EAttributesR,
- EAttributesX,
- EFolderRole,
- EFolderExt,
- EFolderExtXNam,
- EFolderExtXVal
- };
-
- // struct used in folder parsing (which members are already set)
- struct TNSmlSetFolderValues
- {
- TNSmlSetFolderValues();
- void Reset();
-
- TBool iFolder;
- TBool iName;
- TBool iCreated;
- TBool iModified;
- TBool iAccessed;
- TBool iAttributes;
- TBool iAttributesH;
- TBool iAttributesS;
- TBool iAttributesA;
- TBool iAttributesD;
- TBool iAttributesW;
- TBool iAttributesR;
- TBool iAttributesX;
- TBool iRole;
- TBool iXNam;
- };
-
-private:
- void StartElementStateChangeL( TNSmlCurrentFolderElement aCurrentState, TNSmlCurrentFolderElement aNextState, TBool aIsSet = EFalse );
- void EndElementStateChangeL( TNSmlCurrentFolderElement aCurrentState, TNSmlCurrentFolderElement aNextState );
-
- void GenerateFolderXmlL( HBufC8*& aXml );
- void ConvertIntoEntitiesL();
-
- CNSmlFolderParser();
- void ConstructL();
-
-public:
- HBufC8* iName;
- TTime iCreated;
- TTime iModified;
- TTime iAccessed;
- TNSmlFolderAttributeData iAttributes;
- HBufC8* iRole;
- CNSmlExtDataArray* iExt;
-
-private:
- TNSmlCurrentFolderElement iCurrentState;
- TNSmlCurrentFolderElement iLastState;
- TNSmlSetFolderValues iSetValues;
-
- CNSmlExtData* iExtData;
- };
-
-
-
-#endif // __NSMLFOLDERPARSER_H__