# HG changeset patch # User jake # Date 1268999188 -7200 # Node ID c9bafd575d886491763baab36d8f0a165d2942af # Parent 66e84aa0ed46925783fccae6b992ebdc07b96558 xcfw component compiles now diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/ABLD.BAT --- /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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/bld.inf --- /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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/bldvariant.hrh --- /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 +//#include +//#include +//#include + +//#include "productvariant.hrh" + +#endif diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/defaultcaps.hrh --- /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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/platform_paths.hrh --- /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 +* +* ************************************************************* +* * 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 +* / CORE_APP_LAYER_IBY_EXPORT_PATH() +* / CORE_MW_LAYER_IBY_EXPORT_PATH() +* / CORE_OS_LAYER_IBY_EXPORT_PATH() +* +* //stub iby files +* / CORE_IBY_EXPORT_PATH(stubs,) +* //tool iby files +* / CORE_IBY_EXPORT_PATH(tools,) +* +* --------------------------------------------- +* 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 +* / LANGUAGE_APP_LAYER_IBY_EXPORT_PATH() +* / LANGUAGE_MW_LAYER_IBY_EXPORT_PATH() +* / LANGUAGE_OS_LAYER_IBY_EXPORT_PATH() +* +* --------------------------------------------- +* 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 +* / CUSTOMER_APP_LAYER_IBY_EXPORT_PATH() +* / CUSTOMER_MW_LAYER_IBY_EXPORT_PATH() +* / CUSTOMER_OS_LAYER_IBY_EXPORT_PATH() +* +* --------------------------------------------- +* Usage for Customer Variant image, (ROFS3): +* --------------------------------------------- +* // Layer specific specific macros. Use the macro, which is specified +* // for the layer, in which your component resides +* / CUSTOMER_VARIANT_APP_LAYER_IBY_EXPORT_PATH() +* / CUSTOMER_VARIANT_MW_LAYER_IBY_EXPORT_PATH() +* / CUSTOMER_VARIANT_OS_LAYER_IBY_EXPORT_PATH() +* +* +* ************************************************************* +* * 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 +* /loc/.loc APP_LAYER_LOC_EXPORT_PATH(.loc) +* /loc/.loc MW_LAYER_LOC_EXPORT_PATH(.loc) +* /loc/.loc OS_LAYER_LOC_EXPORT_PATH(.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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/bld.inf --- /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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmlcdatasection.h --- /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 + +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmlcharacterdata.h --- /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 + +#include + +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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmlcomposer.h --- /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 +#include +#include +#include + +//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 ( 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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmlconstants.h --- /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 +#include + +/** 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 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(KXMLStartEndTag, ""); +_LIT(KXMLStartProcessingInstruction, ""); +_LIT(KXMLStartCDataSection, ""); + +_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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmldocument.h --- /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 + +#include +#include + +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 , for example . + @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. + @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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmldomconstants.h --- /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 + + +// 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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmldummydtd.h --- /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, ""); +_LIT(KXMLDefaultDocTypeTag, ""); +_LIT(KXMLVersion, ""); +_LIT(KXMLDocumentTypes, " +#include +#include + + +// 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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmlentityconverter.h --- /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 +#include + + +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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmlnode.h --- /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 +#ifndef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmlparser.h --- /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 +#include +#include +#include + +//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 // 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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/gmxmltext.h --- /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 +#include + +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 diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/winscw/xmldom.dll Binary file dependencies/xcfw/winscw/xmldom.dll has changed diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/winscw/xmldom.lib Binary file dependencies/xcfw/winscw/xmldom.lib has changed diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/winscw/xmlparser.dll Binary file dependencies/xcfw/winscw/xmlparser.dll has changed diff -r 66e84aa0ed46 -r c9bafd575d88 dependencies/xcfw/winscw/xmlparser.lib Binary file dependencies/xcfw/winscw/xmlparser.lib has changed diff -r 66e84aa0ed46 -r c9bafd575d88 group/bld.inf --- 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" diff -r 66e84aa0ed46 -r c9bafd575d88 xcfw/group/xcfw.mmp --- 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 +#include TARGET XCFW.dll TARGETTYPE DLL