1.1 --- a/epoc32/include/xmlengdocument.h Tue Mar 16 16:12:26 2010 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,573 +0,0 @@
1.4 -/*
1.5 -* Copyright (c) 2004-2006 Nokia Corporation and/or its subsidiary(-ies).
1.6 -* All rights reserved.
1.7 -* This component and the accompanying materials are made available
1.8 -* under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
1.9 -* which accompanies this distribution, and is available
1.10 -* at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
1.11 -*
1.12 -* Initial Contributors:
1.13 -* Nokia Corporation - initial contribution.
1.14 -*
1.15 -* Contributors:
1.16 -*
1.17 -* Description: Document node functions
1.18 -*
1.19 -*/
1.20 -
1.21 -
1.22 -
1.23 -
1.24 -
1.25 -
1.26 -#ifndef XMLENGINE_DOCUMENT_H_INCLUDED
1.27 -#define XMLENGINE_DOCUMENT_H_INCLUDED
1.28 -
1.29 -#include <f32file.h>
1.30 -
1.31 -#include "xmlengnode.h"
1.32 -#include "xmlengserializationoptions.h"
1.33 -
1.34 -// FORWARD DECLARATION
1.35 -class RXmlEngDOMImplementation;
1.36 -
1.37 -/**
1.38 - * Instance of RXmlEngDocument class represents an XML document in the DOM tree.
1.39 - *
1.40 - * Is a storage all nodes and information about XML data.
1.41 - *
1.42 - * @lib XmlEngineDOM.lib
1.43 - * @since S60 v3.1
1.44 - */
1.45 -class RXmlEngDocument : public TXmlEngNode
1.46 -{
1.47 -public:
1.48 - /**
1.49 - * Default constructor.
1.50 - *
1.51 - * Instance of RXmlEngDocument must be "opened" with one of OpenL() overloads.
1.52 - *
1.53 - * @since S60 v3.1
1.54 - */
1.55 - IMPORT_C RXmlEngDocument();
1.56 -
1.57 - /**
1.58 - * Opens the document.
1.59 - *
1.60 - * @since S60 v3.2
1.61 - * @param aDOMImpl DOM implementation object
1.62 - * @return KErrNone if succeed.
1.63 - */
1.64 - IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl);
1.65 -
1.66 - /**
1.67 - * Opens the document.
1.68 - *
1.69 - * @since S60 v3.2
1.70 - * @param aDOMImpl DOM implementation object
1.71 - * @param aInternal Document pointer
1.72 - * @return KErrNone if succeed.
1.73 - */
1.74 - IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, void* aInternal);
1.75 -
1.76 - /**
1.77 - * Opens the document.
1.78 - *
1.79 - * @since S60 v3.2
1.80 - * @param aDOMImpl DOM implementation object
1.81 - * @param aRoot element taht will be root of the DOM tree
1.82 - * @return KErrNone if succeed.
1.83 - */
1.84 - IMPORT_C void OpenL(RXmlEngDOMImplementation& aDOMImpl, TXmlEngElement aRoot);
1.85 -
1.86 - /**
1.87 - * Closes document
1.88 - *
1.89 - * @since S60 v3.1
1.90 - */
1.91 - IMPORT_C void Close();
1.92 -
1.93 - /**
1.94 - * Serializes document tree into a file. For nodes containing binary data in the form of BinaryDataContainer,
1.95 - * FileContainer or ChunkContainer, client can implement custom serialization by implementing the interface
1.96 - * MXmlEngDataSerializer and specify the pointer in iDataSerializer member of aSaveOptions parameter. If no
1.97 - * custom serialization is specified, the binary data container nodes are serialized like text nodes.
1.98 - *
1.99 - * @since S60 v3.2
1.100 - * @param aFileName A file name (with path)
1.101 - * @param aRoot Root node to be serialized
1.102 - * @param aSaveOptions Options that control how serialization is performed
1.103 - * @return Number of byte written
1.104 - * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.
1.105 - */
1.106 - IMPORT_C TInt SaveL( const TDesC& aFileName,
1.107 - TXmlEngNode aRoot = TXmlEngNode(),
1.108 - const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1.109 -
1.110 - /**
1.111 - * Serializes document tree into a file. For nodes containing binary data in the form of BinaryDataContainer,
1.112 - * FileContainer or ChunkContainer, client can implement custom serialization by implementing the interface
1.113 - * MXmlEngDataSerializer and specify the pointer in iDataSerializer member of aSaveOptions parameter. If no
1.114 - * custom serialization is specified, the binary data container nodes are serialized like text nodes.
1.115 - *
1.116 - * @since S60 v3.2
1.117 - * @param aRFs File Server session
1.118 - * @param aFileName A file name (with path)
1.119 - * @param aRoot Root node to be serialized
1.120 - * @param aSaveOptions Options that control how serialization is performed
1.121 - * @return Number of byte written
1.122 - * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.
1.123 - */
1.124 - IMPORT_C TInt SaveL( RFs& aRFs,
1.125 - const TDesC& aFileName,
1.126 - TXmlEngNode aRoot = TXmlEngNode(),
1.127 - const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1.128 -
1.129 - /**
1.130 - * Serializes a document tree into provided output stream, which supports progressive writing of data.
1.131 - * For nodes containing binary data in the form of BinaryDataContainer, FileContainer or ChunkContainer,
1.132 - * client can implement custom serialization by implementing the interface MXmlEngDataSerializer and specify
1.133 - * the pointer in iDataSerializer member of aSaveOptions parameter. If no custom serialization is specified,
1.134 - * the binary data container nodes are serialized like text nodes.
1.135 - *
1.136 - * @since S60 v3.1
1.137 - * @param aStream An output stream to write serialized DOM tree
1.138 - * @param aRoot Root node to be serialized
1.139 - * @param aSaveOptions Options that control how serialization is performed
1.140 - * @return Number of byte written
1.141 - * @leave KXmlEngErrWrongUseOfAPI or one of general codes (e.g.KErrNoMemory)
1.142 - * @see MXmlEngOutputStream
1.143 - */
1.144 - IMPORT_C TInt SaveL( MXmlEngOutputStream& aStream,
1.145 - TXmlEngNode aRoot = TXmlEngNode(),
1.146 - const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions() ) const;
1.147 -
1.148 - /**
1.149 - * Saves document tree into memory buffer
1.150 - *
1.151 - * @since S60 v3.1
1.152 - * @param aBuffer Resulting buffer
1.153 - * @param aRoot A "root" of the subtree to serialize
1.154 - * @param aSaveOptions Various options to be effective during serialization
1.155 - * @return Number of bytes in updated buffer
1.156 - * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding.
1.157 - *
1.158 - * @note Result returned via aBuffer argument owns the memory buffer; it is up to
1.159 - * method caller to free it like in this sample:
1.160 - *
1.161 - * @see TXmlEngSerializationOptions
1.162 - */
1.163 - IMPORT_C TInt SaveL(RBuf8& aBuffer,
1.164 - TXmlEngNode aRoot = TXmlEngNode(),
1.165 - const TXmlEngSerializationOptions& aSaveOptions = TXmlEngSerializationOptions()) const;
1.166 -
1.167 - /**
1.168 - * Creates complete copy of the document
1.169 - *
1.170 - * @since S60 v3.1
1.171 - * @return Complete copy of the document tree
1.172 - */
1.173 - IMPORT_C RXmlEngDocument CloneDocumentL() const;
1.174 -
1.175 - /**
1.176 - * Creates new element from specific namespace to be a root of the document tree.
1.177 - * Any existing document element of the document is destroyed
1.178 - *
1.179 - * @since S60 v3.1
1.180 - * @param aName Element name
1.181 - * @param aNamespaceUri Element namespace URI
1.182 - * @param aPrefix Element namemespace prefix
1.183 - * @return A new root element
1.184 - */
1.185 - IMPORT_C TXmlEngElement CreateDocumentElementL(const TDesC8& aName,
1.186 - const TDesC8& aNamespaceUri = KNullDesC8,
1.187 - const TDesC8& aPrefix = KNullDesC8);
1.188 -
1.189 - /**
1.190 - * Replaces (and destroys) document element with another one
1.191 - * New document element is added as the last child to the document node
1.192 - *
1.193 - * @since S60 v3.1
1.194 - * @param aNewDocElement New document tree
1.195 - *
1.196 - * @note Use TXmlEngElement::ReconcileNamespacesL() on the new document element
1.197 - * if it or its descendants can contain references to namespace declarations
1.198 - * out of the element
1.199 - * @see TXmlEngElement::ReconcileNamespacesL()
1.200 - */
1.201 - IMPORT_C void SetDocumentElement(TXmlEngElement aNewDocElement);
1.202 -
1.203 - /**
1.204 - * Get document encoding
1.205 - *
1.206 - * @since S60 v3.1
1.207 - * @return Encoding of the source XML data.
1.208 - */
1.209 - IMPORT_C TPtrC8 XmlEncoding() const;
1.210 -
1.211 - /**
1.212 - * Get xml version
1.213 - *
1.214 - * @since S60 v3.1
1.215 - * @return Version number of XML taken from XML declaration
1.216 - */
1.217 - IMPORT_C TPtrC8 XmlVersion() const;
1.218 -
1.219 - /**
1.220 - * Retrieves base URI (if defined) of the document or NULL
1.221 - *
1.222 - * @since S60 v3.1
1.223 - * @return Document URI
1.224 - */
1.225 - IMPORT_C TPtrC8 DocumentUri() const;
1.226 -
1.227 - /**
1.228 - * Check if document is standalone
1.229 - *
1.230 - * @since S60 v3.1
1.231 - * @return Whether standalone="true" was specified in XML declaration in the source XML file.
1.232 - */
1.233 - IMPORT_C TBool IsStandalone() const;
1.234 -
1.235 - /**
1.236 - * Sets XML version number to be shown in XML declaration when document is serialized.
1.237 - *
1.238 - * @since S60 v3.1
1.239 - * @param aVersion New version
1.240 - */
1.241 - IMPORT_C void SetXmlVersionL(const TDesC8& aVersion);
1.242 -
1.243 - /**
1.244 - * Sets location of the document.
1.245 - * Document's URI is used as top-level base URI definition.
1.246 - *
1.247 - * @since S60 v3.1
1.248 - * @param aUri New document URI
1.249 - */
1.250 - IMPORT_C void SetDocumentUriL(const TDesC8& aUri);
1.251 -
1.252 - /**
1.253 - * Sets 'standalone' attribute of XML declaration for a document
1.254 - *
1.255 - * @since S60 v3.1
1.256 - * @param aStandalone Is document standalone
1.257 - */
1.258 - IMPORT_C void SetStandalone(TBool aStandalone);
1.259 -
1.260 - /**
1.261 - * Get dom implementation.
1.262 - *
1.263 - * @since S60 v3.1
1.264 - * @return Object that represents current DOM implementation
1.265 - *
1.266 - * @note There is no practical use of implementation object in this version
1.267 - * of API other than for creating new RXmlEngDocument instances, but
1.268 - * it will change in the future, when an implementation object
1.269 - * is used for changing configuration settings at run-time.
1.270 - */
1.271 - IMPORT_C RXmlEngDOMImplementation Implementation() const;
1.272 -
1.273 - /**
1.274 - * Get document element
1.275 - *
1.276 - * @since S60 v3.1
1.277 - * @return A document element - the top-most element in the document tree
1.278 - */
1.279 - IMPORT_C TXmlEngElement DocumentElement() const;
1.280 -
1.281 - /**
1.282 - * Sets "document" property on the node and all its descendants to be this RXmlEngDocument node
1.283 - *
1.284 - * @since S60 v3.1
1.285 - * @param aSource Node that should be added.
1.286 - * @return Adopted node
1.287 - */
1.288 - IMPORT_C TXmlEngNode AdoptNodeL(TXmlEngNode aSource);
1.289 -
1.290 - /**
1.291 - * Creates new attribute,
1.292 - *
1.293 - * @since S60 v3.1
1.294 - * @param aName Name of the atribute; no prefix allowed
1.295 - * @param aValue Value of the attribute (optional)
1.296 - * @return Handler to the newly created attribute
1.297 - *
1.298 - * @note
1.299 - * aValue should represent a correct value of an attribute if it is put as is into XML file
1.300 - * (with all characters correctly escaped with entity references when XML spec requires)
1.301 - *
1.302 - * TXmlEngElement class provides a rich set of attribute creation methods, which not
1.303 - * just create attribute but also link it into element.
1.304 - *
1.305 - * There is no way to create attributes with namespace (despite the DOM spec);
1.306 - * you have to use one of the TXmlEngElement::AddNewAttributeL(..) methods instead
1.307 - *
1.308 - * Returned handler is the only reference to the allocated memory
1.309 - * until you have attached the attribute to some element node
1.310 - */
1.311 - IMPORT_C TXmlEngAttr CreateAttributeL(const TDesC8& aName,
1.312 - const TDesC8& aValue = KNullDesC8);
1.313 -
1.314 - /**
1.315 - * Creates new text node and copies the content string into it.
1.316 - *
1.317 - * @since S60 v3.1
1.318 - * @param aCharacters Text node content
1.319 - * @return Created node
1.320 - */
1.321 - IMPORT_C TXmlEngTextNode CreateTextNodeL(const TDesC8& aCharacters = KNullDesC8);
1.322 -
1.323 - /**
1.324 - * Creates new binary container and copies the content string into it.
1.325 - * Pointer to the container is stored in the document's
1.326 - * data container list that can be fetched using GetDataContainerList().
1.327 - * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )
1.328 - *
1.329 - * @since S60 v3.2
1.330 - * @param aCid Content identifier
1.331 - * @param aData Binary octets
1.332 - * @return Created node
1.333 - */
1.334 - IMPORT_C TXmlEngBinaryContainer CreateBinaryContainerL( const TDesC8& aCid,
1.335 - const TDesC8& aData );
1.336 -
1.337 - /**
1.338 - * Creates new chunk container that stores reference to
1.339 - * memory chunk.
1.340 - * Pointer to the container is stored in the document's
1.341 - * data container list that can be fetched using GetDataContainerList().
1.342 - * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )
1.343 - *
1.344 - * @since S60 v3.2
1.345 - * @param aCid Content identifier
1.346 - * @param aChunk RChunk reference
1.347 - * @param aChunkOffset Offset to the binary data in aChunk
1.348 - * @param aDataSize Size of binary data in aChunk
1.349 - * @return Created node
1.350 - */
1.351 - IMPORT_C TXmlEngChunkContainer CreateChunkContainerL( const TDesC8& aCid,
1.352 - const RChunk& aChunk,
1.353 - const TInt aChunkOffset,
1.354 - const TInt aDataSize );
1.355 -
1.356 - /**
1.357 - * Creates new file container that stores reference to
1.358 - * file in file system.
1.359 - * Pointer to the container is stored in the document's
1.360 - * data container list that can be fetched using GetDataContainerList().
1.361 - * @see GetDataContainerList( RArray<TXmlEngDataContainer>& aList )
1.362 - *
1.363 - * @since S60 v3.2
1.364 - * @param aCid Content identifier
1.365 - * @param aFile RFile reference
1.366 - * @return Created node
1.367 - */
1.368 - IMPORT_C TXmlEngFileContainer CreateFileContainerL( const TDesC8& aCid,
1.369 - const RFile& aFile );
1.370 -
1.371 - /**
1.372 - * Creates new element node that belongs to specific namespace.
1.373 - * A namespace declaration node is created on the element.
1.374 - *
1.375 - * @since S60 v3.1
1.376 - * @param aNamespaceUri Namespace of new element
1.377 - * @param aPrefix Prefix to use for namespace binding and QName of the element
1.378 - * @param aLocalName Local name of the element
1.379 - * @return Created node
1.380 - * @note If null namespace uri is provided element will be created without namespace.
1.381 - */
1.382 - IMPORT_C TXmlEngElement CreateElementL(const TDesC8& aLocalName,
1.383 - const TDesC8& aNamespaceUri = KNullDesC8,
1.384 - const TDesC8& aPrefix = KNullDesC8);
1.385 -
1.386 - /**
1.387 - * Creates new comment node and copies the content string into it.
1.388 - *
1.389 - * @since S60 v3.1
1.390 - * @param aText New comment
1.391 - * @return Created node
1.392 - */
1.393 - IMPORT_C TXmlEngComment CreateCommentL(const TDesC8& aText = KNullDesC8);
1.394 -
1.395 - /**
1.396 - * Creates new CDATA section node and copies the content into it.
1.397 - *
1.398 - * @since S60 v3.1
1.399 - * @param aContents CDATASection content
1.400 - * @return Created node
1.401 - */
1.402 - IMPORT_C TXmlEngCDATASection CreateCDATASectionL(const TDesC8& aContents = KNullDesC8);
1.403 -
1.404 - /**
1.405 - * Creates new entity reference node for aEntityName entity
1.406 - *
1.407 - * @since S60 v3.1
1.408 - * @param aEntityRef is a string in one of the forms:
1.409 - * - <i>name</i>
1.410 - * - <b>&</b><i>name</i>
1.411 - * - <b>&</b><i>name</i><b>;</b>
1.412 - * where <i>name</i> is the name of the entity
1.413 - * @return Created node
1.414 - *
1.415 - * @note < , > , ' , " and other <b>predefined</b> entity references
1.416 - * should not be created with this method. These entity refs are rather
1.417 - * "character references" and encoded/decoded automatically.
1.418 - */
1.419 - IMPORT_C TXmlEngEntityReference CreateEntityReferenceL(const TDesC8& aEntityRef);
1.420 -
1.421 - /**
1.422 - * Creates new processing instruction node and set its "target" and "data" values
1.423 - *
1.424 - * @since S60 v3.1
1.425 - * @param aTarget Target
1.426 - * @param aData Data
1.427 - * @return Created node
1.428 - */
1.429 - IMPORT_C TXmlEngProcessingInstruction CreateProcessingInstructionL(const TDesC8& aTarget,
1.430 - const TDesC8& aData = KNullDesC8);
1.431 -
1.432 - /**
1.433 - * Registers specified attribute as xml:id.
1.434 - * First parametr allows user, to specify sub-tree, not to search whole document.
1.435 - * To search whole tree see @see RegisterXmlId(const TDesC8,const TDesC8)
1.436 - *
1.437 - * @since S60 v3.2
1.438 - * @param aStartElement Root of tree to search (should be part of the document)
1.439 - * @param aLocalName Name of attribute
1.440 - * @param aNamespaceUri Namespace of new element (default empty)
1.441 - */
1.442 - IMPORT_C void RegisterXmlIdL(TXmlEngElement aStartElement,
1.443 - const TDesC8& aLocalName,
1.444 - const TDesC8& aNamespaceUri = KNullDesC8);
1.445 -
1.446 - /**
1.447 - * Registers specified attribute as xml:id.
1.448 - * Not to search whole tree see @see RegisterXmlId(TXmlEngElement,const TDesC8,const TDesC8)
1.449 - *
1.450 - * @since S60 v3.2
1.451 - * @param aLocalName Name of attribute
1.452 - * @param aNamespaceUri Namespace of new element (default empty)
1.453 - */
1.454 - IMPORT_C void RegisterXmlIdL(const TDesC8& aLocalName,
1.455 - const TDesC8& aNamespaceUri = KNullDesC8);
1.456 -
1.457 - /**
1.458 - * Looks for element with specified value of xml:id
1.459 - *
1.460 - * @since S60 v3.2
1.461 - * @param aValue Name of attribute
1.462 - * @return found element or null-element.
1.463 - */
1.464 - IMPORT_C TXmlEngElement FindElementByXmlIdL(const TDesC8& aValue ) const;
1.465 -
1.466 - /**
1.467 - * Retrieves an array of data containers owned by this document.
1.468 - *
1.469 - * @note The document ceases to be the owner of data container when data container
1.470 - * (or one of its predecessors) is removed from the document or data container
1.471 - * (or one of its predecessors) becomes a part of another document.
1.472 - * Unlinking data container (or one of its predecessors) doesn't remove
1.473 - * ownership of data container from the this document so the list might
1.474 - * contain containers that are not linked to this document anymore.
1.475 - * @since S60 v3.2
1.476 - * @param aList Array of data containers
1.477 - */
1.478 - IMPORT_C void GetDataContainerList( RArray<TXmlEngDataContainer>& aList );
1.479 -
1.480 -protected:
1.481 - friend class RXmlEngDOMParser;
1.482 - friend class TXmlEngNode;
1.483 - friend class TXmlEngAttr;
1.484 - friend class TXmlEngElement;
1.485 - friend class RXmlEngDOMImplementation;
1.486 -
1.487 -protected:
1.488 - /**
1.489 - * Constructor
1.490 - *
1.491 - * @since S60 v3.1
1.492 - * @param aInternal Document pointer
1.493 - */
1.494 - inline RXmlEngDocument(void* aInternal);
1.495 -
1.496 - /**
1.497 - * DISABLED for document; CloneDocumentL() must be used
1.498 - *
1.499 - * @since S60 v3.1
1.500 - */
1.501 - inline TXmlEngNode CopyL() const;
1.502 -
1.503 - /**
1.504 - * DISABLED for document; Destroy() must be used
1.505 - *
1.506 - * @since S60 v3.1
1.507 - */
1.508 - inline void Remove();
1.509 -
1.510 - /**
1.511 - * DISABLED for document; Destroy() must be used
1.512 - *
1.513 - * @since S60 v3.1
1.514 - */
1.515 - inline void ReplaceWith(TXmlEngNode aNode);
1.516 -private:
1.517 - /**
1.518 - * Main implementation of SaveL() functions that puts together all common code
1.519 - * and serializes to buffer or output stream.
1.520 - *
1.521 - * @since S60 v3.2
1.522 - * @param aNode Root node to be serialized
1.523 - * @param aBuffer buffer with serialized data.
1.524 - * @param aOutputStream stream that should be used during serialization
1.525 - * @param aSaveOptions Options that control how serialization is performed
1.526 - * @return Number of bytes written
1.527 - * @leave KErrNoMemory, KErrGeneral, KXmlEngErrWrongEncoding, KErrDiskFull.
1.528 - */
1.529 - TInt SaveNodeL( TXmlEngNode aNode,
1.530 - RBuf8& aBuffer,
1.531 - MXmlEngOutputStream* aOutputStream = NULL,
1.532 - TXmlEngSerializationOptions aOpt = TXmlEngSerializationOptions()) const;
1.533 -
1.534 - /**
1.535 - * "Secondary" constructor that should be called on every newly created document node.
1.536 - * Initializes container for nodes owned by the document.
1.537 - *
1.538 - * The need for such secondary constructor is in the fact that underlying libxml2
1.539 - * library knows nothing about ownership of unlinked nodes -- this feature is
1.540 - * implemented in C++ DOM wrapper.
1.541 - *
1.542 - * @since S60 v3.1
1.543 - */
1.544 - void InitOwnedNodeListL();
1.545 -
1.546 - /**
1.547 - * Adds aNode to the list of owned nodes - the nodes that are not linked yet into a
1.548 - * document tree, but still destroyed with the document that owns them.
1.549 - *
1.550 - * @since S60 v3.1
1.551 - * @param aNode Node that should be added to document
1.552 - *
1.553 - * In case of OOM (during growing node list container) the argument node is freed with
1.554 - * xmlFreeNode()
1.555 - */
1.556 - void TakeOwnership(TXmlEngNode aNode);
1.557 -
1.558 - /**
1.559 - * Remove aNode from the list of owned nodes.
1.560 - *
1.561 - * @since S60 v3.1
1.562 - * @param aNode Node that should be removed from document
1.563 - */
1.564 - void RemoveOwnership(TXmlEngNode aNode);
1.565 -
1.566 -protected:
1.567 - /** Pointer to DOM implementation object */
1.568 - RXmlEngDOMImplementation* iImpl;
1.569 -
1.570 -};// class RXmlEngDocument
1.571 -
1.572 -
1.573 -
1.574 -#include "xmlengdocument.inl"
1.575 -
1.576 -#endif /* XMLENGINE_DOCUMENT_H_INCLUDED */