00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef SEN_BASE_ELEMENT_H
00022 #define SEN_BASE_ELEMENT_H
00023
00024
00025 #include <s32mem.h>
00026
00027 #include <SenElement.h>
00028 #include <SenNamespace.h>
00029 #include <SenBaseAttribute.h>
00030
00031
00032
00045 class CSenBaseElement : public CSenElement
00046 {
00047 public:
00048
00056 IMPORT_C static CSenBaseElement* NewL(const TDesC8& aLocalName);
00057
00066 IMPORT_C static CSenBaseElement* NewL(const TDesC8& aNsUri,
00067 const TDesC8& aLocalName);
00068
00079 IMPORT_C static CSenBaseElement* NewL(const TDesC8& aNsUri,
00080 const TDesC8& aLocalName,
00081 const TDesC8& aQName);
00082
00094 IMPORT_C static CSenBaseElement* NewL(const TDesC8& aNsUri,
00095 const TDesC8& aLocalName,
00096 const TDesC8& aQName,
00097 const RAttributeArray& apAttrs);
00098
00111 IMPORT_C static CSenBaseElement* NewL(const TDesC8& aNsUri,
00112 const TDesC8& aLocalName,
00113 const TDesC8& aQName,
00114 const RAttributeArray& apAttrs,
00115 CSenElement& aParent);
00116
00120 IMPORT_C virtual ~CSenBaseElement();
00121
00122
00123
00129 IMPORT_C virtual void SetAttributesL(const RAttributeArray& apAttrs);
00130
00131
00132
00133
00134
00139 IMPORT_C virtual const TDesC8& LocalName() const;
00140
00145 IMPORT_C virtual const TDesC8& NamespaceURI() const;
00146
00151 IMPORT_C virtual const TDesC8& NsPrefix() const;
00152
00157 IMPORT_C virtual void SetPrefixL(const TDesC8& aPrefix);
00158
00163 IMPORT_C virtual TBool HasContent() const;
00164
00169 IMPORT_C virtual TPtrC8 Content() const;
00170
00175 IMPORT_C virtual HBufC* ContentUnicodeL() const;
00176
00182 IMPORT_C virtual TPtrC8 SetContentL(const TDesC8& aContent);
00183
00190 IMPORT_C virtual RWriteStream& ContentWriteStreamL();
00191
00202 IMPORT_C virtual TBool ConsistsOfL(MSenElement& aCandidate);
00203
00208 IMPORT_C virtual void SetNamespaceL(const TDesC8& aNsUri);
00209
00215 IMPORT_C virtual void SetNamespaceL(const TDesC8& aNsPrefix,
00216 const TDesC8& aNsUri);
00217
00227 IMPORT_C virtual const CSenNamespace* AddNamespaceL(
00228 CSenNamespace& aNewNamespace,
00229 TBool aCheckInParent);
00236 IMPORT_C virtual const CSenNamespace* AddNamespaceL(const TDesC8& aPrefix,
00237 const TDesC8& aUri);
00243 IMPORT_C virtual const CSenNamespace* Namespace();
00244
00251 IMPORT_C virtual const CSenNamespace* Namespace(const TDesC8& aNsPrefix);
00252
00263 IMPORT_C virtual const CSenNamespace* Namespace(const TDesC8& aNsPrefix,
00264 const TBool aCheckInParent);
00265
00273 IMPORT_C virtual const CSenNamespace* Namespace(const TDesC8& aNsPrefix,
00274 const TDesC8& aUri);
00275
00287 IMPORT_C virtual TInt ElementsL(RPointerArray<CSenElement>& aElementArray,
00288 const TDesC8& aNsUri,
00289 const TDesC8& aLocalName);
00290
00302 IMPORT_C virtual TInt ElementsL(RPointerArray<CSenElement>& aElementArray,
00303 const TDesC8& aLocalName);
00304
00311 IMPORT_C virtual RPointerArray<CSenElement>& ElementsL();
00312
00318 IMPORT_C virtual RPointerArray<CSenBaseAttribute>& AttributesL();
00319
00325 IMPORT_C virtual RPointerArray<CSenNamespace>& NamespacesL();
00326
00333 IMPORT_C virtual const TDesC8* AttrValue(const TDesC8& aName);
00334
00339 IMPORT_C virtual void AddAttrL(const TDesC8& aName, const TDesC8& aValue);
00340
00346 IMPORT_C virtual CSenElement* Parent();
00347
00355 IMPORT_C virtual CSenElement* SetParent(CSenElement* apParent);
00356
00361 IMPORT_C virtual MSenElement& Root();
00362
00369 IMPORT_C virtual CSenElement* Element(const TDesC8& aLocalName);
00370
00376 IMPORT_C virtual CSenElement* Element( const TDesC8& aNsUri,
00377 const TDesC8& aLocalName);
00378
00391 IMPORT_C virtual CSenElement* CreateElementL(const TDesC8& aNsPrefix,
00392 const TDesC8& aLocalName);
00393
00406 IMPORT_C virtual CSenElement& InsertElementL(CSenElement& aElement,
00407 const CSenElement& aBeforeElement);
00408
00415 IMPORT_C virtual CSenElement& AddElementL(CSenElement& aElement);
00416
00427 IMPORT_C virtual CSenElement& AddElementL( const TDesC8& aNsUri,
00428 const TDesC8& aLocalName);
00429
00442 IMPORT_C virtual CSenElement& AddElementL(const TDesC8& aNsUri,
00443 const TDesC8& aLocalName,
00444 const TDesC8& aQName);
00445
00458 IMPORT_C virtual CSenElement& AddElementL(const TDesC8& aLocalName);
00459
00467 IMPORT_C virtual CSenElement* RemoveElement(CSenElement& aElement);
00468
00477 IMPORT_C virtual CSenElement* RemoveElement(const TDesC8& aNsUri,
00478 const TDesC8& aLocalName);
00479
00487 IMPORT_C virtual CSenElement* RemoveElement(const TDesC8& aLocalName);
00488
00499 IMPORT_C virtual CSenElement* ReplaceElementL(CSenElement& aElement);
00500
00505 IMPORT_C virtual HBufC8* AsXmlL();
00506
00512 IMPORT_C virtual HBufC* AsXmlUnicodeL();
00513
00518 IMPORT_C virtual void WriteAsXMLToL(RWriteStream& aWriteStream);
00519
00525 IMPORT_C virtual void WriteNamespacesToL(RWriteStream& aWriteStream);
00526
00533 IMPORT_C virtual MSenElement* AsElement();
00534
00540 IMPORT_C void CopyFromL(CSenElement& aSource);
00541
00549 IMPORT_C virtual CSenElement* DetachL();
00550
00557 IMPORT_C virtual CSenElement* Child(TInt aIndex);
00558
00569 IMPORT_C virtual void Set(const TDesC8& aNsUri,
00570 const TDesC8& aLocalName,
00571 const TDesC8& aQName);
00572
00577 IMPORT_C virtual void AddAttributesL(const RAttributeArray& apAttrs);
00578
00579 protected:
00580
00584 IMPORT_C CSenBaseElement();
00585
00591 IMPORT_C void BaseConstructL( const TDesC8& aLocalName);
00592
00593 IMPORT_C void BaseConstructL( const TDesC8& aNsUri,
00594 const TDesC8& aLocalName);
00595
00596 IMPORT_C void BaseConstructL( const TDesC8& aNsUri,
00597 const TDesC8& aLocalName,
00598 const TDesC8& aQName);
00599
00600 IMPORT_C void BaseConstructL( const TDesC8& aNsUri,
00601 const TDesC8& aLocalName,
00602 const TDesC8& aQName,
00603 const RAttributeArray& apAttrs);
00604
00605 IMPORT_C void BaseConstructL( const TDesC8& aNsUri,
00606 const TDesC8& aLocalName,
00607 const TDesC8& aQName,
00608 const RAttributeArray& apAttrs,
00609 CSenElement& aParent);
00610
00611
00612
00619 IMPORT_C virtual CSenBaseAttribute* FindAttr(const TDesC8& aName);
00620
00628 IMPORT_C virtual TInt IndexOfElement(const TDesC8& aNsUri,
00629 const TDesC8& aLocalName) const;
00630
00635 IMPORT_C virtual void WriteAttrsToL(RWriteStream& aWriteStream);
00636
00643 IMPORT_C virtual void WriteAttrToL(RWriteStream& aWriteStream,
00644 const TDesC8& aName,
00645 const TDesC8& aValue);
00646
00651 IMPORT_C virtual void WriteElementsToL(RWriteStream& aWriteStream);
00652
00657 IMPORT_C virtual void WriteContentToL(RWriteStream& aWriteStream);
00658
00671 IMPORT_C virtual const TDesC8& AddAttributeL(const TDesC8& aQName,
00672 const TDesC8& aLocalName,
00673 const TDesC8& aValue);
00674
00686 IMPORT_C virtual const TDesC8& AddAttributeL(const TDesC8& aAttrName,
00687 const TDesC8& aValue);
00688
00695 IMPORT_C const TDesC8& AddAttributeL(CSenBaseAttribute* apAttribute);
00696
00700 IMPORT_C virtual void AllocContentBufL();
00701
00707 IMPORT_C virtual TPtrC8 WriteToBufL(CBufBase& aBuf);
00708
00709 private:
00710
00711 void AddNamespaceMissingFromL(RPointerArray<CSenNamespace>& aNamespaces);
00712
00713 private:
00714 HBufC8* ipLocalName;
00715 HBufC8* iNotUsed;
00716 CBufFlat* ipContentBuf;
00717 RBufWriteStream iContentWriteStream;
00718 RPointerArray<CSenBaseAttribute> iAttrs;
00719 RPointerArray<CSenElement> iElements;
00720 RPointerArray<CSenNamespace> iNamespaces;
00721 CSenElement* ipParent;
00722 CSenNamespace* ipNamespace;
00723 };
00724
00725
00726 #endif
00727
00728
00729