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