Symbian3/SDK/Source/GUID-895A685E-83E8-51A3-A823-3A0E07B1E609.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Tue, 20 Jul 2010 12:00:49 +0100
changeset 13 48780e181b38
parent 0 89d6a7a84779
permissions -rw-r--r--
Week 28 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 1897 and Bug 1522.

<?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>