xcfw component compiles now v5backport
authorjake
Fri, 19 Mar 2010 13:46:28 +0200
branchv5backport
changeset 17 c9bafd575d88
parent 16 66e84aa0ed46
child 20 d2ab7c3d0c48
xcfw component compiles now
dependencies/ABLD.BAT
dependencies/bld.inf
dependencies/bldvariant.hrh
dependencies/defaultcaps.hrh
dependencies/platform_paths.hrh
dependencies/xcfw/bld.inf
dependencies/xcfw/gmxmlcdatasection.h
dependencies/xcfw/gmxmlcharacterdata.h
dependencies/xcfw/gmxmlcomposer.h
dependencies/xcfw/gmxmlconstants.h
dependencies/xcfw/gmxmldocument.h
dependencies/xcfw/gmxmldomconstants.h
dependencies/xcfw/gmxmldummydtd.h
dependencies/xcfw/gmxmlelement.h
dependencies/xcfw/gmxmlentityconverter.h
dependencies/xcfw/gmxmlnode.h
dependencies/xcfw/gmxmlparser.h
dependencies/xcfw/gmxmltext.h
dependencies/xcfw/winscw/xmldom.dll
dependencies/xcfw/winscw/xmldom.lib
dependencies/xcfw/winscw/xmlparser.dll
dependencies/xcfw/winscw/xmlparser.lib
group/bld.inf
xcfw/group/xcfw.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/ABLD.BAT	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,15 @@
+@ECHO OFF
+
+REM Bldmake-generated batch file - ABLD.BAT
+REM ** DO NOT EDIT **
+
+perl -S ABLD.PL "\homescreensrv\dependencies\\" %1 %2 %3 %4 %5 %6 %7 %8 %9
+if errorlevel==1 goto CheckPerl
+goto End
+
+:CheckPerl
+perl -v >NUL
+if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
+goto End
+
+:End
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/bld.inf	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,6 @@
+PRJ_EXPORTS
+platform_paths.hrh             platform_paths.hrh
+defaultcaps.hrh                defaultcaps.hrh
+bldvariant.hrh                 bldvariant.hrh
+
+#include "xcfw/bld.inf"
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/bldvariant.hrh	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,17 @@
+#ifndef BLDVARIANT_HRH
+#define BLDVARIANT_HRH
+
+#include "defaultcaps.hrh"
+
+#include "variant/Symbian_OS.hrh"
+//#include "privateruntimeids.hrh"  
+//#include "publicruntimeids.hrh"  
+
+//#include <bldcodeline.hrh>		
+//#include <bldprivate.hrh>
+//#include <bldpublic.hrh>
+//#include <bldregional.hrh> 
+
+//#include "productvariant.hrh" 
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/defaultcaps.hrh	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,79 @@
+/*
+* ==============================================================================
+*  Name        : defaultcaps.hrh
+*  Part of     : 
+*  Interface   : 
+*  Description : Platform security capabilities - Default capabilities for ROM 
+*                based sw.
+*  Version     : 0.7
+*
+*  Copyright © 2002-2004 Nokia. All rights reserved.
+*  This material, including documentation and any related 
+*  computer programs, is protected by copyright controlled by 
+*  Nokia. All rights are reserved. Copying, including 
+*  reproducing, storing, adapting or translating, any 
+*  or all of this material requires the prior written consent of 
+*  Nokia. This material also contains confidential 
+*  information which may not be disclosed to others without the 
+*  prior written consent of Nokia.
+* ==============================================================================
+*/
+
+
+#ifndef DEFAULTCAPS_HRH
+#define DEFAULTCAPS_HRH
+
+
+// Manufacturer or platform specific VID. A VID to be granted to all software 
+// from the same manufacturer.
+#define VID_DEFAULT 0x101FB657
+
+// All capabilities listed here:
+// TCB DiskAdmin AllFiles DRM PowerMgmt ProtServ ReadDeviceData WriteDeviceData
+// NetworkControl CommDD MultimediaDD SurroundingsDD TrustedUI SwEvent Location NetworkServices
+// ReadUserData WriteUserData LocalServices UserEnvironment
+
+// Default capabilities to be used in mmp file. Usage example:
+// CAPABILITY CAP_APPLICATION
+
+
+// General purpose library (dll). UI framework libraries, parsers, basic system 
+// services.
+#define CAP_GENERAL_DLL ALL -TCB
+
+// Application (exe), UI or non-UI.
+#define CAP_APPLICATION NetworkServices LocalServices Location ReadUserData \
+                        WriteUserData ReadDeviceData WriteDeviceData SwEvent UserEnvironment
+
+// MIME-type recogniser. MIME-type recognisers (RecMmf.mdl).
+#define CAP_RECOGNISER ProtServ
+
+// ECOM plugin (dll). HTTP transport framework filters, MMF plugins, 
+// ICL plugins.
+#define CAP_ECOM_PLUGIN ALL -TCB
+
+// Server (exe). Symbian OS servers.
+#define CAP_SERVER ProtServ ReadDeviceData WriteDeviceData SwEvent Location \
+                   NetworkServices ReadUserData WriteUserData LocalServices UserEnvironment
+
+// Client-side interfaces for servers.
+#define CAP_CLIENT_DLL ALL -TCB
+
+// Device Drivers. Display driver, audio driver, camera driver.
+#define CAP_DEVICE_DRIVER ALL
+
+// File server components. File system extensions.
+#define CAP_FILE_SERVER ALL
+
+// SW installer server components. Utilities used by sw install 
+// (cryptographic libraries, parsers).
+#define CAP_SW_INSTALL TCB NetworkServices ReadDeviceData WriteDeviceData \
+                       ProtServ PowerMgmt AllFiles TrustedUI
+
+// Kernel components. Any utility used by kernel.
+#define CAP_KERNEL ALL
+
+
+#endif
+            
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/platform_paths.hrh	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,585 @@
+/*
+* Copyright (c) 2002-2009 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:  Predefined include paths to be used in the mmp-files for the 
+*                components in the layered model. There is one definition for
+*                each layer. The mmp-file should use the statement that is 
+*                intended for the same layer as where the mmp-file resides.
+*
+*                There is also macros to be used in the bld.inf-files to 
+*                export of Public  and Platform headers into 
+*                correct locations. 
+*
+* Usage examples:
+*     ---------------------------------------------
+*      How to include this file in bld.inf and mmp-files.
+*       Reasoning: The build system is such that at the time the 
+*                  bld.inf and mmp-files are "compiled" the available
+*                  include paths are limited. Only the /epoc32/include
+*                  can be guaranteed. Thus to get this file available
+*                  you need to make include relative to the mentioned
+*                  directory. 
+*     ---------------------------------------------
+*
+*      #include <platform_paths.hrh>
+*    
+*     *************************************************************
+*     * MMP file related macro usages to add the system include paths
+*     * 
+*     * The include paths has to be related to the layer in which your SW 
+*     * resides. Thus as an example: a component residing in middleware
+*     * layer should use the MW specific macro.
+*     * Keep this as a separate line in the mmp-files. If you need to
+*     * add your own SYSTEMINCLUDE paths, please defined them as
+*     * separate statement.
+*     *************************************************************
+*         APP_LAYER_SYSTEMINCLUDE
+*         MW_LAYER_SYSTEMINCLUDE
+*         OS_LAYER_SYSTEMINCLUDE
+**
+*     *************************************************************
+*     * Macros related to using various parts of stdapis
+*     *************************************************************
+*       To use STLLIB you need to have this in your mmp-file
+*         STLLIB_USAGE_DEFINITIONS
+*
+*       Depending on what module you are using from stdapis you need to have
+*       one or more of the following macros in your mmp-file (every one in 
+*       separate line !)
+*
+*          OS_LAYER_LIBC_SYSTEMINCLUDE
+*          OS_LAYER_GLIB_SYSTEMINCLUDE
+*          OS_LAYER_SSL_SYSTEMINCLUDE
+*          OS_LAYER_STDCPP_SYSTEMINCLUDE
+*          OS_LAYER_BOOST_SYSTEMINCLUDE
+*          OS_LAYER_DBUS_SYSTEMINCLUDE
+*          OS_LAYER_LIBUTILITY_SYSTEMINCLUDE
+*
+*     *************************************************************
+*     * Macros related to exporting Public and Platform APIs into 
+*     * correct place in the new system. 
+*     *
+*     * The macro that you should use depends on 2 things:
+*     *  - in which layer your package, which exports the APIs resides
+*     *  - what is the visibility of the API (public or platform)
+*     *************************************************************
+*      // the exporting of public APIs should use one of below macros
+*      // depending on which layer the API belogs to
+*      APP_LAYER_PUBLIC_EXPORT_PATH
+*      MW_LAYER_PUBLIC_EXPORT_PATH
+*      OS_LAYER_PUBLIC_EXPORT_PATH
+*
+*      // the exporting of platform APIs should use one of below macros
+*      // depending on which layer the API belogs to
+*      APP_LAYER_PLATFORM_EXPORT_PATH
+*      MW_LAYER_PLATFORM_EXPORT_PATH
+*      OS_LAYER_PLATFORM_EXPORT_PATH
+*
+*      The hierarchy how APIs should reside in foundation has been specified
+*      in developer documentation. See further details from documentation.
+*      Below is example case relying on the structure
+*        my_own_api/group/bld.inf
+*        my_own_api/inc/header1.h
+*        my_own_api/inc/subdir/header2.h
+*  
+*      Assuming that the API is in middleware layer and a public API. 
+*      Then the bld.inf should have the following      
+*        ../inc/header1.h  APP_LAYER_PUBLIC_EXPORT_PATH(header1.h)
+*        ../inc/subdir/header2.h  APP_LAYER_PUBLIC_EXPORT_PATH(subdir/header2.h)
+*  
+*      In the above case the locations are as follow (with current MACRO settings):
+*        header1.h in /epoc32/include/app
+*        header2.h in /epoc32/include/app/subdir
+*
+*
+*     *************************************************************
+*     * Macros related to IBY file exporting
+*     *************************************************************
+*			
+*	    Component bld.inf files need to include platform_paths.hrh, see
+*           beginning of this file on how to do this correctly. Component bld.inf 
+*           files need to use these macros in PRJ_EXPORTS to get their IBY files 
+*           to ROM image.
+*
+*     ---------------------------------------------
+*     Usage for Core image (ROM+ROFS1):
+*     ---------------------------------------------
+*	 // Layer specific specific macros. Use the macro, which is specified
+*        // for the layer, in which your component resides
+*        <somepath>/<file1.iby>  CORE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
+*	 <somepath>/<file2.iby>  CORE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
+*	 <somepath>/<file3.iby>  CORE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)
+*
+*	 //stub iby files
+*	 <somepath>/<file4.iby>  CORE_IBY_EXPORT_PATH(stubs,<file4.iby>)
+*	 //tool iby files
+*	 <somepath>/<file5.iby>  CORE_IBY_EXPORT_PATH(tools,<file5.iby>)
+*		
+*     ---------------------------------------------
+*     Usage for Variant image, Language part (ROFS2):
+*     ---------------------------------------------
+*	 // Layer specific specific macros. Use the macro, which is specified
+*        // for the layer, in which your component resides
+*        <somepath>/<file1.iby>  LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
+*	 <somepath>/<file2.iby>  LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
+*	 <somepath>/<file3.iby>  LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
+*
+*     ---------------------------------------------
+*     Usage for Variant image, Language part  (ROFS2):
+*     ---------------------------------------------
+*	 // Layer specific specific macros. Use the macro, which is specified
+*        // for the layer, in which your component resides
+*        <somepath>/<file1.iby>  CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(<file1.iby>)
+*	 <somepath>/<file2.iby>  CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(<file2.iby>)
+*	 <somepath>/<file3.iby>  CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(<file3.iby>)			
+*
+*     ---------------------------------------------
+*     Usage for Customer Variant image, (ROFS3):
+*     ---------------------------------------------
+*	 // Layer specific specific macros. Use the macro, which is specified
+*        // for the layer, in which your component resides
+*        <somepath>/<f1.iby> CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(<f1.iby>)
+*	 <somepath>/<f2.iby> CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(<f2.iby>)
+*	 <somepath>/<f3.iby> CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(<f3.iby>)			
+*	
+*
+*     *************************************************************
+*     * Macro related to Exporting localization .loc files into 
+*     * correct place in the system. 
+*     *************************************************************
+*
+*     ---------------------------------------------
+*     Usage for components:
+*     ---------------------------------------------
+*	    Component bld.inf files need to include platform_paths.hrh, see
+*           beginning of this file on how to do this correctly. Component bld.inf 
+*           files need to use these macros in PRJ_EXPORTS to get their loc files 
+*           for localization.
+*     loc files that should be localized by localisation team should be in 
+*     loc-folder in the source tree (see developer guidelines)
+*
+*	 // Layer specific specific macros. Use the macro, which is specified
+*        // for the layer, in which your component resides
+*	 <somepath>/loc/<file>.loc  APP_LAYER_LOC_EXPORT_PATH(<file>.loc)
+*	 <somepath>/loc/<file>.loc  MW_LAYER_LOC_EXPORT_PATH(<file>.loc)
+*	 <somepath>/loc/<file>.loc  OS_LAYER_LOC_EXPORT_PATH(<file>.loc)
+*
+* 
+*
+*
+*/
+
+
+#ifndef PLATFORM_PATHS_HRH
+#define PLATFORM_PATHS_HRH
+
+/**
+**************************************************************************
+* General comments about the exporting of headers macros
+*  1) The definitions point currently to the old locations. (which makes some 
+*     macros to have same values. The idea is that you can already start using
+*     them now and those will be later on changed => change affects everybody.
+***************************************************************************
+*/
+
+/**
+* ---------------------------------------
+* Location, where the applications layer specific public headers should be exported
+* See usage on top of this hrh-file.
+* ---------------------------------------
+*/
+
+#if __GNUC__ >= 3
+#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
+#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/exported
+#else
+#define APP_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
+#define APP_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/app/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Location, where the applications layer specific platform headers should be exported
+* See usage on top of this hrh-file.
+* ---------------------------------------
+*/
+#if __GNUC__ >= 3
+#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
+#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/exported
+#else
+#define APP_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
+#define APP_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/app/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Location, where the middleware layer specific public headers should be exported
+* See usage on top of this hrh-file.
+* ---------------------------------------
+*/
+#if __GNUC__ >= 3
+#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
+#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/exported
+#else
+#define MW_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
+#define MW_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/mw/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Location, where the middleware layer specific platform headers should be exported
+* ---------------------------------------
+*/
+#if __GNUC__ >= 3
+#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
+#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/exported
+#else
+#define MW_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
+#define MW_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/mw/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Location, where the os layer specific public headers should be exported
+* ---------------------------------------
+*/
+#if __GNUC__ >= 3
+#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
+#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/exported
+#else
+#define  OSEXT_LAYER_SDK_EXPORT_PATH(exported) do not use intentionally generates error
+#define  OS_LAYER_PUBLIC_EXPORT_PATH(exported) /epoc32/include/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Location, where the os specific platform headers should be exported
+* ---------------------------------------
+*/
+#if __GNUC__ >= 3
+#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
+#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/exported
+#else
+#define OSEXT_LAYER_DOMAIN_EXPORT_PATH(exported) do not use intentionally generates error
+#define OS_LAYER_PLATFORM_EXPORT_PATH(exported) /epoc32/include/platform/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Location, where the  cenrep excel sheets should be exported
+* Deprecated: should no longer be used. Kept for compability.
+* ---------------------------------------
+*/
+#if __GNUC__ >= 3
+#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/exported
+#else
+#define CENREP_XLS_EXPORT_PATH(exported) /epoc32/tools/cenrep/data/src/##exported
+#endif
+
+/**
+**************************************************************************
+*  General comments about the 3 define statements related to include paths:
+*  1) the /epoc32/include/oem is now defined there for backward compability.
+*     Once the directory is empty, the directory will be removed. However this 
+*     enables us to ensure that if you use these define statements => you do 
+*     not have to remove the statements later on, when the directory no longer 
+*     exists.
+*  2) These statements should be enough in normal cases. For certain specific 
+*     cases you migth need to add some specific directory from /epoc32/include
+*     (for instance /epoc32/include/ecom).
+*     In normal cases the include staments in code should be relative to one of 
+*     the system include paths, but in certain cases, the included files requires
+*     that the subdirectory is also part of the system include paths.
+****************************************************************************
+*/
+
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be 
+* used in the mmp-files that are part of the applications-layer. It includes all 
+* the needed directories from the /epoc32/include, that are valid ones for the 
+* application-layer components. 
+*
+* Applications layer is the last one in the list, since most likely the most of 
+* the headers come from middleware or os-layer  => thus they are first.
+*/
+#define APP_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
+ /epoc32/include \
+ /epoc32/include/platform/mw \
+ /epoc32/include/platform \
+/*
+ /epoc32/include/app \
+ /epoc32/include/platform/app \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/mw/loc \
+ /epoc32/include/platform/app/loc \
+ /epoc32/include/platform/loc/sc \
+ /epoc32/include/platform/mw/loc/sc \
+ /epoc32/include/platform/app/loc/sc
+ */
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
+* used in the mmp-files that are part of the middleware-layer. It includes all 
+* the needed directories from the /epoc32/include, that are valid ones for the 
+* middleware-layer components. 
+*/
+#define MW_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
+ /epoc32/include \
+ /epoc32/include/mw \
+ /epoc32/include/platform/mw \
+ /epoc32/include/platform \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/mw/loc \
+ /epoc32/include/platform/loc/sc \
+ /epoc32/include/platform/mw/loc/sc
+
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
+* used in the mmp-files that are part of the  osextensions-layer. It includes all
+* the needed directories from the /epoc32/include, that are valid ones for the
+* os-layer components. 
+*/
+#define OS_LAYER_SYSTEMINCLUDE SYSTEMINCLUDE \
+ /epoc32/include \
+ /epoc32/include/platform \
+ /epoc32/include/platform/loc \
+ /epoc32/include/platform/loc/sc
+
+// Below statement is Deprecated and the OS_LAYER_SYSTEMINCLUDE-macro has to be
+// used.
+// Removed, use teh OS_LAYER_SYSTEMINCLUDE instead.
+// #define OSEXT_LAYER_SYSTEMINCLUDE OS_LAYER_SYSTEMINCLUDE
+
+/**
+* This define statements defines the SYSTEMINCLUDE-line, which is intended to be
+* used in the mmp-files that are part of the os-layer. This is intended 
+* to be only used by those components which need to use in their mmp-file either
+* kern_ext.mmh or nkern_ext.mmh. Reason is that those
+* 2 files already contain the /epoc32/include  as system include path.
+* 
+*/
+#define OS_LAYER_KERNEL_SYSTEMINCLUDE SYSTEMINCLUDE \
+ /epoc32/include/platform
+
+// Below statement is Deprecated and the OS_LAYER_KERNEL_SYSTEMINCLUDE-macro 
+// has to be used.
+// Removed, use the OS_LAYER_KERNER_SYSTEMINCLUDE instead.
+// #define OSEXT_LAYER_KERNEL_SYSTEMINCLUDE OS_LAYER_KERNEL_SYSTEMINCLUDE
+
+/**
+****************************************************************************
+* Definitions that also define the systeminclude paths for various
+* part of stdapis. Each statement has to be in its own line in the using
+* mmp-file. There are be more than 1 statement in single mmp-file.
+****************************************************************************
+*/
+#define OS_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis)
+
+#define OS_LAYER_GLIB_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0) \
+                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/glib) \
+                                                   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/glib-2.0/gobject)
+
+
+#define OS_LAYER_SSL_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/openssl)
+                  
+#define OS_LAYER_STDCPP_SYSTEMINCLUDE SYSTEMINCLUDE  OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/stlport) 
+
+#define OS_LAYER_BOOST_SYSTEMINCLUDE SYSTEMINCLUDE   OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/boost)
+
+#define OS_LAYER_DBUS_SYSTEMINCLUDE SYSTEMINCLUDE    OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0) \
+                                                     OS_LAYER_PUBLIC_EXPORT_PATH(stdapis/dbus-1.0/dbus)
+#define OS_LAYER_LIBUTILITY_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/utility)
+
+#define OS_LAYER_LIBOIL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PLATFORM_EXPORT_PATH(stdapis/liboil)
+
+#define MW_LAYER_GSTREAMER_SYSTEMINCLUDE SYSTEMINCLUDE \
+ /epoc32/include/platform/mw/gstreamer/10_18 \
+ /epoc32/include/platform/mw/gstreamer/10_18/gst \
+ /epoc32/include/platform/mw/gstreamer/10_18/gst/gstcontroller \
+ /epoc32/include/stdapis/machine
+
+// You need to add STLLIB_USAGE_DEFINITIONS as a separate line into your mmp-file, if you are using
+// the stllib. 
+#define STLLIB_USAGE_DEFINITIONS OPTION CW -wchar_t on\
+        MACRO _WCHAR_T_DECLARED
+
+
+/**
+****************************************************************************
+* Definitions that also define the paths to the layer specific source directories.
+****************************************************************************
+*/
+/**
+* The below 3 macros define the paths to the layer-specific source dirs.
+* See usage on top of this hrh-file, these are used the same way as 
+* for instance the OS_LAYER_DOMAIN_EXPORT_PATH
+* Deprecated: is not allowed to be using in Symbian Foundation
+*/
+#if __GNUC__ >= 3
+#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
+#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
+#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
+#else
+#define APP_LAYER_SOURCE_PATH(rest)    do not use intentionally generates error in export
+#define MW_LAYER_SOURCE_PATH(rest)     do not use intentionally generates error in export
+#define OSEXT_LAYER_SOURCE_PATH(rest)  do not use intentionally generates error in export
+#endif
+
+/**
+****************************************************************************
+* Definitions to export IBY files to different folders where they will be taken 
+* to ROM image
+****************************************************************************
+*/
+
+// Following three definitions are used for exporting IBY files to 
+// Core image (ROM+ROFS1). IBY files are exported according to their layer.
+#if __GNUC__ >= 3
+#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/exported
+#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/exported
+#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/exported
+#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/exported
+#else
+#define CORE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/app/##exported
+#define CORE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/mw/##exported
+#define CORE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define CORE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/core/os/##exported
+#define CORE_ADAPT_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/##exported
+#endif
+
+// Following three definitions are used for exporting IBY files to Variant image, 
+// Language part (ROFS2). IBY files are exported according to their layer.
+#if __GNUC__ >= 3
+#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/exported
+#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/exported
+#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/exported
+#else
+#define LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/app/##exported
+#define LANGUAGE_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/mw/##exported
+#define LANGUAGE_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define LANGUAGE_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/language/os/##exported
+#endif
+
+// Following three definitions are used for exporting IBY files to Variant image, (ROFS2). 
+// BY files are exported according to their layer.
+#if __GNUC__ >= 3
+#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/exported
+#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/exported
+#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/exported
+#else
+#define CUSTOMER_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/app/##exported
+#define CUSTOMER_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/mw/##exported
+#define CUSTOMER_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define CUSTOMER_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customer/os/##exported
+#endif
+
+// Following three definitions are used for exporting IBY files to 
+// Variant Customer part, (ROFS3). IBY files are exported according to 
+// their layer.
+#if __GNUC__ >= 3
+#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/exported
+#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/exported
+#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/exported
+#else
+#define CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/app/##exported
+#define CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/mw/##exported
+#define CUSTOMER_VARIANT_OSEXT_LAYER_IBY_EXPORT_PATH(exported) do not use intentionally generates error
+#define CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH(exported) /epoc32/rom/include/customervariant/os/##exported
+#endif
+
+
+// Following definition is used for exporting tools and stubs IBY files to 
+// Core image.
+#if __GNUC__ >= 3
+#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/path/exported
+#else
+#define CORE_IBY_EXPORT_PATH(path,exported)  /epoc32/rom/include/core/##path##/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Location, where the localization .loc file should be exported
+* ---------------------------------------
+*/
+// Location, where the os layer localization .loc file should be 
+// exported
+#if __GNUC__ >= 3
+// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
+#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
+#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/exported
+
+// Location, where the middleware layer localization .loc file should be 
+// exported
+#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/exported
+
+// Location, where the application layer localization .loc file should be 
+// exported
+#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/exported
+
+#else
+
+// Deprecated: use the OS_LAYER_LOC_EXPORT_PATH instead
+#define OSEXT_LAYER_LOC_EXPORT_PATH(exported) do not use intentionally generates error
+#define OS_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/loc/sc/##exported
+
+// Location, where the middleware layer localization .loc file should be exported
+#define MW_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/mw/loc/sc/##exported
+
+// Location, where the application layer localization .loc file should be exported
+#define APP_LAYER_LOC_EXPORT_PATH(exported) /epoc32/include/platform/app/loc/sc/##exported
+#endif
+
+/**
+* ---------------------------------------
+* Macros for Configuration tool migration. 
+* The below macros define the location under epoc32, where the confml 
+* (Configuration Markup Language) and crml (Central Repository Markup Language) 
+* files should be exported.
+* ---------------------------------------
+*/
+#if __GNUC__ >= 3
+#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/category/file
+#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/category/file
+#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/category/file
+#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/category/config/file
+#else
+#define CONFML_EXPORT_PATH(file,category)           /epoc32/rom/config/confml_data/##category##/##file
+#define CRML_EXPORT_PATH(file,category)             /epoc32/rom/config/confml_data/##category##/##file
+#define GCFML_EXPORT_PATH(file,category)            /epoc32/rom/config/confml_data/##category##/##file
+#define CONFML_CONFIG_EXPORT_PATH(file,category)    /epoc32/rom/config/confml_data/##category##/config/##file
+#endif
+
+#define APP_LAYER_CONFML(exported)                  CONFML_EXPORT_PATH(exported,s60)
+#define APP_LAYER_CRML(exported)                    CRML_EXPORT_PATH(exported,s60)
+#define APP_LAYER_GCFML(exported)                   GCFML_EXPORT_PATH(exported,s60)
+#define APP_LAYER_CONFML_CONFIG(exported)           CONFML_CONFIG_EXPORT_PATH(exported,s60)
+                                                    
+#define MW_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
+#define MW_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
+#define MW_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
+#define MW_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
+       
+// Deprecate: Use the OS_LAYER_* macros instead of OSEXT_LAYER_*                                             
+#define OSEXT_LAYER_CONFML(exported)                do not use intentionally generates error
+#define OSEXT_LAYER_CRML(exported)                  do not use intentionally generates error
+#define OSEXT_LAYER_GCFML(exported)                 do not use intentionally generates error
+#define OSEXT_LAYER_CONFML_CONFIG(exported)         do not use intentionally generates error
+#define OS_LAYER_CONFML(exported)                   CONFML_EXPORT_PATH(exported,s60)
+#define OS_LAYER_CRML(exported)                     CRML_EXPORT_PATH(exported,s60)
+#define OS_LAYER_GCFML(exported)                    GCFML_EXPORT_PATH(exported,s60)
+#define OS_LAYER_CONFML_CONFIG(exported)            CONFML_CONFIG_EXPORT_PATH(exported,s60)
+
+#endif  // end of PLATFORM_PATHS_HRH
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/bld.inf	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,19 @@
+PRJ_EXPORTS
+gmxmlentityconverter.h      gmxmlentityconverter.h
+gmxmlnode.h                 gmxmlnode.h
+gmxmlelement.h              gmxmlelement.h
+gmxmlcomposer.h             gmxmlcomposer.h
+gmxmldocument.h             gmxmldocument.h
+gmxmlcharacterdata.h        gmxmlcharacterdata.h
+gmxmltext.h                 gmxmltext.h
+gmxmlcdatasection.h         gmxmlcdatasection.h
+gmxmlconstants.h            gmxmlconstants.h
+gmxmldomconstants.h         gmxmldomconstants.h
+gmxmlparser.h               gmxmlparser.h
+gmxmldummydtd.h             gmxmldummydtd.h
+
+winscw/xmldom.dll           /epoc32/release/winscw/udeb/xmldom.dll
+winscw/xmldom.lib           /epoc32/release/winscw/udeb/xmldom.lib
+
+winscw/xmlparser.dll        /epoc32/release/winscw/udeb/xmlparser.dll
+winscw/xmlparser.lib        /epoc32/release/winscw/udeb/xmlparser.lib
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlcdatasection.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,67 @@
+// Copyright (c) 2001-2009 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:
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLCDATA_H__
+#define __GMXMLCDATA_H__
+
+#include <e32base.h>
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <gmxmldocument.h>
+#endif
+
+class CMDXMLCDATASection : public CMDXMLCharacterData
+/** A CDATA section of an XML file.
+
+Objects of this type hold text, including characters that would otherwise 
+be regarded as markup. They cannot have child nodes. 
+@publishedPartner
+@released
+*/
+{
+public:
+	/** Allocates and constructs a new CMDXMLCDATASection, leaving the object on the 
+	cleanup stack.
+	
+	@param aOwnerDocument Pointer to the document at the root of the DOM tree
+	@leave KErrNoMemory Memory allocation failed
+	@return The new CMDXMCDATASection */
+	IMPORT_C static CMDXMLCDATASection* NewLC( CMDXMLDocument* aOwnerDocument );
+
+	/** Allocates and constructs a new CMDXMLCDATASection.
+	
+	@param aOwnerDocument Pointer to the document at the root of the DOM tree
+	@leave KErrNoMemory Memory allocation failed
+	@return The new CMDXMCDATASection */
+	IMPORT_C static CMDXMLCDATASection* NewL( CMDXMLDocument* aOwnerDocument );
+
+	/** Destructor. */
+	IMPORT_C virtual ~CMDXMLCDATASection();
+
+
+protected:
+	/*
+	 * Constructor
+	 * @param aOwnerDocument Pointer to the document at the root of the DOM tree
+	 */
+	CMDXMLCDATASection( CMDXMLDocument* aOwnerDocument );
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlcharacterdata.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,104 @@
+// Copyright (c) 2001-2009 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:
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLCHARACTERDATA_H__
+#define __GMXMLCHARACTERDATA_H__
+
+#include <e32base.h>
+
+#include <gmxmlnode.h>
+
+class CMDXMLCharacterData : public CMDXMLNode
+/** Base class for text sections, such as CDATA sections, comments and processing 
+instructions, of an XML file.
+
+Objects with this interface contain text, but cannot have child nodes. 
+@publishedPartner
+@released
+*/
+{
+public:
+	/** Destructor. */
+	IMPORT_C virtual ~CMDXMLCharacterData();
+
+	/** Gets the text of the section.
+	
+	@return The text of the section */
+	IMPORT_C virtual TDesC& Data();
+
+	/** Sets the whole of the section text.
+	
+	@param aData Text to set
+	@leave KErrNoMemory Memory allocation failed */
+	IMPORT_C virtual void SetDataL( TDesC& aData );
+
+	/** Gets the length of the section text.
+	
+	@return Returns the length of the text */
+	IMPORT_C virtual TInt Length();
+
+	/** Appends text to the section.
+	
+	@param aData The text to append.
+	@leave KErrNoMemory Memory allocation failed */
+	IMPORT_C virtual void AppendL( TDesC& aData );
+
+	/** Inserts text at a specified point in the section.
+	
+	@param aInsertPos The position at which to insert the text. 0 means insert 
+	at the start.
+	@param aData Text to insert
+	@leave KErrNoMemory Memory allocation failed
+	@return Returns KErrNone if successful or KErrNotFound if the insert position 
+	is out of range */
+	IMPORT_C virtual TInt InsertL( TInt aInsertPos, TDesC& aData );
+
+	/** Replaces a block of text in the section. 
+	
+	@param aInsertPos The position at which to insert the text. 0 means insert 
+	at the start.
+	@param aLength The number of characters to replace
+	@param aData The text to insert
+	@leave KErrNoMemory Memory allocation failed
+	@return Returns KErrNone if successful or KErrNotFoundif the replace block 
+	is out of range */
+	IMPORT_C virtual TInt ReplaceL( TInt aInsertPos, TInt aLength, TDesC& aData );
+
+
+	/** Check the children of this node for validity.
+	
+	For a character data section, there can be no children so this is always true.
+	
+	@return Always true. */
+	IMPORT_C virtual TBool CheckChildren();
+
+protected:
+	/*
+	 * Constructor
+	 * @param aNodeType The node type of the derived object
+	 * @param aOwnerDocument The Document at the root of the DOM tree.
+	 */
+	CMDXMLCharacterData( TDOMNodeType aNodeType, CMDXMLDocument* aOwnerDocument );
+
+private:
+	HBufC* iData;	// Buffer to hold the actual text of the CDATA section
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlcomposer.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,317 @@
+// Copyright (c) 2003-2009 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:
+// This file contains the declaration of the generic CMDXMLComposer class
+// which is responsible for creating an XML file
+// from a given DOM structure.
+// 
+//
+
+/**
+ @file
+*/
+
+
+#ifndef __GMXMLCOMPOSER_H__
+#define __GMXMLCOMPOSER_H__
+
+#include <e32base.h>
+#include <f32file.h>
+#include <gmxmlconstants.h>
+#include <charconv.h>
+
+//forward reference
+class CMDXMLDocument;
+class CMDXMLEntityConverter;
+class CMDXMLNode;
+
+class MMDXMLComposerObserver
+/** Abstract observer interface for notification when XML composition is complete.
+
+It should be implemented by users of CMDXMLComposer.
+
+@publishedPartner
+@released
+*/
+	{
+public:
+	/**
+	 Call back function used to inform a client of the composer that the composer has completed.
+	 */
+	virtual void ComposeFileCompleteL() = 0;
+	};
+
+
+class CMDXMLComposer: public CActive
+/** Creates an XML file from a given DOM structure.
+	@publishedPartner
+    @released
+ */
+	{
+public:
+	/** Destructor. */
+	IMPORT_C ~CMDXMLComposer();
+
+	/** Allocates and constructs a new XML composer.
+	
+	@param aComposerObserver Composer observer
+	@leave KErrNoMemory Out of memory
+	@return New XML composer */
+	IMPORT_C static CMDXMLComposer* NewL(MMDXMLComposerObserver* aComposerObserver);
+	
+	/** Allocates and constructs a new XML composer.
+	
+	@param aComposerObserver Composer observer
+	@param aOutputProlog Whether to output Version and Doctype tags.
+	@leave KErrNoMemory Out of memory
+	@return New XML composer */
+	IMPORT_C static CMDXMLComposer* NewL(MMDXMLComposerObserver* aComposerObserver, TBool aOutputProlog);
+
+
+	/** Allocates and constructs a new XML composer, leaving the object on the cleanup 
+	stack.
+	
+	@leave KErrNoMemory Out of memory
+	@param aComposerObserver Composer observer
+	@return New XML composer */
+	IMPORT_C static CMDXMLComposer* NewLC(MMDXMLComposerObserver* aComposerObserver);
+	
+	/** Allocates and constructs a new XML composer, leaving the object on the cleanup 
+	stack.
+	
+	@leave KErrNoMemory Out of memory
+	@param aComposerObserver Composer observer
+	@param aOutputProlog Whether to output Version and Doctype tags.
+	@return New XML composer */
+	IMPORT_C static CMDXMLComposer* NewLC(MMDXMLComposerObserver* aComposerObserver, TBool aOutputProlog);
+
+	/** Starts file composition.
+	
+	This function must not be called when file sizing is in progress. If it is necessary to calulate
+	the size and generate the XML simultaneously then two instances of the composer should be used,
+	one for sizing and one for composition.
+  
+	@param aRFs A file server session
+	@param aFileToCompose Name of the file to create
+	@param aDocument The document object to compose to the file
+	@param aFileType Type of the output file
+	@return KErrNone if successful */
+	IMPORT_C TInt ComposeFile(RFs aRFs, const TDesC& aFileToCompose, CMDXMLDocument* aDocument, TXMLFileType aFileType);
+
+	IMPORT_C TInt ComposeFile(RFile& aFileHandleToCompose, CMDXMLDocument* aDocument, TXMLFileType aFileType);
+
+	/** Starts calculating the size of the XML output without actually writing it to the file.
+
+	File size calculation is asyncronous, the size value is only updated when ComposeFileComplete
+	is called on the MMDXMLComposerObserver passed in in the NewL.
+
+	This function must not be called when file composition or another sizing operation is
+	in progress. If it is necessary to calulate the size and generate the XML simultaneously
+	then two instances of the composer should be used, one for sizing and one for composition.
+
+	@param aSize Will be set to the size of the XML document when composition has completed.
+	@param aDocument The document object to size
+	@param aFileType Type of the output file, required because it will affect the size of the XML
+	@return KErrNone if successful */
+
+	IMPORT_C TInt CalculateFileSize(TInt& aSize, CMDXMLDocument* aDocument, TXMLFileType aFileType);
+
+	/** Gets the composer's last error.
+	
+	@return Error code */
+	IMPORT_C TInt Error() const;
+
+	/**
+	 Get the severity of the most severe error found.
+	 @return the maximum error severity
+	 */
+	IMPORT_C TXMLErrorCodeSeverity ErrorSeverity() const; 
+
+	//Defect fix for INC036136 - Enable the use of custom entity converters in GMXML
+	/** Outputs raw data.
+	    it's only intended to be used from within a custom entity converter as
+        it relies on a Composer sesssion already being in progress
+	
+	   @param aData Data to output
+	   @return KErrNone if successful, otherwise a file writing error. 
+	 */
+	IMPORT_C TInt OutputDataL(const TDesC& aData);
+
+	/**
+	 * Sets the entity converter to be used
+	 * and  take ownership of the passed entity converter
+	 * @param aEntityConverter The entity converter to be used
+	 */
+	IMPORT_C void SetEntityConverter(CMDXMLEntityConverter* aEntityConverter); 
+	//End Defect fix for INC036136
+
+public: // public functions used by other classes within the .dll, not for Export.
+	/** Gets the entity converter used by the composer.
+	
+	@return The entity converter used by the composer. */
+	IMPORT_C CMDXMLEntityConverter* EntityConverter() const;
+
+	/** Outputs a comment.
+	
+	@param aComment Comment to output
+	@return KErrNone if successful, otherwise a file writing error. */
+	TInt OutputCommentL(const TDesC& aComment);
+
+	/** Outputs a processing instruction.
+	
+	@param aInstruction Processing instruction text to output
+	@return KErrNone if successful, otherwise a file writing error. */
+	TInt OutputProcessingInstructionL(const TDesC& aInstruction);
+
+	/** Outputs a CDATA section.
+	
+	@param aCDataSection CDATA section to output
+	@return KErrNone if successful, otherwise a file writing error. */
+	TInt OutputCDataSectionL(const TDesC& aCDataSection);
+
+
+	/** Outputs a start of element tag.
+	
+	@param aElementName The name of the tag to output
+	@return KErrNone if successful, otherwise a file writing error. */
+	IMPORT_C TInt OutputStartOfElementTagL(const TDesC& aElementName);
+
+	/** Outputs an end of element start tag (</).
+	
+	@param aHasChildren True if the element has children
+	@return KErrNone if successful, otherwise a file writing error. */
+	IMPORT_C TInt OutputEndOfElementTagL(const TBool aHasChildren);
+
+	/** Output an end of element tag.
+	
+	@param aElementName The name of the tag to output
+	@return KErrNone if successful, otherwise a file writing error. */
+	TInt OutputEndTagL(const TDesC& aElementName);
+
+	/** Outputs an attribute name and value. 
+	
+	@param aAttributeName Attribute name
+	@param aAttributeValue Attribute value
+	@return KErrNone if successful, otherwise a file writing error. */
+	IMPORT_C TInt OutputAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue);
+
+private:
+	/*
+	 * BaseConstructL function to be called by dervived classes during their construction
+	 */
+	void BaseConstructL();
+
+	/*
+	 * RunError function inherited from CActive base class - intercepts any Leave from
+	 * the RunL() function, sets an appropriate errorcode and calls ComposeFileCompleteL
+	 */
+	IMPORT_C TInt RunError(TInt aError);
+
+	 /*
+	 * DoCancel function inherited from CActive base class
+	 */
+	IMPORT_C virtual void DoCancel();
+
+	/*
+	 * RunL function inherited from CActive base class - does the actual composition
+	 * @leave can Leave due to OOM
+	 */
+	virtual void RunL();
+
+	/*
+	 * Function to write string to required file format - handles format conversion
+	 * @param aStringToWrite the string to output
+	 * @return returns KERRNone if successful or a file write error.
+	 */
+	virtual TInt WriteFileL(const TDesC& aStringToWrite);
+
+	/*
+	 * Function to flush output string to required file format - handles format conversion
+	 * @return returns KERRNone if successful or a file write error.
+	 */
+	virtual TInt FlushOutputBufferL();
+
+	/*
+	 * Constructor
+	 */
+	CMDXMLComposer(MMDXMLComposerObserver* aComposerObserver);
+
+	/*
+	 * Constructor
+	 */
+	CMDXMLComposer(MMDXMLComposerObserver* aComposerObserver, TBool aOutputProlog);
+
+
+	/*
+	 * Sets iError to new errorcode if more serious than any error so far encountered
+	 */
+	IMPORT_C void SetError(const TInt aErrorCode, const TXMLErrorCodeSeverity aSeverity);
+
+
+	/*
+     * Outputs a start tag for the node which includes the
+     * tag name and all attribute name value pairs currently
+     * specified.  If the node is an empty node then it
+     * makes the tag an empty node tag, otherwise it creates
+     * a start tag.
+     * @param aNode The Node for which the start tag is being written
+     * @return Returns KerrNone if successful or a file write error
+     */
+	IMPORT_C TInt ComposeStartTagL(CMDXMLNode& aNode);
+
+	/*
+     * Outputs an end tag for the node.
+     * @param aNode the node for which the tag is being written.
+     * @return Returns KerrNone if successful or a file write error
+     */
+
+
+	IMPORT_C TInt ComposeEndTagL(CMDXMLNode& aNode);
+
+	/*
+	 * Second stage constructor
+	 * @param aEntityStrings the string table which lists the entity references and conversion
+	 */
+	void ConstructL();
+	TInt ComposeL();
+	
+	void InitialiseCompose(CMDXMLDocument* aDocument, TXMLFileType aFileType);
+
+	IMPORT_C void PlaceholderForRemovedExport1(MMDXMLComposerObserver* aComposerObserver);
+	IMPORT_C void PlaceholderForRemovedExport2();
+	IMPORT_C void PlaceholderForRemovedExport3();
+	TInt ReplaceXmlCharactersL(const TDesC16& aXmlData, const TDesC& aString);
+
+private:
+	MMDXMLComposerObserver* iComposerObserver;
+	CMDXMLEntityConverter* iEntityConverter;	// Entity converter to use
+	CMDXMLDocument* iXMLDoc;					// XML document being composed
+	RFile iXMLFile;								// File being composed
+	TXMLFileType iFileType;						// Type of file being composed
+	TInt iError;								// Current error
+	TXMLErrorCodeSeverity iSeverity;			// ErrorCode severity
+	CCnvCharacterSetConverter* iCharconv;
+	TBuf<KWriteBufferLen> iOutputBuffer;
+	RFs iRFs;									// File system to use
+	TBool iOutputProlog;							// Whether to output Version and Doctype tags
+
+	TInt iSizeTally;
+	TInt* iSize;
+	TBool iOnlyCalculatingSize;
+
+#ifdef _DEBUG
+	TInt iIndentationLevel;
+#endif
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlconstants.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,141 @@
+// Copyright (c) 2003-2009 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:
+// This file contains generic XML constants
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLCONSTANTS_H__
+#define __GMXMLCONSTANTS_H__
+
+#include <e32base.h>
+#include <gmxmldomconstants.h>
+
+/** XML file type options. 
+@publishedPartner
+@released
+*/
+enum TXMLFileType
+	{
+	/** ASCII file. */
+	EAscii = 1,
+	/** Unicode file. */
+	EUnicode = 2,
+	/** UTF8 file. */
+	EUtf8 = 3
+	};
+
+const TInt KReadBufferLen = 1024;
+const TInt KWriteBufferLen = 1024;
+
+// Error codes
+/** XML element nesting error code. */
+const TInt KErrXMLBadNesting = 					KErrXMLBase - 4;
+/** XML element incomplete error code. */
+const TInt KErrXMLIncomplete = 					KErrXMLBase - 5;
+/** XML element name error code. */
+const TInt KErrXMLBadElementName = 				KErrXMLBase - 6;
+/** Error code that indicates that more than one DOCTYPE tag has been encountered: 
+the first one encountered will be used. */
+const TInt KErrXMLDuplicateDocTypeTags = 		KErrXMLBase - 7;
+/** Error code that indicates that more than one XML version tag has been encountered: 
+the first one encountered will be used. */
+const TInt KErrXMLDuplicateVersionTags = 		KErrXMLBase - 8;
+/** Error code that indicates that more than one element has been encountered at 
+the root of the document (there should be a single <smil> element). The resulting 
+tree may be confused, but is provided rather than being discarded. */
+const TInt KErrXMLDuplicateRootElements =		KErrXMLBase - 9;
+/** Error code that indicates that no DOCTYPE tag was encountered. */
+const TInt KErrXMLMissingDocTypeTag = 			KErrXMLBase - 10;
+/** Error code that indicates that no XML version tag was encountered. */
+const TInt KErrXMLMissingVersionTag = 			KErrXMLBase - 11;
+/** Error code that indicates that an element has two or more entries for the same 
+attribute. */
+const TInt KErrXMLDuplicateAttributeName =	KErrXMLBase - 12;
+/** Error code that indicates there is no single root element.
+
+This may be the result of two of more root elements being added incorrectly, 
+or a missing root element leading to the child elements being assumed to be 
+root nodes. */
+const TInt KErrXMLMultipleRootElements = 		KErrXMLBase - 13;
+/** Error code that indicates spurious characters have been found.
+
+This may occur as the result of a missing or an extra attribute or element 
+delimiter. */
+const TInt KErrXMLCorruptFile = 					KErrXMLBase - 14;
+/** Error code that indicates a built-in entity or element / attribute delimiter 
+is at an inappropriate place. */
+const TInt KErrXMLIllegalCharacter = 			KErrXMLBase - 15;
+const TInt KErrXMLBadEntity =					KErrXMLBase - 16;
+/** Error code that indicates an element was found to be invalid by the DTD */
+const TInt KErrXMLInvalidElement =				KErrXMLBase - 17;
+/** Error code that indicates an attribute was found to be invalid by the DTD */
+const TInt KErrXMLInvalidAttribute =			KErrXMLBase - 18;
+
+/** Severity levels for XML composer and parser errors. 
+@publishedPartner
+@released
+*/
+enum TXMLErrorCodeSeverity
+	{
+	/** Fatal error. */
+	EXMLFatal,
+	/** Severity level cannot be determined. */
+	EXMLIndeterminate,
+	/** Recoverable error. */
+	EXMLWorkable,
+	/** No error. */
+	EXMLNone
+	};
+
+
+_LIT(KNewLine, "\r\n");
+
+#ifdef _DEBUG
+	_LIT(KTab, "   ");
+#endif
+
+_LIT(KXMLSemiColon, ";");
+_LIT(KXMLDecimalId, "&#");
+_LIT(KXMLHexidecimalId, "&#x");
+_LIT(KXMLStartComment, "<!--");
+_LIT(KXMLEndComment, "-->");
+_LIT(KXMLStartEndTag, "</");
+_LIT(KXMLStartTag, "<");
+_LIT(KXMLEndStartTag, "/>");
+_LIT(KXMLStartProcessingInstruction, "<?");
+_LIT(KXMLEndProcessingInstruction, "?>");
+_LIT(KXMLStartCDataSection, "<![CDATA[");
+_LIT(KXMLEndCDataSection, "]]>");
+
+_LIT(KBackSlash, "\\");
+_LIT(KDash, "-");
+_LIT(KExclamation, "!");
+_LIT(KForwardSlash, "/");
+_LIT(KEqualSign, "=");
+_LIT(KLeftArrow, "<");
+_LIT(KRightArrow, ">");
+_LIT(KAmpersand, "&");
+_LIT(KApostrophe, "\'");
+_LIT(KQuotation, "\"");
+_LIT(KSingleSpace, " ");
+
+
+const TInt KNominalTagLength = 256;
+const TInt KStartPosition = -1;
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmldocument.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,220 @@
+// Copyright (c) 2001-2009 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:
+// This file contains the declaration of the CMDXMLDocument class which
+// is the root class for a Mini-DOM tree.
+// 
+//
+/**
+ * @file 
+ * @publishedPartner
+ * @released
+ */
+
+#ifndef __GMXMLDOCUMENT_H__
+#define __GMXMLDOCUMENT_H__
+
+#include <e32base.h>
+
+#include <e32std.h>
+#include <badesca.h>
+
+class CMDXMLElement;
+class MXMLDtd;
+
+/**
+MXMLDtd is a mixin class. If User wants  to  derive from MXMLDtd class ,
+then  one  should not derive from any other class at the same time. 
+i.e A class can not derive from CBase  at all  using MXMLDtd.
+
+Interface for DTD defintion classes. 
+A class derived from this interface can be used by CMDXMLParser or CMDXMLComposer 
+to check that the data conforms to a specific DTD. 
+@publishedPartner
+@released
+*/
+class MXMLDtd
+
+	{
+
+public:
+	/** Tests if an element name is valid in the DTD.
+	
+	@param aElement The element name to be tested
+	@return ETrue the if element name valid, else EFalse
+	@leave KErrNoMemory Out of memory */
+	virtual TBool IsValidElementL(const TDesC& aElement) const = 0;
+
+	/** Tests if an attribute name and value is valid in DTD.
+	
+	@param aElement The element to which the attributes belong
+	@param aAttribute The attribute to be tested
+	@param aAttributeValue The attribute value to be tested
+	@return KErrNone if the name and value are valid, KXMLBadAttributeName if the 
+	attribute name is invalid, or KXMLBadAttributeValue if the attribute value 
+	is invalid 
+	@leave KErrNoMemory Out of memory */
+	virtual TInt IsValidAttributeForElementL(const TDesC& aElement, const TDesC& aAttribute, const TDesC& aAttributeValue) const = 0;
+
+	/** Tests if the parent/child relationship is valid in DTD.
+	
+	@param aParentElement The name of the parent element to be tested
+	@param aChildElements An array of child element names to be tested
+	@return ETrue if parent/child relationship is valid
+	@leave KErrNoMemory Out of memory */
+	virtual TBool AreValidChildElementsL(const TDesC& aParentElement, const CDesCArray& aChildElements) const = 0;
+
+	/** Tests it is valid for a particular element to have children.
+	
+	@param aElement The name of the element to be tested
+	@return ETrue if it is valid for the element to have children */
+	virtual TBool CanElementHaveChildren(const TDesC& aElement) const = 0;
+	};
+
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include "gmxmldummydtd.h"
+#endif
+
+class CMDXMLDocument : public CBase
+/** An XML document.
+
+An object of this type owns the root element of a DOM tree and is not itself 
+an XML node.
+@publishedPartner
+@released
+ */
+{
+public:
+
+	/**
+	 Allocates and constructs a new CMDXMLDocument.
+	 @param iDtdRepresentation DTD for the document
+	 @return The new CMDXMLDocument object
+	 @leave KErrNoMemory Out of memory 
+	 */
+  	IMPORT_C static CMDXMLDocument* NewL(MXMLDtd& iDtdRepresentation);
+
+
+	/**
+	 Allocates and constructs a new CMDXMLDocument, leaving the object on the cleanup stack.
+	 @param iDtdRepresentation DTD for the document
+	 @return The new CMDXMLDocument object
+	 @leave KErrNoMemory Out of memory 
+	 */
+  	IMPORT_C static CMDXMLDocument* NewLC(MXMLDtd& iDtdRepresentation);
+
+
+	/** Allocates and constructs a new CMDXMLDocument, without specifying a DTD.
+
+	Documents created using this function will not be able to validate the XML.
+	
+	@return The new CMDXMLDocument
+	@leave KErrNoMemory Out of memory  */
+  	IMPORT_C static CMDXMLDocument* NewL();
+
+
+	/** Allocates and constructs a new CMDXMLDocument, without specifying a DTD, 
+	leaving the object on the cleanup stack.
+
+	Documents created using this function will not be able to validate the XML.
+	
+	@return The new CMDXMLDocument
+	@leave KErrNoMemory Out of memory  */
+  	IMPORT_C static CMDXMLDocument* NewLC();
+
+
+	/** Destructor. */
+  	IMPORT_C virtual ~CMDXMLDocument();
+   
+	/** Gets the root element of the DOM tree.
+	
+	@return The root element of the DOM tree */
+  	inline CMDXMLElement* DocumentElement() {return iRootElement;}
+
+
+	/** Sets the document's XML version processing instruction.
+	
+	@param aVersionTag The XML version processing instruction. This must begin 
+	with <?xml and end with >, for example <?xml version="1.0"?>.
+	@return ETrue if successful, EFalse if the parameter format is not correct
+	@leave KErrNoMemory Out of memory */
+  	IMPORT_C TBool SetVersionTagL(const TDesC& aVersionTag);
+
+	/** Sets the document's DOCTYPE declaration.
+	
+	@param aDocTypeTag The XML DOCTYPE declaration. This must begin<!DOCTYPE and 
+	end >.
+	@return ETrue if operation succeeds, EFalse if the parameter format is not 
+	correct
+	@leave KErrNoMemory Out of memory */
+  	IMPORT_C TBool SetDocTypeTagL(const TDesC& aDocTypeTag);
+
+	/** Tests whether an element name is valid for the document.
+	
+	@param aElement The element name to be tested
+	@return True the if element name valid, else false
+	@leave KErrNoMemory Out of memory */
+	IMPORT_C TBool ValidElementNameL(const TDesC& aElement) const;
+
+	/**
+	 Tests whether it is valid for a particular element to have children.
+	 @param aElement the name of the element to be tested
+	 @return ETrue if it is valid for element to have children
+	 */
+
+	IMPORT_C TBool CanElementHaveChildren(const TDesC& aElement) const;
+	/** Gets the document's XML version processing instruction.
+	
+	@return The document's XML version processing instruction. */
+  	inline const TDesC& VersionTag() const {return *iVersionTag;}
+
+	/** Gets the document's DOCTYPE declaration.
+	
+	@return The document's DOCTYPE declaration. */
+  	inline const TDesC& DocTypeTag() const  {return *iDocTypeTag;}
+
+	/** Gets a reference to the MXMLDtd object to use for DTD validation checking.
+	
+	@return DTD */
+	const MXMLDtd& CMDXMLDocument::DtdRepresentation() const;
+
+
+private:  
+  	CMDXMLDocument(MXMLDtd& aDtdRepresentation);
+  	CMDXMLDocument();
+
+	/*
+  	 * sets the root elememnt of the DOM tree.
+  	 */
+  	inline void SetDocumentElement(CMDXMLElement* aRootElement) {iRootElement = aRootElement;}
+  	
+  	void ConstructL();
+  	
+  	IMPORT_C void PlaceholderForRemovedExport1(MXMLDtd& aDtdRepresentation);
+  	IMPORT_C void PlaceholderForRemovedExport2();
+  
+private:
+   	CMDXMLElement* iRootElement;	// Root element node of the DOM tree
+
+protected:
+	/** XML Version text */
+	HBufC* iVersionTag;				// XML Version text
+	/** Document type text */
+  	HBufC* iDocTypeTag;				// Document type text
+
+private:
+	MXMLDtd* iDtdRepresentation;	
+	TBool iOwnsDtd;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmldomconstants.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,61 @@
+// Copyright (c) 2003-2009 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:
+// This file contains generic XML constants
+// 
+//
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef __GMXMLDOMCONSTANTS_H__
+#define __GMXMLDOMCONSTANTS_H__
+
+#include <e32base.h>
+
+
+// Error codes
+/**
+* Starting value for all the component's error codes.
+* @publishedPartner
+* @released
+*/
+const TInt KErrXMLBase = -9000;
+/**
+* XML attribute value error code. 
+* @publishedPartner
+* @released
+*/
+const TInt KErrXMLBadAttributeValue =			KErrXMLBase - 1;
+/**
+* XML attribute name error code. 
+* @publishedPartner
+* @released
+*/
+const TInt KErrXMLBadAttributeName = 			KErrXMLBase - 2;
+/**
+* Invalid XML child element error code. 
+* @publishedPartner
+* @released
+*/
+const TInt KErrXMLInvalidChild = 				KErrXMLBase - 3;
+
+
+
+_LIT(KXMLDocumentElementNodeName, "documentelement");
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmldummydtd.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,72 @@
+// Copyright (c) 2009 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:
+// This file contains the declaration of the CMDXMLDocument when no 
+// DTD is mentioned. 
+// 
+//
+/**
+ * @file 
+ * @internalComponent
+ * @released
+ */
+
+#ifndef __GMXMLDUMMYDTD_H__
+#define __GMXMLDUMMYDTD_H__
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include "GMXMLDocument.h"
+#endif
+
+_LIT(KXMLCDATASectionNodeName, "#cdata-section");
+_LIT(KXMLCommentNodeName, "comment");
+_LIT(KXMLProcessingInstructionNodeName, "processing_instruction");
+_LIT(KXMLTextNodeName, "#text");
+_LIT(KXMLDefaultVersionTag, "<?xml version=\"1.0\" ?>");
+_LIT(KXMLDefaultDocTypeTag, "<!DOCTYPE smil SYSTEM \"mms_smil.dtd\">");
+_LIT(KXMLVersion, "<?xml");
+_LIT(KXMLEndTag, ">");
+_LIT(KXMLDocumentTypes, "<!DOCTYPE");
+
+/**
+* ELement whose enumerated type has not been set.
+* @internalTechnology
+* @released
+*/
+const TInt KXMLUndefinedElement = -1; 
+
+// Used as panic category and number when a removed export is called
+_LIT(KLDRIMPORT, "LDR-IMPORT");
+
+/**
+* @internalTechnology
+* @released
+*/
+const TInt KLdrImportedOrdinalDoesNotExist = 2;
+
+class CMDXMLDummyDtd : public MXMLDtd
+/*
+This class is used internally when no DTD is supplied to CMDXMLDocument.
+*/
+/**
+@internalComponent
+@released
+*/
+	{
+	TBool IsValidElementL(const TDesC& aElement) const;
+	TInt IsValidAttributeForElementL(const TDesC& aElement, const TDesC& aAttribute, const TDesC& aAttributeValue) const;
+	TBool AreValidChildElementsL(const TDesC& aParentElement, const CDesCArray& aChildElements) const;
+	TBool CanElementHaveChildren(const TDesC& aElement) const;
+	};
+
+#endif //__GMXMLDUMMYDTD_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlelement.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,194 @@
+// Copyright (c) 2001-2009 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:
+// This file contains the declaration of the CMDXMLElement class.
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLELEMENT_H__
+#define __GMXMLELEMENT_H__
+
+#include <e32base.h>
+#include <badesca.h>
+#include <gmxmlnode.h>
+
+
+// forward references
+class CMDXMLEntityConverter;
+class CMDXMLComposer;
+
+
+// Constants for the initial and terminal states
+const TInt KXMLMinJump = 5; // Don't do binary chop below this size.  Not a critical value.
+
+class CMDXMLElement : public CMDXMLNode
+/** Generic XML element, and base class for particular XML element types.
+
+It provides access to the element tag name and its attribute list. Attributes are
+stored as name-value pairs.  
+@publishedPartner
+@released
+*/
+{
+public:
+	/** Allocates and constructs a new CMDXMLElement, leaving the object on the cleanup 
+	stack.
+	
+	@param aCanHaveChildren Set to true if the element can have children
+	@param aOwnerDocument Pointer to the document at the root of the DOM tree
+	@param aTagName Name of the tag for the element
+	@leave KErrNoMemory Out of memory
+	@return The new CMDXMLElement */
+	IMPORT_C static CMDXMLElement* NewLC( TBool aCanHaveChildren, CMDXMLDocument* aOwnerDocument, TPtrC aTagName );
+
+	/** Allocates and constructs a new CMDXMLElement.
+	
+	@param aCanHaveChildren Set to true if the element can have children
+	@param aOwnerDocument Pointer to the document at the root of the DOM tree
+	@param aTagName Name of the tag for the element
+	@leave KErrNoMemory Out of memory
+	@return The new CMDXMLElement */
+	IMPORT_C static CMDXMLElement* NewL( TBool aCanHaveChildren, CMDXMLDocument* aOwnerDocument, TPtrC aTagName );
+
+	/** Destructor. */
+	IMPORT_C virtual ~CMDXMLElement();
+
+	// Attribute handling routines.
+
+	/** Gets a specified attribute value.
+	
+	@param aAttributeName Name of the attribute to get
+	@param aAttributeValue On return, the value of the attribute
+	@return KErrNone if successful, KErrNotFound if the named attribute is not set. */
+	IMPORT_C virtual TInt GetAttribute(const TDesC& aAttributeName, TPtrC& aAttributeValue ) const;
+
+	/** Checks the validity of an attribute and adds it to the DOM if it's valid.
+	
+	@param aAttributeName Name of the attribute to set
+	@param aAttributeValue Value of the attribute
+	@leave KErrNoMemory Out of memory
+	@return KErrNone if successful, KErrNotSupported if an invalid attribute name 
+	or attribute value. */
+	IMPORT_C virtual TInt SetAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue);
+	
+	/** Checks the validity of an attribute and adds it to the DOM.  The aStoreInvalid 
+	parameter is used to control whether invalid attributes are added to the DOM.
+	@param aAttributeName Name of the attribute to set
+	@param aAttributeValue Value of the attribute
+	@param aStoreInvalid If set to EFalse only attributes that are found to be valid will be added to
+	the DOM.  Set to ETrue to store all attributes in the DOM, even those that are invalid.
+	@leave KErrNoMemory Out of memory
+	@return KErrNone if successful, KErrNotSupported if an invalid attribute name 
+	or attribute value. */
+	IMPORT_C TInt SetAttributeL(const TDesC& aAttributeName, const TDesC& aAttributeValue, TBool aStoreInvalid);
+
+	/** Removes a specified attribute.
+	
+	@param aAttributeName Name of the attribute to remove
+	@return KErrNone if successful, KErrNotFound if the named attribute is not 
+	present. */
+	IMPORT_C virtual TInt RemoveAttribute(const TDesC& aAttributeName);
+
+	/** Tests if a specified attribute is set.
+	
+	@param aAttributeName Name of the attribute to test
+	@return True if the named attribute has a value set, false if not */
+	IMPORT_C virtual TBool IsAttributeSpecified(const TDesC& aAttributeName) const;
+
+
+	/** Checks the children of this node for validity.
+
+	It checks that the list of child elements conforms to those allowed by the DTD. 
+	
+	In a generic CMDXMLElement object, this is always true as it has no basis 
+	for a meaningful check. As well as checking the list of direct children, it 
+	calls CheckChildren() for each child element. It does not check child nodes 
+	that are not elements, as they cannot have children.
+	
+	@return True if the node has valid children */
+	IMPORT_C virtual TBool CheckChildren();
+
+// maybe these should be node functions ?
+	/** Gets a pointer to the first child of a given type if any, otherwise returns 
+	NULL.
+	
+	@param aElementType Name of element type to return
+	@return First child element */
+	IMPORT_C CMDXMLElement* FirstChildOfType(const TDesC& aElementType);
+
+	/** Gets a pointer to the last child of a given type if any, otherwise returns 
+	NULL.
+	
+	@param aElementType Name of element type to return
+	@return Last child element */
+	IMPORT_C CMDXMLElement* LastChildOfType(const TDesC& aElementType);
+
+
+
+protected: //construction
+	/**
+	 * Constructor
+	 * @param aCanHaveChildren Flag to indicate if the node represents a node which is allowed children
+	 * @param aOwnerDocument Pointer to the document at the root of the DOM tree - if NULL then assume this is the root
+	 */
+	IMPORT_C CMDXMLElement( TBool aCanHaveChildren, CMDXMLDocument* aOwnerDocument );
+
+	void ConstructL();
+protected:
+	/**
+	 * Check the immediate children of this element - i.e. the first level of children only
+	 * The default implementation returns true - derived classes can override with
+	 * DTD-specific checks.
+	 * @return True if immediate children are valid
+	 */
+	IMPORT_C virtual TBool CheckImmediateChildren();
+
+private:
+	 TBool DoCheckImmediateChildrenL();
+
+
+public: 
+	/** Finds an attribute and returns the index of it.
+	
+	@param aAttName The attribute to search for
+	@return The index of the attribute if found, or KErrNotFound */
+	IMPORT_C TInt FindIndex(const TDesC &aAttName);
+
+
+	/** Gets the name and value of an attribute at a given index.
+	
+	@param Index The array index of the element for which details are required
+	@param aAttributeName The attribute name returned
+	@param aAttributeValue The attribute value returned
+	@return KErrNone if index is valid, else KErrNotFound */
+	IMPORT_C TInt AttributeDetails(TInt Index, TPtrC& aAttributeName, TPtrC& aAttributeValue);
+
+	/** Gets the number of attributes that this element has.
+	
+	@return The number of attributes held by the element */
+	IMPORT_C TInt NumAttributes();
+
+protected:
+	/** Store attribute names */
+	CDesCArraySeg* iDescAttName;		// Store Attribute Names
+	/** Store attribute values */
+	CDesCArraySeg* iDescAttValue;		// Store Attribute Values
+
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlentityconverter.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,91 @@
+// Copyright (c) 2001-2009 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:
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLENTITYCONVERTER_H__
+#define __GMXMLENTITYCONVERTER_H__
+
+#include <e32std.h>
+#include <txtetext.h>
+
+
+class CMDXMLEntityConverter: public CBase
+/**
+ * This class represents a generic entity converter for an XML parser or composer.
+ * It is responsible for converting entity references to text and vice-versa.
+ * @publishedPartner
+ * @released
+ */
+	{
+public:
+	/**
+	 * Constructor
+	 */
+	IMPORT_C CMDXMLEntityConverter();
+
+	/** Destructor. */
+	IMPORT_C virtual ~CMDXMLEntityConverter();
+
+	/**
+	 * Takes a block of text and converts any entity references found to the
+	 * appropriate text.  Because built-in and character entity references are
+	 * longer than the replacement text, this takes place in-situ.
+	 * @param aTextToConvert Text to be converted - replacement text goes
+	 * out in the same
+	 * @return Returns KErrNone if successful or no entity found
+	 * @return Returns KErrXMLBadEntity if malformed entity found
+	 */
+	TInt EntityToTextL(TDes& aTextToConvert);
+
+	/**
+	 * Outputs a block of text to a composer with offending characters replaced by
+	 * entity references.
+	 * @param aComposer the composer to be used for output
+	 * @param aTextToConvert The text to be converted.
+	 * @return Returns KErrNone if succcessful or a file write error
+	 * @leave can Leave due to OOM
+	 */
+	IMPORT_C virtual TInt OutputComposedTextL( CMDXMLComposer* aComposer, const TDesC& aTextToConvert );
+
+protected:
+	/**
+	 * DTD Specific entity to text converter
+	 * Takes a block of text and converts any entity references found to the
+	 * appropriate text.  We hope that this can happen in-situ.
+	 * @param aTextToConvert Text to be converted - replacement text goes
+	 * out in the same
+	 * @return Returns KErrNone if successful or no entity found
+	 * @return Returns KErrXMLBadEntity if malformed entity found
+	 */
+	virtual TInt DTDEntityToText(TDes& aTextToConvert);
+
+private:
+	/**
+	 * Replaces the built in entity reference with its replacement text.
+	 * @param aTextToConvert An entity reference to convert.  This should begin with &
+	 * and end with ;.
+	 * @return Returns KErrNone if successful
+	 * @return Returns KErrUnsupported if aTextToConvert contains no recognised entity references
+	 * @return Returns KErrOverflow or KErrGeneral if the character reference couldn't be parsed
+	 */
+	TInt ConvertEntityRefL(TDes& aTextToConvert);
+
+	};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlnode.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,235 @@
+// Copyright (c) 2001-2009 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:
+// This file contains the declaration of the CMDXMLNode class which
+// is the base class for the Mini-DOM.
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLNODE_H__
+#define __GMXMLNODE_H__
+
+#include <e32base.h>
+#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <gmxmldocument.h>
+#endif
+
+// forward references
+class CMDXMLComposer;
+class CMDXMLDocument;
+class CMDXMLEntityConverter;
+
+class CMDXMLNode : public CBase
+/** Abstract base class for DOM node classes.
+
+It stores the node type and name, and manages a list of child nodes. The node 
+name and type are set in the derived class's constructor and cannot be changed.
+
+The list of child nodes is managed as a doubly-linked list, not an array 
+or similar structure.
+
+Derived classes that are not allowed children override the operations to manipulate 
+the child list. 
+@publishedPartner
+@released
+*/
+{
+public:
+	// XML DOM Node Types - The actual values are taken from the DOM definition but we only use some of them.
+	/** XML DOM node types.
+
+	The values are taken from the DOM definition, but only some of them are used 
+	for the SMIL API. 
+@publishedPartner
+@released
+*/
+	enum TDOMNodeType
+		{
+		EElementNode=1,					//< Element
+		ETextNode=3,					//< Text
+		ECDATASectionNode=4,			//< CDATA Section
+		EProcessingInstructionNode=7,	//< Processing Instruction
+		ECommentNode=8,					//< Comment
+		EDocumentNode=9					//< Document
+		};
+
+	/** Destructor.
+	
+	When a node is deleted, it:
+	
+	1. links its previous and next siblings
+	
+	2. deletes all its children
+	
+	3. corrects its parents first and last child pointers if necessary */
+	IMPORT_C virtual ~CMDXMLNode();
+
+	/** Gets the node type of the node.
+	
+	@return The node type of the node */
+	inline TDOMNodeType NodeType() {return iNodeType;}
+
+	/** Gets the name of the node.
+	
+	@return The name of the node */
+	IMPORT_C TPtrC NodeName();
+
+	/** Tests if the node can have child nodes.
+	
+	@return True if the node can have child nodes, false otherwise */
+	inline TBool CanHaveChildNodes() {return iCanHaveChildren;}
+
+	/** Tests if the node has any child nodes.
+	
+	@return True if the node has any child nodes, false otherwise */
+	inline TBool HasChildNodes() {return (iFirstChildPtr != NULL);}
+
+	/** Gets a pointer to the document which is the owner of the DOM tree.
+	
+	@return A pointer to the document which is the owner of the DOM tree */
+	inline CMDXMLDocument* OwnerDocument() {return (CMDXMLDocument*)iOwnerDocument;}
+
+	/** Gets a pointer to the first child node, if any.
+	
+	@return A pointer to the first child node if any, otherwise NULL */
+	inline CMDXMLNode* FirstChild() {return iFirstChildPtr;}
+
+	/** Gets a pointer to the last child node, if any.
+	
+	@return A pointer to the last child node if any, otherwise NULL */
+	inline CMDXMLNode* LastChild() {return iLastChildPtr;}
+
+	/** Gets a pointer to the next sibling node, if any.
+	
+	@return A pointer to the next sibling node if any, otherwise NULL */
+	inline CMDXMLNode* NextSibling() {return iNextSiblingPtr;}
+
+	/** Gets a pointer to the previous sibling node, if any.
+	
+	@return A pointer to the previous sibling node if any, otherwise NULL */
+	inline CMDXMLNode* PreviousSibling() {return iPrevSiblingPtr;}
+
+	/** Gets a pointer to the parent node, if any.
+	
+	@return A pointer to the parent node if any, otherwise NULL (only at root 
+	of tree) */
+	inline CMDXMLNode* ParentNode() {return iParentPtr;}
+
+	/** Gets the element type as an enumerated value.
+	
+	This function is quicker to use than NodeName().
+	
+	@return A CMDXMLNode::TDomNodeType value identifying the node type */
+	inline TInt ElementType() {return iElementType;}
+
+	/** Removes a child from the list of child nodes. 
+	
+	The child node is not deleted: that is the responsibility of the caller.
+	
+	@param aChildToRemove Pointer to child to remove from the list
+	@return KErrNone if sucessful or KErrNotFound if the referenced child node 
+	is not found */
+	IMPORT_C TInt RemoveChild(CMDXMLNode* aChildToRemove);
+
+	/** Inserts a new child node at a specific point in the child list. 
+	
+	@param aInsertBeforeChild Pointer to the element before which the new child 
+	should be inserted. UseNULL to insert at the start of the list.
+	@param aChildToInsert Pointer to the new child node to insert
+	@return KErrNone if successful, KErrNotSupported if the node cannot have children 
+	or KErrNotFound if it cannot find the child before which to insert */
+	IMPORT_C TInt InsertBefore(CMDXMLNode* aInsertBeforeChild, CMDXMLNode* aChildToInsert);
+
+	/** Appends a new child at the end of the child list. 
+	
+	@param aChildToInsert Pointer to the new child node to append.
+	@return KErrNone if successful or KErrNotSupported if the node cannot have 
+	children */
+	IMPORT_C TInt AppendChild(CMDXMLNode* aChildToInsert);
+
+	/** Inserts a new child node while removing an existing one. 
+	
+	The old child is not deleted. 
+	
+	@param aChildToInsert Pointer to the new child node to insert
+	@param aChildToReplace Pointer to the child node to be replaced
+	@return KErrNone if successful, KErrNotSupported if the node cannot have children 
+	or KErrNotFound if it cannot find the child to replace. */
+	IMPORT_C TInt ReplaceChild(CMDXMLNode* aChildToInsert, CMDXMLNode* aChildToReplace);
+
+
+	/** Checks the children of this node for validity.
+	
+	@return True if the children are valid according to the DTD. */
+	IMPORT_C virtual TBool CheckChildren()=0;
+
+protected:
+	/*
+	 * The node type will normally be hard-wired in any derived class constructor.
+	 * The node name and HaveChildren flag will normally be hard-wired in a derived class constructor unless it
+     * covers a generic element.
+	 * @param aNodeType The tpe of node to be created
+	 * @param aCanHaveChildren Flag to indicate if the node represents a node which is allowed children
+	 * @param aOwnerDocument Pointer to the document at the root of the DOM tree - if NULL then assume this is the root
+	 */
+	CMDXMLNode( TDOMNodeType aNodeType, TBool aCanHaveChildren, CMDXMLDocument* aOwnerDocument );
+
+// make these public? sjr
+	/**
+	 * Gets a pointer to the previous sibling node of the same type if any,
+	 * otherwise returns NULL
+	 * @return Previous sibling node
+	 */
+	IMPORT_C CMDXMLNode* PreviousSameTypeSibling();
+
+	/**
+	 * Gets a pointer to the next sibling node of the same type if any,
+	 * otherwise returns NULL
+	 * @return Next sibling node
+	 */
+	IMPORT_C CMDXMLNode* NextSameTypeSibling();
+
+	/**
+	 * Set the node name - normally on creation
+	 * @param aNodeName The node name - commonly an element tag name - _not_ any unique identifier
+	 * @leave Can Leave due to OOM
+	 */
+	IMPORT_C void SetNodeNameL(const TDesC& aNodeName);
+	
+	/**
+	 * Sets the enumerated element type (same information as node name but faster to access)
+	 */
+	inline void SetElementType( TInt aElementType ) {iElementType = aElementType;}
+
+protected:
+	CMDXMLDocument* iOwnerDocument;	//< Pointer to owning document	
+
+
+private:
+	TInt iElementType;				// Enumerated element type
+	TDOMNodeType iNodeType;			// Node type
+	HBufC* iNodeName;				// Name of the node, e.g. element tag name - not unique id
+	CMDXMLNode* iParentPtr;			// Pointer to parent node if any
+	CMDXMLNode* iFirstChildPtr;		// Pointer to first child node if any
+	CMDXMLNode* iLastChildPtr;		// Pointer to last child node if any
+	CMDXMLNode* iNextSiblingPtr;	// Pointer to next sibling if any
+	CMDXMLNode* iPrevSiblingPtr;	// Pointer to previous sibling if any
+	TBool iCanHaveChildren;			// true if this node is allowed to have children
+};
+
+#endif
+// End Of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmlparser.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,510 @@
+// Copyright (c) 2003-2009 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:
+// This file contains the declaration of the generic CMDXMLParser class
+// which is responsible for creating a DOM structure
+// from a given XML file.
+// 
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLPARSER_H__
+#define __GMXMLPARSER_H__
+
+#include <e32std.h>
+#include <txtetext.h>
+#include <gmxmlconstants.h>
+#include <f32file.h>
+
+//forward reference
+class CMDXMLDocument;
+class CMDXMLEntityConverter;
+class CMDXMLElement;
+class MXMLDtd;
+
+
+
+class MMDXMLParserObserver
+/** Abstract observer interface for notification when XML parsing is complete.
+
+It should be implemented by users of CMDXMLParser
+@publishedAll 
+@released*/
+	{
+public:
+	/**
+	Call back function used to inform a client of the Parser when a parsing operation completes.
+	 */
+	virtual void ParseFileCompleteL() = 0;
+	};
+
+class MMDXMLParserDataProvider
+/** Abstract data source interface for XML data source.
+
+The user of CMDXMLParser must build one of these to encapsulate the data source
+that they wish to parse.  CMDXMLParser implements a file-based data source to
+implement the functionality of the ParseFile function.
+
+@publishedAll 
+@released*/
+	{
+public:
+	/** Status codes returned by GetData() implementations. */
+	enum TDataProviderResults
+		{
+		KMoreData,		//< Returned by the interface implementation when it is returning more data.
+		KDataStreamError,	//< Returned by the interface when an unrecoverable error prevents obtaining more data.  A recoverable error should be represented by KDataNotReady.
+		KDataStreamEnd	//< Returned by the interface when there is no more data to come.
+		};
+
+public:
+	/** 
+	The XML Parser calls this on a specific data provider to get more data
+	when required.
+
+	Note that the TPtrC supplied may be used by the parser at any time
+	between the return of this call and the next call that the parser
+	makes out.
+
+	Your data provider must not move the data pointed to until the
+	parser has indicated that it's done with that block by asking for
+	another.
+
+	Ownership of the data pointed to remains with the data provider.
+
+
+	General comments on efficiency
+	------------------------------
+
+	The parser is designed such that it processes the whole data block
+	provided in one go.  It will automatically become asynchronous when
+	another block is required - the data provider only needs to supply
+	data.
+
+	Because of this design, it allows the data provider to indirectly
+	control the amount of processing time that will be needed
+	in a single block.
+
+	It is a good idea to balance the need for the fastest possible 
+	processing with the need for client application responsiveness by
+	ensuring that the amount of data passed in a single block is not 
+	too large.	However, it is worth bearing in mind that the parser
+	will convert UTF8 data streams in blocks of 32 characters, and
+	supplying blocks of smaller length than this will result in a
+	slight loss of efficiency.
+
+	@param aPtr On return, the data provided
+	@param aStatus Asynchronous status to be completed by the function with a 
+	TDataProviderResults value
+	*/
+	virtual void GetData(TPtrC8 &aPtr, TRequestStatus &aStatus) = 0;
+	/**
+	Called to indicate that use of the data source is complete.
+	*/
+	virtual void Disconnect() = 0;
+	};
+
+class CMDXMLParserFileDataSource;
+
+class CMDXMLParser: public CActive
+/** Creates a DOM structure from a given XML file.
+
+The parsing operation is asynchronous and is initiated by a call to ParseFile(). 
+On completion, the created DOM document can be retrieved through DetachXMLDoc().
+
+Note the following ownership rules for the DOM document:
+
+1. calling DetachXMLDoc() transfers ownership of the document to the client
+
+2. if the parser is asked to parse a new file while it still owns an existing 
+DOM document, it will delete the old document.
+
+@publishedAll
+@released
+*/
+	{
+public:
+	/** Allocates and constructs a new XML parser, specifying a DTD.
+	
+	@param aParserObserver XML parser observer
+	@leave KErrNoMemory Out of memory
+	@return New XML parser */
+	IMPORT_C static CMDXMLParser* NewL(MMDXMLParserObserver* aParserObserver);
+
+	/** Allocates and constructs a new XML parser, specifying a DTD.
+	
+	@param aParserObserver XML parser observer
+	@param aDtdRepresentation DTD validator
+	@leave KErrNoMemory Out of memory
+	@return New XML parser */
+	IMPORT_C static CMDXMLParser* NewL(MMDXMLParserObserver* aParserObserver, MXMLDtd* aDtdRepresentation);
+
+	/** Allocates and constructs a new XML parser, leaving the object on the cleanup 
+	stack.
+	
+	@param aParserObserver XML parser observer
+	@leave KErrNoMemory Out of memory
+	@return New XML parser */
+	IMPORT_C static CMDXMLParser* NewLC(MMDXMLParserObserver* aParserObserver);
+
+	/** Allocates and constructs a new XML parser, leaving the object on the cleanup 
+	stack.
+	
+	@param aParserObserver XML parser observer
+	@param aDtdRepresentation DTD validator
+	@leave KErrNoMemory Out of memory
+	@return New XML parser */
+	IMPORT_C static CMDXMLParser* NewLC(MMDXMLParserObserver* aParserObserver, MXMLDtd* aDtdRepresentation);
+
+
+	/** Destructor. */
+	IMPORT_C ~CMDXMLParser();
+
+	/** Gets the last error found by the parser.
+	
+	@return Error code
+	 */
+	IMPORT_C TInt Error() const;
+
+	/**
+	 Get the severity of the most severe error found.
+	 @return the maximum error severity
+	 */
+	IMPORT_C TXMLErrorCodeSeverity ErrorSeverity() const; 
+
+	/** Gets the created DOM.
+	
+	This should be called after the conclusion of the parser process.
+	
+	Note that the function sets the internal variable pointing to the document 
+	to NULL, so this function can only be called once per file parse. The caller 
+	takes ownership of the document, and must delete it when its use is complete.
+	
+	@return The created DOM */
+	IMPORT_C CMDXMLDocument* DetachXMLDoc();
+
+	/** Parses a specified XML file into a DOM object tree.
+	
+	@param aRFs File server session
+	@param aFileToParse The file name to parse
+	@return KErrNone if success or a file read error code */
+	IMPORT_C TInt ParseFile(RFs aRFs, const TDesC& aFileToParse);
+	
+	IMPORT_C TInt ParseFile(RFile& aFileHandleToParse);
+
+	/** Parses a specified XML Data Source into a DOM object tree.
+	Use ParseSourceL() function in preference to ParseSource()
+	@param aSource MMDXMLParserDataProvider pointer 
+	*/
+	inline void ParseSource(MMDXMLParserDataProvider *aSource)
+		{
+		TRAP_IGNORE(ParseSourceL(aSource));
+		} 
+				
+	/** Parses a specified XML Data Source into a DOM object tree.	
+	@param aSource MMDXMLParserDataProvider pointer 
+	*/
+	IMPORT_C void ParseSourceL(MMDXMLParserDataProvider *aSource);
+
+	/** Defines input stream character widths. */
+	enum TMDXMLParserInputCharWidth
+		{
+		EAscii = 0x01, //< ASCII
+		EUnicode = 0x02 //<Unicode
+		};
+	
+	/** Sets the input stream character width.
+	 *
+	 * @param aWidth Character width for incoming stream.  Possible values are EAscii and EUnicode (representing Ascii/UTF8 and Unicode respectively).
+	 *
+	 */
+	IMPORT_C void SetSourceCharacterWidth(TMDXMLParserInputCharWidth aWidth);
+
+	//Defect fix for INC036136- Enable the use of custom entity converters in GMXML
+	/**
+	 * Sets the entity converter to be used for parsing.
+	 * and  take ownership of the passed entity converter
+	 * @param aEntityConverter the entity converter to be used.
+	 */
+	IMPORT_C void SetEntityConverter(CMDXMLEntityConverter* aEntityConverter);
+	//End Defect fix for INC036136
+
+	/**
+	 Controls whether invalid elements and attributes are added to the DOM.
+	 @param aStoreInvalid ETrue if invalid content should be stored, EFalse otherwise.
+	 */
+	IMPORT_C void SetStoreInvalid(TBool aStoreInvalid);
+	
+	/**
+	 Controls whether whitespaces are handled by XML parser or by client.
+	 @param aPreserve ETrue if all whitespaces should be preserved (handled by client), EFalse otherwise.
+	 */
+	IMPORT_C void SetWhiteSpaceHandlingMode(TBool aPreserve);
+
+public: // public functions used by other classes within the .dll, not for Export.
+	/** Gets the entity converter.
+	
+	@return The entity converter */
+	CMDXMLEntityConverter* EntityConverter();
+
+private:
+	IMPORT_C virtual void DoCancel();
+
+	/*
+	 * RunL function inherited from CActive base class - carries out the actual parsing.
+	 * @leave can Leave due to OOM
+	 */
+	virtual void RunL();
+
+	/*
+	 * Helper function that does the parsing - called from inside RunL
+	 */
+	TBool DoParseLoopL();
+
+	/*
+	 * RunError function inherited from CActive base class - intercepts any Leave from
+	 * the RunL() function, sets an appropriate errorcode and calls ParseFileCompleteL
+	 */
+	IMPORT_C TInt RunError(TInt aError);
+
+	/*
+	 * Constructors
+	 */
+	CMDXMLParser(MMDXMLParserObserver* aParserObserver);
+
+	CMDXMLParser(MMDXMLParserObserver* aParserObserver, MXMLDtd* aDtdRepresentation);
+
+	/*
+	 * Called when a character is read in and found to bo outside of an element tag
+	 */
+	virtual void HandleTextL(TDes& aChar);
+
+	enum TGetCharReturn
+		{
+		KError = 0x00,			// GetChar detected an error
+		KCharReturned,	// GetChar returned a character
+		KWaitForChar	// GetChar couldn't return a character this time, but might next time.
+		};
+
+	/*
+	 * Fetch one character from the input file
+	 * @param aChar the returned character.
+	 * @return returns one of the values of TCharReturn
+	 */
+	TGetCharReturn GetChar(TDes& aChar);
+
+	/* utility functions, called from GetChar to deal with the
+	 * 2 types of input stream
+	 */
+	TGetCharReturn GetDoubleByteChar(TDes& aChar);
+	TGetCharReturn GetSingleByteChar(TDes& aChar);
+
+	/*
+	 * Fetch some more data from the data provider
+	 * @return returns one of the values of TCharReturn
+	 */
+	void GetMoreData();
+
+	/*
+	 * @return Returns true if the current tag is a doctype tag and sets the
+	 * Document DocType member accordingly on the first pass of this function.
+	 */
+	TBool DocTypeL();
+
+	/*
+	 * creates a new processing instruction if necessary and adds to document
+	 * @return Returns true if the current tag is a processing instruction
+	 */
+	TBool ProcessingInstructionL(CMDXMLElement* aParentElement);
+
+	/*
+	 * creates a new CDataSection if necessary and adds to document
+	 * @return Returns true if the current tag is a processing instruction
+	 */
+	TBool CDataSectionL(CMDXMLElement* aParentElement);
+	TBool EndOfCDataSection();
+
+	/*
+	 * @return returns true if the current tag is a version id tag and sets the
+	 * Document Version member accordingly on the first pass of this function.
+	 */
+	TBool VersionIDL();
+
+	/*
+	 * creates a new comment if necessary and adds to document
+	 * @return returns true if the current tag is a comment tag
+	 */
+	TBool CommentL(CMDXMLElement* aParentElement);
+
+	/*
+	 * Parse a start of element tag and create an element with attributes set.
+	 * @return Returns a pointer to the created element
+	 * @leave can Leave due to OOM
+	 */
+	virtual CMDXMLElement* ParseStartTagL();
+
+	/*
+	 * Detects the type of a file - can be Unicode or UTF-8
+	 */
+	TBool DetectFileType();
+
+	/*
+	 * Creates a generic or DTD-specific document object
+	 * @leave can Leave due to OOM
+	 */
+	virtual void CreateDocumentL();
+
+	/*
+	 * Sets iError to new errorcode if more serious than any error so far encountered
+	 */
+	IMPORT_C void SetError(const TInt aErrorCode, const TXMLErrorCodeSeverity aSeverity);
+
+	/*
+	 * This function is used to parse the attributes.
+     * @param aElement The element to which the attributes belong
+     * @param aTagToParse The tag to be parsed
+     * @return Returns KErrNone if both attribute name & value are valid 
+	 * KErrXMLBadAttributeName if attribute name is invalid or KErrXMLBadAttributeValue is invalid
+     * @leave can Leave due to OOM
+	 */
+	TInt ParseElementAttributesL(CMDXMLElement& aElement, TDes& aTagToParse);
+
+	/** 
+	  This function locates the next attribute in the tag.
+	  @param aTagToParse the tag to find the attribute in
+	  @return the offset of the next attribute
+	 */
+	TInt LocateNextAttribute(const TDesC& aTagToParse);
+
+    /*
+     * Parses an end tag.  In fact, at this point the end tag must match
+     * the tag name of the start tag.  
+     * @param aTagToParse Text of the end tag.
+     * @return Returns KErrNone if the end tag matches the start tag or KErrNotFound if there is a mismatch.
+     */
+	TInt ParseElementEndTag(CMDXMLElement& aElement, const TDesC& aTagToParse);
+
+	TInt CheckForStartCData(const TDesC& aTextToCheck);
+	TInt FindDelimiter(TDesC& aDataToSearch, TDesC& aDelimiterToFind);
+
+	/*
+	 * Second stage constructor
+	 */
+	void ConstructL(MXMLDtd* aDtdRepresentation);
+	void AddTextL(CMDXMLElement* aParentElement);
+
+	/*
+	 * Checks whether the end of this tag is in a CDataSection.
+	 * @param aDataToSearch The data to check
+	 * @return Returns ETrue if the tag contains an unclosed CDataSection
+	 */
+	TBool InCDataSection(TDesC& aDataToSearch);
+
+	/*
+	 * Entity converts the sections of one attribute value that are not within a CDataSection.
+	 * @param aAttributeValue one attribute value
+	 * @return Returns an error if entity conversion did not successfully complete, otherwise KErrNone
+	 */
+	TInt ParseSingleAttributeL(TDes& aAttributeValue);
+
+	/*
+	 * Prepares this class for use on another file.
+	 *
+	 */
+	void PrepareForReuseL();
+
+	/**
+	 This should be called when parsing has been completed, before calling ParseFileCompleteL().
+	 It checks for errors that can only be determined at the end of parsing, eg missing doctype or 
+	 incomplete content.
+	 */
+	void CheckForErrors();
+
+	IMPORT_C void PlaceholderForRemovedExport1(MMDXMLParserObserver* aParserObserver);
+	IMPORT_C void PlaceholderForRemovedExport2(MMDXMLParserObserver* aParserObserver, MXMLDtd* aDtdRepresentation);
+	IMPORT_C void PlaceholderForRemovedExport3();
+
+
+private:
+	enum TPanicCode {	ENullMemVarDataSource, 
+						ENullMemVarParserObserver, 
+						ENullMemVarXMLDoc, 
+						ENullMemVarElementTag, 
+						ENullParameterParentElement };
+	void Panic(TPanicCode aReason) const;
+
+private:
+	MMDXMLParserObserver* iParserObserver;
+	MXMLDtd* iDtdRepresentation;
+	TInt iError;								// Current error
+	TXMLErrorCodeSeverity iSeverity;			// ErrorCode severity
+	CMDXMLDocument* iXMLDoc;					// Document created by the parser
+	CMDXMLEntityConverter* iEntityConverter;	// Entity converter used by the parser
+	HBufC* iElementTag;							// Currently processed element tag
+	TBool iDocTypeSet;
+	TBool iVersionSet;
+	TInt iBytesPerChar;
+
+	/* member variables dealing with access to source data */
+	TPtrC8 iInputBufferPtr;						// set during a call to get more data
+	TInt iCurrentInputBufferLen;				// current length of the data block available
+	TInt iNextChar;								// read position in the data block
+	TInt iInputBytesRemaining;					// number of bytes remaining to read.
+	HBufC8 *iUTF8EdgeBuffer;					// buffer to hold up to 6 bytes so that UTF8 parsing can span edges of data blocks
+	HBufC8 *iBomBuffer;							// buffer to hold data at the start of the stream so we may determine charset
+	TInt iRequiredUTF8Bytes;					// number of bytes required to complete the character held in the edge buffer
+	TBool iUnicodeInputMisaligned;				// Set to ETrue if the unicode input stream is not aligned to 16-bit boundaries
+	MMDXMLParserDataProvider* iDataSource;		// XML Data Source being parsed.
+	CMDXMLParserFileDataSource* iFileSource;	// We own this, and need to free it when we are done. Only used when we're providing the data source object to wrap a local file.
+
+	/* member variables dealing with chunked conversion into unicode output */
+	TBuf<32> iUnicodeConversion;				// buffer to temporarily hold the results of conversion from UTF8 to Unicode
+	TInt iUnicodeConversionLen;					// number of characters stored in our intermediate buffer
+	TInt iUnicodeReadPos;						// next character to send from our intermediate buffer
+	TBuf<1> iSpareChar;
+
+	/* member variables used when parsing a local file */
+	TDesC *iFileToParse;
+	RFs iRFs;
+	RFile iFileHandleToParse;
+
+	TBool iEndOfTag;
+	
+	/* member variables used in DoParseLoopL() */
+	TBool iOpened;
+	TBool iClosed;
+	CMDXMLElement* iNewElement;
+	CMDXMLElement* iParentElement;
+	HBufC* iText;
+	enum EParserStates
+		{
+		KInitFromFile,
+		KDetermineCharset,
+		KWaitingForData,
+		KParseData,
+		KSpanDataGap,
+		KFinished
+		};
+
+	EParserStates iState;
+	EParserStates iPreviousState;
+	TInt iSuspiciousCharacter;
+	TBool iStoreInvalid;						// controls whether invalid elements and attributes are stored in the DOM.
+	TBool iPreserve;
+
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/xcfw/gmxmltext.h	Fri Mar 19 13:46:28 2010 +0200
@@ -0,0 +1,63 @@
+// Copyright (c) 2001-2009 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:
+//
+
+/**
+ @file
+*/
+
+#ifndef __GMXMLTEXT_H__
+#define __GMXMLTEXT_H__
+
+#include <e32base.h>
+#include <gmxmlcharacterdata.h>
+
+class CMDXMLText : public CMDXMLCharacterData
+/** A text section of an XML file.
+
+Objects of this type hold text. They cannot have child nodes. 
+@publishedPartner
+@released
+*/
+{
+public:
+	/** Allocates and constructs a new CMDXMLText, leaving the object on the cleanup 
+	stack.
+	
+	@param aOwnerDocument Pointer to the document at the root of the DOM tree
+	@return The new CMDXMLText
+	@leave KErrNoMemory Out of memory */
+	IMPORT_C static CMDXMLText* NewLC( CMDXMLDocument* aOwnerDocument );
+
+	/** Allocates and constructs a new CMDXMLText.
+	
+	@param aOwnerDocument Pointer to the document at the root of the DOM tree
+	@return The new CMDXMLText 
+	@leave KErrNoMemory Out of memory */
+	IMPORT_C static CMDXMLText* NewL( CMDXMLDocument* aOwnerDocument );
+
+	/** Destructor. */
+	IMPORT_C virtual ~CMDXMLText();
+
+
+protected:
+	/*
+	 * Constructor
+	 * @param aOwnerDocument The document at the root of the DOM tree
+	 */
+	CMDXMLText( CMDXMLDocument* aOwnerDocument );
+};
+
+
+#endif
Binary file dependencies/xcfw/winscw/xmldom.dll has changed
Binary file dependencies/xcfw/winscw/xmldom.lib has changed
Binary file dependencies/xcfw/winscw/xmlparser.dll has changed
Binary file dependencies/xcfw/winscw/xmlparser.lib has changed
--- a/group/bld.inf	Fri Mar 19 10:47:36 2010 +0200
+++ b/group/bld.inf	Fri Mar 19 13:46:28 2010 +0200
@@ -27,7 +27,7 @@
 //#include "../backsteppingsrv/group/bld.inf"
 #include "../contentpublishingsrv/group/bld.inf"
 #include "../homescreensrv_plat/group/bld.inf"
-#include "../contextutility/group/bld.inf"
+//#include "../contextutility/group/bld.inf"
 #include "../contentcontrolsrv/group/bld.inf"
 
 
--- a/xcfw/group/xcfw.mmp	Fri Mar 19 10:47:36 2010 +0200
+++ b/xcfw/group/xcfw.mmp	Fri Mar 19 13:46:28 2010 +0200
@@ -17,6 +17,7 @@
 
 
 #include <platform_paths.hrh>
+#include <defaultcaps.hrh>
 
 TARGET          XCFW.dll
 TARGETTYPE      DLL