Symbian3/SDK/Source/GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita
changeset 0 89d6a7a84779
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Symbian3/SDK/Source/GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita	Thu Jan 21 18:18:20 2010 +0000
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (c) 2007-2010 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: 
+-->
+<!DOCTYPE task
+  PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd">
+<task id="GUID-895A685E-83E8-51A3-A823-3A0E07B1E609" xml:lang="en"><title>Exporting
+the Implementation Factories </title><abstract><p>An implementation collection gathers one or more interface implementations
+in a DLL. It provides necessary information to the plug-in framework to use
+them. The collection must export a single function that provides an array.
+This array maps the UID of each implementation it contains with a pointer
+to its factory instantiation function (NewL() in our example). </p></abstract><prolog><metadata><keywords/></metadata></prolog><taskbody>
+<steps id="GUID-B972BA4F-6146-59A7-AA8E-8ACC704F34FB">
+<step id="GUID-E2BCAA54-9873-5AB5-93F8-6F1CE28D184D"><cmd/>
+<info>Define a UID for each implementation. This UID maps to the instantiation
+function of the implementation. Construct an array of UID's for all the implementations
+in the collection. </info>
+<stepxmp><codeblock id="GUID-F1292D30-2559-5F6C-ACD5-CEFD60F84EA7" xml:space="preserve">// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] = 
+    {
+    {{0x10009DC3}, CImplementationClassOne::NewL();},
+    {{0x10009DC4}, CImplementationClassTwo::NewL();}
+    };
+    }</codeblock> </stepxmp>
+</step>
+<step id="GUID-D465B0AD-350A-597F-A0AB-D71F44F1CAEB"><cmd/>
+<info>The signature of this exported function must be: </info>
+<stepxmp><codeblock id="GUID-847AC15E-6714-5399-827C-2C04423A8CE7" xml:space="preserve">const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount);</codeblock> </stepxmp>
+</step>
+<step id="GUID-43C85534-AD27-5F72-A57E-5271397C1C21"><cmd/>
+<info>The exported function returns a pointer to an array of <xref href="GUID-A91AD391-D638-3FD4-93E3-B77B85767CCD.dita"><apiname>TImplementationProxy</apiname></xref> objects. </info>
+</step>
+<step id="GUID-D66DC4B4-3B8A-59CF-A74E-2FE499F5CA83"><cmd/>
+<info>Each <codeph>TImplementationProxy</codeph> contains a UID and a function
+pointer. </info>
+<info> <codeph>aTableCount</codeph> should be set to the number of items in
+the array. </info>
+<stepxmp><codeblock id="GUID-2AAD649D-BC66-55B1-9EA1-9C30CF96BB4B" xml:space="preserve">EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt&amp; aTableCount)
+    {
+    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+
+    return ImplementationTable;
+    }</codeblock> </stepxmp>
+</step>
+</steps>
+</taskbody></task>
\ No newline at end of file