xml/xmlparser/src/CXMLObserver.cpp
branchRCL_3
changeset 32 889504eac4fb
child 37 c828a2f286d1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/xml/xmlparser/src/CXMLObserver.cpp	Tue Aug 31 17:02:56 2010 +0300
@@ -0,0 +1,168 @@
+/*
+* Copyright (c) 2002 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 "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:  ?Description
+*
+*/
+
+
+
+#include "CXMLObserver.h"
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CXMLObserver::CXMLObserver
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CXMLObserver::CXMLObserver() 
+	{
+		
+	}
+
+// -----------------------------------------------------------------------------
+// CXMLObserver::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CXMLObserver::ConstructL()
+    {
+		iCurrentAttribute = new(ELeave) TPtrC();
+		iAttributes = CXMLAttributes::NewL();
+		iDescElements = new (ELeave) CDesCArraySeg(1);
+		iNSextensions = new (ELeave) CDesCArraySeg(1);
+		iURIs = new (ELeave) CDesCArraySeg(1);
+		iContentHandler = NULL;
+		iBinaryContentHandler = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CXMLObserver::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CXMLObserver* CXMLObserver::NewL()
+    {
+		CXMLObserver* self = new( ELeave ) CXMLObserver();
+    
+		CleanupStack::PushL( self );
+		self->ConstructL();
+		CleanupStack::Pop();
+
+		return self;
+    }
+
+    
+// -----------------------------------------------------------------------------
+// CXMLObserver::~CXMLObserver
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CXMLObserver::~CXMLObserver()
+    {
+		if (iCurrentAttribute)
+		{
+			delete iCurrentAttribute;
+		}
+		if(iAttributes)
+		{
+			delete iAttributes;
+		}
+		if(iDescElements)
+		{
+			delete iDescElements;
+		}
+		if(iNSextensions)
+		{
+			delete iNSextensions;
+		}
+		if(iURIs)
+		{
+			delete iURIs;
+		}
+    }
+
+// -----------------------------------------------------------------------------
+// CXMLObserver::SetElement
+// 
+// -----------------------------------------------------------------------------
+//
+void CXMLObserver::SetElementL(const TPtrC &aName)
+{
+	if(iDescElements)
+	{
+		iDescElements->AppendL(aName);
+	}
+}
+
+// -----------------------------------------------------------------------------
+// CXMLObserver::GetElement
+// 
+// -----------------------------------------------------------------------------
+//
+TPtrC CXMLObserver::GetElement() const
+{
+	TInt wIndex = iDescElements->Count()-1; 
+	if(wIndex < 0)
+	{
+		TPtrC wEmpty = _L(" ");
+		return wEmpty;
+		
+	}
+	return iDescElements->MdcaPoint(wIndex);
+}
+
+// -----------------------------------------------------------------------------
+// CXMLObserver::GetElement
+// 
+// -----------------------------------------------------------------------------
+//
+void CXMLObserver::RemoveElement()
+{
+	TInt wIndex = iDescElements->Count()-1;
+	if(wIndex > -1)
+	{
+		iDescElements->Delete(wIndex);
+		iDescElements->Compress();
+	}
+}
+
+void CXMLObserver::SetURIL(const TPtrC &aURI, const TPtrC &aNSextension)
+{
+	iNSextensions->AppendL(aNSextension);
+	iURIs->AppendL(aURI);
+}
+
+TPtrC CXMLObserver::GetURI(const TPtrC &aNSextension) const
+{
+	TInt wIndex = 0;
+	TInt wRes = 0;
+
+	wRes = iNSextensions->Find(aNSextension,wIndex); 
+	if(wRes != 0)
+	{
+		TPtrC wEmpty = _L(" ");
+		return wEmpty;
+	}
+	return iURIs->MdcaPoint(wIndex);
+}
+void CXMLObserver::ResetURI()
+{
+	iNSextensions->Reset();
+	iURIs->Reset();
+}
+
+//  End of File