--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/languageinterworkingfw/servicehandler/inc/liwresolver.h Mon Mar 30 12:51:20 2009 +0300
@@ -0,0 +1,134 @@
+/*
+* Copyright (c) 2003-2005 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: Declares custom ECom resolver.
+*
+*/
+
+
+
+
+
+
+#ifndef _LIW_RESOLVER_H
+#define _LIW_RESOLVER_H
+
+#include "liwuids.hrh"
+#include <ecom/resolver.h>
+#include <ecom/publicregistry.h>
+#include <ecom/implementationproxy.h>
+
+// FORWARD DECLARATIONS
+class TEComResolverParams;
+
+// DynFeature resolver's UID
+const TUid KLiwResolverImplUid = { KLiwResolverImplUidValue };
+
+/**
+ * Implements a non-default resolver.
+ *
+ * This controls the identification, (resolution), of which implementation
+ * will be used to satisfy an interface implementation instantiation.
+ */
+class CLiwResolver : public CResolver
+ {
+ public:
+
+ /**
+ * Factory function
+ * @param aRegistry <add description>
+ */
+ static CLiwResolver* NewL(MPublicRegistry& aRegistry);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CLiwResolver();
+
+ /**
+ * Request that the resolver identify the most appropriate interface implementation.
+ *
+ * @param aInterfaceUid The interface for which implementations are requested.
+ * @param aAdditionalParameters Data to be used to refine the search further.
+ * @return The Uid of the best fit interface implementation -
+ * KNullUid if no match is found.
+ */
+ TUid IdentifyImplementationL(TUid aInterfaceUid,
+ const TEComResolverParams& aAdditionalParameters) const;
+
+ /**
+ * List all the implementations which satisfy the specified interface.
+ *
+ * @param aInterfaceUid The interface for which implementations are requested
+ * @param aAdditionalParameters Data to be used to refine the search further
+ * @return Pointer to an array of suitable implementations.
+ * Ownership of this array is passed to the calling function.
+ */
+ RImplInfoArray* ListAllL(TUid aInterfaceUid,
+ const TEComResolverParams& aAdditionalParameters) const;
+
+ private:
+
+ /**
+ * Constructor.
+ * @param aRegistry <add description>
+ */
+ explicit CLiwResolver(MPublicRegistry& aRegistry);
+
+ /**
+ * Called by IdentifyImplementationL to select an appropriate implementation from a
+ * list of possibles.
+ *
+ * @param aImplementationsInfo Information on the potential implementations
+ * @param aAdditionalParameters The data to match against to detemine the implementation
+ * @return The Uid of the selected implementation -
+ * KNullUid if no match is found
+ */
+ TUid Resolve(const RImplInfoArray& aImplementationsInfo,
+ const TEComResolverParams& aAdditionalParameters) const;
+
+ /**
+ * Searches for a match of a data type on an implementation type.
+ * Match returns ETrue if aMatchType is found within aImplementationType according
+ * to the following rules:
+ *
+ * 1) aImplementationType is treated as a series of descriptors separated by double
+ * bars (||). ETrue is returned if aMatchType matches exactly any of the short
+ * descriptors. If no double bar is present then aImplementationType is treated as a
+ * single descriptor.
+ *
+ * 2) If aUseWildcards == ETrue then a '?' in aMatchType will be matched to any single
+ * character and '*' will be matched to any series of characters.
+ *
+ * @param aImplementationType The implementation data type to search for a match
+ * @param aMatchType The data to search for
+ * @param aUseWildcards ETrue if wildcard matching should be allowed
+ * @return ETrue if a match was found, EFalse otherwise
+ */
+ TBool Match(const TDesC8& aImplementationType, const TDesC8& aMatchType,
+ TBool aUseWildcards) const;
+
+ TBool MatchServiceCmd(const TDesC8& aOpaqueData, const TDesC8& aServiceCmd) const;
+
+ void ParseInput(const TDesC8& aParam, TDes8& aContent, TDes8& aOpaque) const;
+
+ private:
+
+ mutable RImplInfoArray* iImplementationInfoArray;
+ };
+
+
+#endif // LIW_RESOLVER_H
+
+// End of file
+