wvuing/IMPSConnectionUI/NotifySrc/RGenericObserverArray.inl
changeset 0 094583676ce7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wvuing/IMPSConnectionUI/NotifySrc/RGenericObserverArray.inl	Thu Dec 17 08:41:52 2009 +0200
@@ -0,0 +1,143 @@
+/*
+* 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:  Inline methods for thin templated RGenericObserverArray
+*
+*/
+
+
+
+// ================= HELPER CLASS =======================
+/**
+ * Helper inline class to forward requests
+ * from base mediator (typeless) to type specific
+ * mediator.
+ *
+ * @since 2.1
+ */
+template <class T, class P>
+class TGenObserverNotifyMediatorBase : public MGenObserverNotifyMediatorBase
+    {
+    public:
+        inline TGenObserverNotifyMediatorBase( MGenObserverNotifyMediator<T, P>& aSpecificMediator )
+            : iSpecificMediator( aSpecificMediator ){}
+
+    private:
+        inline void MediateNotifyL( TAny* aObserverToNotify, TAny* aNotifyData )
+            { iSpecificMediator.MediateNotifyL( *( static_cast<T*>( aObserverToNotify ) ),
+                                                *( static_cast<P*>( aNotifyData ) ) ); }
+
+        inline void MediateNotifyError( TAny* aObserverToNotify, TInt aLeaveError )
+            { iSpecificMediator.MediateNotifyError( *( static_cast<T*>( aObserverToNotify ) ), aLeaveError ); }
+
+        inline void MediateError( TAny* aObserverToNotify, TInt aError )
+            { iSpecificMediator.MediateError( *( static_cast<T*>( aObserverToNotify ) ), aError ); }
+
+    private:
+        ///< Observer type specific notify mediator, not owned
+        MGenObserverNotifyMediator<T, P>& iSpecificMediator;
+        };
+
+
+// ================= MEMBER FUNCTIONS =======================
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+template <class T, class P>
+inline RGenericObserverArray<T, P>::RGenericObserverArray()
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// RGenericObserverArray::Close()
+// -----------------------------------------------------------------------------
+//
+template <class T, class P>
+inline void RGenericObserverArray<T, P>::Close()
+    {
+    RGenericObserverArrayBase::Close();
+    }
+
+
+// -----------------------------------------------------------------------------
+// RGenericObserverArray::AddObserver()
+// -----------------------------------------------------------------------------
+//
+template <class T, class P>
+inline TInt RGenericObserverArray<T, P>::AddObserver( const T* aObserver )
+    {
+    return RGenericObserverArrayBase::AddObserver( static_cast<const TAny*>( aObserver ) );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RGenericObserverArray::AddObserverL()
+// -----------------------------------------------------------------------------
+//
+template <class T, class P>
+inline void RGenericObserverArray<T, P>::AddObserverL( const T* aObserver )
+    {
+    User::LeaveIfError( AddObserver( aObserver ) );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RGenericObserverArray::RemoveObserver()
+// -----------------------------------------------------------------------------
+//
+template <class T, class P>
+inline TInt RGenericObserverArray<T, P>::RemoveObserver( T* aObserver )
+    {
+    return RGenericObserverArrayBase::RemoveObserver( static_cast<TAny*>( aObserver ) );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RGenericObserverArray::Count()
+// -----------------------------------------------------------------------------
+//
+template <class T, class P>
+inline TInt RGenericObserverArray<T, P>::Count()
+    {
+    return RGenericObserverArrayBase::Count();
+    }
+
+
+// -----------------------------------------------------------------------------
+// RGenericObserverArray::NotifyObservers()
+// -----------------------------------------------------------------------------
+//
+template <class T, class P>
+inline void RGenericObserverArray<T, P>::NotifyObservers( MGenObserverNotifyMediator<T, P>& aNotifyMediator,
+                                                          P& aNotifyData )
+    {
+    TGenObserverNotifyMediatorBase<T, P> baseMediator( aNotifyMediator );
+    RGenericObserverArrayBase::NotifyObservers( baseMediator,
+                                                static_cast<TAny*>( &aNotifyData) );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RGenericObserverArray::NotifyObserversFromError()
+// -----------------------------------------------------------------------------
+//
+template <class T, class P>
+inline void RGenericObserverArray<T, P>::NotifyObserversFromError( MGenObserverNotifyMediator<T, P>& aNotifyMediator,
+                                                                   TInt aError )
+    {
+    TGenObserverNotifyMediatorBase<T, P> baseMediator( aNotifyMediator );
+    RGenericObserverArrayBase::NotifyObserversFromError( baseMediator, aError );
+    }
+
+//  End of File
+