epoc32/include/xml/dom/xmlengattr.h
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/epoc32/include/xml/dom/xmlengattr.h	Wed Mar 31 12:27:01 2010 +0100
     1.3 @@ -0,0 +1,192 @@
     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:       Attribute node functions
    1.18 +*
    1.19 +*/
    1.20 +
    1.21 +
    1.22 +
    1.23 +
    1.24 +
    1.25 +
    1.26 +
    1.27 +#ifndef XMLENGINE_ATTR_H_INCLUDED
    1.28 +#define XMLENGINE_ATTR_H_INCLUDED
    1.29 +
    1.30 +#include "xmlengnode.h"
    1.31 +
    1.32 +/**
    1.33 + * Instance of TXmlEngAttr class represents an XML attribute in the DOM tree.
    1.34 + * 
    1.35 + * Is a storage attributes properties. Implements DOM action for it.
    1.36 + * 
    1.37 + * @lib XmlEngineDOM.lib
    1.38 + * @since S60 v3.1
    1.39 + */
    1.40 +class TXmlEngAttr : public TXmlEngNode
    1.41 +{
    1.42 +  public:
    1.43 +    /**
    1.44 +     * Default constructor
    1.45 +     *
    1.46 +     * @since S60 v3.1
    1.47 +     */
    1.48 +    inline TXmlEngAttr();
    1.49 +
    1.50 +
    1.51 +    /**
    1.52 +     * Clones attribute node
    1.53 +     *
    1.54 +     * @since S60 v3.1
    1.55 +     * @return A copy of the attribute with its value
    1.56 +     *
    1.57 +     * @note Namespace of the attribute is reset; use 
    1.58 +     * TXmlEngNode::CopyToL(TXmlEngNode), which finds appropriate or creates
    1.59 +     * new namespace declaration on the new parent node (argument should be
    1.60 +     * an TXmlEngElement handle)
    1.61 +     *
    1.62 +     * @see CopyToL(TXmlEngNode)
    1.63 +     */
    1.64 +    IMPORT_C TXmlEngAttr CopyL() const;
    1.65 +
    1.66 +    /**
    1.67 +     * Get owner element
    1.68 +     *
    1.69 +     * @since S60 v3.1
    1.70 +     * @return TXmlEngElement that contains the attribute
    1.71 +     *
    1.72 +     * Same as TXmlEngNode::ParentNode() but returns TXmlEngElement 
    1.73 +     * instead of TXmlEngNode.
    1.74 +     *
    1.75 +     * @note Copies of attributes [TXmlEngAttr::CopyL()] and newly created 
    1.76 +     * attribute nodes [RXmlEngDocument::CreateAttributeL(..)] do not have 
    1.77 +     * parent element until they are attached to some element.
    1.78 +     */
    1.79 +    IMPORT_C const TXmlEngElement OwnerElement() const;
    1.80 +
    1.81 +    /**
    1.82 +     * Check attribute name.
    1.83 +     *
    1.84 +     * @since S60 v3.1
    1.85 +     * @return Local name of the attribute
    1.86 +     *
    1.87 +     * @note Equal to TXmlEngNode::Name(), but works faster.
    1.88 +     *
    1.89 +     * Never call this on NULL object!
    1.90 +     * @see TXmlEngNode::Name()
    1.91 +     */
    1.92 +    IMPORT_C TPtrC8 Name() const;
    1.93 +
    1.94 +    /**
    1.95 +     * Get element value.
    1.96 +     *
    1.97 +     * @since S60 v3.1
    1.98 +     * @return Attribute's contents
    1.99 +     *
   1.100 +     * @note For values consisting of more then one TXmlEngTextNode node 
   1.101 +     * (as attribute's child) returns only the begining of the value; 
   1.102 +     * this happens when the value is represented by list of TXmlEngTextNode
   1.103 +     * and TXmlEngEntityReference nodes.
   1.104 +     * 
   1.105 +     * @see IsSimpleContents(), WholeValueCopyL()
   1.106 +     */
   1.107 +    IMPORT_C TPtrC8 Value() const; 
   1.108 +
   1.109 +    /**
   1.110 +     * Get copy of attribute content
   1.111 +     *
   1.112 +     * @since S60 v3.1
   1.113 +     * @return Complex value of the attribute,
   1.114 +     *     probably consisting of text nodes and entity references
   1.115 +     *
   1.116 +     * Since the value may be composed from a set of TXmlEngTextNode
   1.117 +     * and EntityRefernce nodes, the returned result is newly allocated 
   1.118 +     * string, which should be freed by caller.
   1.119 +     * 
   1.120 +     * <B style="color: red">BE SURE TO FREE THE RESULT STRING!!!</B>
   1.121 +     *
   1.122 +     * Example usage of the API:
   1.123 +     * @code
   1.124 +     *    RBuf8 value;
   1.125 +	 *    attr.WholeValueCopyL(value);
   1.126 +     *    ...
   1.127 +     *    value.Close();
   1.128 +     * @endcode
   1.129 +     *
   1.130 +     * @see TXmlEngAttr::Value(), TXmlEngNode::Value(),
   1.131 +     * TXmlEngNode::IsSimpleTextContents(), 
   1.132 +     * TXmlEngNode::WholeTextContentsCopyL()
   1.133 +     *
   1.134 +     * @note In most cases using Value() is enough (and it needs no memory allocation).
   1.135 +     *     Use IsSimpleTextContents() if there doubts can Value() be used or not safely.
   1.136 +     */
   1.137 +    IMPORT_C void WholeValueCopyL(RBuf8& aBuffer) const;
   1.138 +
   1.139 +    /**
   1.140 +     * Sets new value of the attribute. Provided new value will be escaped 
   1.141 +     * as needed.
   1.142 +     *
   1.143 +	 * @ since S60 v3.1
   1.144 +     * @param aNewValue A string value for the attribute
   1.145 +     *
   1.146 +     * The new value should not contain entity references. 
   1.147 +     * Entity references are not expanded, but used as text, because 
   1.148 +     * the ampersand (&) character of reference is escaped.
   1.149 +     *
   1.150 +     * @see SetEscapedValueL(const TDesC8&)
   1.151 +     */
   1.152 +    IMPORT_C void SetValueL(const TDesC8& aNewValue);
   1.153 +
   1.154 +    /**
   1.155 +     * Sets new value from escaped XML character data that may contain 
   1.156 +     * entity references.
   1.157 +     *
   1.158 +     * The value as if it is an escaped contents from XML file.
   1.159 +     * If the value contains entity references, then the resulting
   1.160 +     * content of the attribute is a list of TXmlEngTextNode 
   1.161 +     * and TXmlEngEntityRefeerence nodes.
   1.162 +     * Predefined entities are converted into characters they represent.
   1.163 +     * 
   1.164 +     * @param aNewValue is a new attribute value
   1.165 +     * @since S60 v3.1
   1.166 +     *
   1.167 +     * @see TXmlEngAttr::SetValueL(const TDesC8&)
   1.168 +     */
   1.169 +    IMPORT_C void SetEscapedValueL(const TDesC8& aNewValue);
   1.170 +
   1.171 +	/**
   1.172 +	 * Sets new attribute value exactly as presented in the string.
   1.173 +	 *
   1.174 +	 * Predefined entities are not converted into characters they represent.
   1.175 +	 *
   1.176 +     * @param aNewValue is a new attribute value 
   1.177 +     * @since S60 v3.2
   1.178 +     *
   1.179 +     * @see TXmlEngAttr::SetValueL(const TDesC8&)
   1.180 +     */
   1.181 +	IMPORT_C void SetValueNoEncL(const TDesC8& aNewValue );
   1.182 +
   1.183 +protected:
   1.184 +    /**
   1.185 +     * Constructor
   1.186 +     *
   1.187 +     * @since S60 v3.1
   1.188 +     * @param aInternal attribute pointer
   1.189 +     */
   1.190 +    inline TXmlEngAttr(void* aInternal);
   1.191 +};
   1.192 +
   1.193 +#include "xmlengattr.inl"
   1.194 +
   1.195 +#endif /* XMLENGINE_ATTR_H_INCLUDED */