--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ImagePrint/ImagePrintEngine/DeviceProtocols/btprotocol/inc/cxmlhandler.h Thu Dec 17 08:45:53 2009 +0200
@@ -0,0 +1,185 @@
+/*
+* Copyright (c) 2004-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: Handler for XML file modify. Defines the class to store and modify XML data.
+*
+*/
+
+
+#ifndef CXMLHANDLER_H
+#define CXMLHANDLER_H
+
+#include <e32base.h>
+#include <f32file.h>
+#include <badesca.h>
+
+/** general tags */
+_LIT8(KBtLessThan, "<");
+_LIT8(KBtGreaterThan, ">");
+_LIT8(KBtLessThanSlash,"</");
+_LIT8(KBtSlash, "/");
+_LIT8(KEof, "EOF");
+
+/** Maximum size of template file */
+const TInt KBtMaxFileSize = 2048;
+
+/**
+* @class CXmlHandler
+* @brief Class to store and modify XML data.
+* @n
+* @b Usage:
+* <OL>
+* @li Create an instance of class
+* @li Initialize class with a data buffer by InitFromBufferL or with a file name by InitFromFileL
+* @li Get/replace/remove parts of initialized data
+* </OL>
+*/
+NONSHARABLE_CLASS( CXmlHandler ): public CBase
+ {
+ public:
+
+ /** NewL
+ * @brief Creates a new instance of XML handler.
+ * @return Pointer to the instance.
+ */
+ static CXmlHandler* NewL();
+
+ /** NewLC
+ * @brief Creates a new instance of XML handler and leaves it in the cleanup stack.
+ * @return Pointer to the instance.
+ */
+ static CXmlHandler* NewLC();
+
+ static TPtrC8 ParseValue(const TDesC8 &aData, const TDesC8 &aStart, const TDesC8 &aEnd, TInt& aOffset);
+ static void ParseValueListL(const TDesC8 &aData, const TDesC8 &aStart, const TDesC8 &aEnd, CDesC8ArrayFlat& aList);
+
+ /** ~CXmlHandler
+ * @brief Destructor.
+ */
+ ~CXmlHandler();
+
+
+ /** Reset
+ * @brief Resets the member variables.
+ */
+ void Reset();
+
+ /** InitFromFileL
+ * @brief Reads the named template file for handling it.
+ * @param aFile Name of the file to read for handle
+ * @param aId Identifier for the data stored in class
+ */
+ void InitFromFileL(const TDesC& aFile, const TInt aId = KErrNotFound);
+
+ /** InitFromBufferL
+ * @brief Initialises the data to handle with given buffer.
+ * @param aBuffer The buffer to handle
+ * @param aId Identifier for the data stored in class
+ */
+ void InitFromBufferL(const TDesC8& aBuffer, const TInt aId = KErrNotFound);
+
+
+ /** ComposeDataL
+ * @brief Replaces the template with string value in stored data
+ * @param aStr String to convert for
+ * @param aTag Template to replace
+ */
+ void ComposeDataL(const TDesC8& aData, const TDesC8& aTag);
+
+ /** @overload void ComposeDataL(const TDesC8& aData, const TDesC8& aTag) */
+ void ComposeDataL(const TInt aValue, const TDesC8& aTag);
+
+ /** InsertDataL
+ * @brief Inserts data in the buffer
+ * @param aStr String to convert for
+ * @param aTag Template to replace
+ */
+ void InsertDataL(const TDesC8& aData, const TInt aOffset);
+
+ /** GetDataL
+ * @brief Returns the data between given start and end descriptors.
+ * NOTE: The start and end descriptors are @e not returned.
+ * @param aStart Start tag for data to find.
+ * @param aEnd End tag for data to find.
+ * @param aOffset Returns offset for the data start. KErrNotFound indicates the data not found.
+ */
+ TPtrC8 GetDataL(const TDesC8& aStart, const TDesC8& aEnd, TInt& aOffset);
+
+ /** FinalizeBufferL
+ * @brief Trims the member buffer tail. Replacing the template strings from
+ * the buffer makes the data length in the buffer vary and generates
+ * rubbish in the end of buffer.
+ * @param aTag End tag to delete all after it.
+ * @return Pointer to the stored data.
+ */
+ TPtrC8 FinalizeBufferL(const TDesC8& aTag);
+
+ /** DeleteBufferData
+ * @brief Deletes the data from the buffer.
+ * @param aOffset Data offset to start delete
+ * @param aLength Length of the data to delete
+ */
+ void DeleteBufferData(TInt aOffset, TInt aLength);
+
+ /** BufferId
+ * @brief Returns the identifier of the stored data.
+ * @return Identifier of the stored data
+ */
+ TInt BufferId();
+
+ /** Buffer
+ * @brief Returns the pointer to the stored data.
+ * @return Pointer to the stored data
+ */
+ TPtrC8 Buffer();
+
+ void GetDataListL(const TDesC8 &aStart, const TDesC8 &aEnd, CDesC8ArrayFlat& aList);
+
+ protected:
+
+ /** ConstructL
+ * @brief Symbian second phase constructor.
+ */
+ void ConstructL();
+
+ private:
+
+ /** CXmlHandler
+ * @brief C++ constructor
+ */
+ CXmlHandler();
+
+ /** ReadFileL
+ * @brief Reads the file in iDataBuf
+ */
+ void ReadFileL(const TDesC& aFile);
+
+ private:
+
+ /** @var HBufC8* iDataBuf
+ * Buffer to store the data initialized */
+ HBufC8* iDataBuf;
+
+ /** @var TInt iBufferId
+ * Identifier for the stored data. Initialized as KErrNotFound. */
+ TInt iBufferId;
+
+ /** @var RFs iFs
+ * File server session */
+ RFs iFs;
+
+ };
+
+#endif // CXMLHANDLER_H
+
+// End of File