contentspecnode.hpp

来自「IBM的解析xml的工具Xerces的源代码」· HPP 代码 · 共 584 行 · 第 1/2 页

HPP
584
字号
    //      for deleting it.    //    //  fAdoptSecond    //      Indicate if this ContentSpecNode adopts the fSecond, and is responsible    //      for deleting it.    //    //  fMinOccurs    //      Indicate the minimum times that this node can occur    //    //  fMaxOccurs    //      Indicate the maximum times that this node can occur    //      -1 (Unbounded), default (1)    // -----------------------------------------------------------------------    MemoryManager*      fMemoryManager;    QName*              fElement;    XMLElementDecl*     fElementDecl;    ContentSpecNode*    fFirst;    ContentSpecNode*    fSecond;    NodeTypes           fType;    bool                fAdoptFirst;    bool                fAdoptSecond;    int                 fMinOccurs;    int                 fMaxOccurs;};// ---------------------------------------------------------------------------//  ContentSpecNode: Constructors and Destructor// ---------------------------------------------------------------------------inline ContentSpecNode::ContentSpecNode(MemoryManager* const manager) :    fMemoryManager(manager)    , fElement(0)    , fElementDecl(0)    , fFirst(0)    , fSecond(0)    , fType(ContentSpecNode::Leaf)    , fAdoptFirst(true)    , fAdoptSecond(true)    , fMinOccurs(1)    , fMaxOccurs(1){}inlineContentSpecNode::ContentSpecNode(QName* const element,                                 MemoryManager* const manager) :    fMemoryManager(manager)    , fElement(0)    , fElementDecl(0)    , fFirst(0)    , fSecond(0)    , fType(ContentSpecNode::Leaf)    , fAdoptFirst(true)    , fAdoptSecond(true)    , fMinOccurs(1)    , fMaxOccurs(1){    if (element)        fElement = new (fMemoryManager) QName(*element);}inlineContentSpecNode::ContentSpecNode(XMLElementDecl* const elemDecl,                                 MemoryManager* const manager) :    fMemoryManager(manager)    , fElement(0)    , fElementDecl(elemDecl)    , fFirst(0)    , fSecond(0)    , fType(ContentSpecNode::Leaf)    , fAdoptFirst(true)    , fAdoptSecond(true)    , fMinOccurs(1)    , fMaxOccurs(1){    if (elemDecl)        fElement = new (manager) QName(*(elemDecl->getElementName()));}inlineContentSpecNode::ContentSpecNode( QName* const element                                , const bool copyQName                                , MemoryManager* const manager) :    fMemoryManager(manager)    , fElement(0)    , fElementDecl(0)    , fFirst(0)    , fSecond(0)    , fType(ContentSpecNode::Leaf)    , fAdoptFirst(true)    , fAdoptSecond(true)    , fMinOccurs(1)    , fMaxOccurs(1){    if (copyQName)    {        if (element)            fElement = new (fMemoryManager) QName(*element);    }    else    {        fElement = element;    }}inlineContentSpecNode::ContentSpecNode(const  NodeTypes              type                                ,       ContentSpecNode* const firstAdopt                                ,       ContentSpecNode* const secondAdopt                                , const bool                   adoptFirst                                , const bool                   adoptSecond                                ,       MemoryManager* const   manager) :    fMemoryManager(manager)    , fElement(0)    , fElementDecl(0)    , fFirst(firstAdopt)    , fSecond(secondAdopt)    , fType(type)    , fAdoptFirst(adoptFirst)    , fAdoptSecond(adoptSecond)    , fMinOccurs(1)    , fMaxOccurs(1){}inline ContentSpecNode::~ContentSpecNode(){    // Delete our children, which cause recursive cleanup    if (fAdoptFirst) {		delete fFirst;    }    if (fAdoptSecond) {		delete fSecond;    }    delete fElement;}// ---------------------------------------------------------------------------//  ContentSpecNode: Getter methods// ---------------------------------------------------------------------------inline QName* ContentSpecNode::getElement(){    return fElement;}inline const QName* ContentSpecNode::getElement() const{    return fElement;}inline XMLElementDecl* ContentSpecNode::getElementDecl(){    return fElementDecl;}inline const XMLElementDecl* ContentSpecNode::getElementDecl() const{    return fElementDecl;}inline ContentSpecNode* ContentSpecNode::getFirst(){    return fFirst;}inline const ContentSpecNode* ContentSpecNode::getFirst() const{    return fFirst;}inline ContentSpecNode* ContentSpecNode::getSecond(){    return fSecond;}inline const ContentSpecNode* ContentSpecNode::getSecond() const{    return fSecond;}inline ContentSpecNode::NodeTypes ContentSpecNode::getType() const{    return fType;}inline ContentSpecNode* ContentSpecNode::orphanFirst(){    ContentSpecNode* retNode = fFirst;    fFirst = 0;    return retNode;}inline ContentSpecNode* ContentSpecNode::orphanSecond(){    ContentSpecNode* retNode = fSecond;    fSecond = 0;    return retNode;}inline int ContentSpecNode::getMinOccurs() const{    return fMinOccurs;}inline int ContentSpecNode::getMaxOccurs() const{    return fMaxOccurs;}inline bool ContentSpecNode::isFirstAdopted() const{    return fAdoptFirst;}inline bool ContentSpecNode::isSecondAdopted() const{    return fAdoptSecond;}// ---------------------------------------------------------------------------//  ContentSpecType: Setter methods// ---------------------------------------------------------------------------inline void ContentSpecNode::setElement(QName* const element){    delete fElement;    fElement = 0;    if (element)        fElement = new (fMemoryManager) QName(*element);}inline void ContentSpecNode::setFirst(ContentSpecNode* const toAdopt){    if (fAdoptFirst)        delete fFirst;    fFirst = toAdopt;}inline void ContentSpecNode::setSecond(ContentSpecNode* const toAdopt){    if (fAdoptSecond)        delete fSecond;    fSecond = toAdopt;}inline void ContentSpecNode::setType(const NodeTypes type){    fType = type;}inline void ContentSpecNode::setMinOccurs(int min){    fMinOccurs = min;}inline void ContentSpecNode::setMaxOccurs(int max){    fMaxOccurs = max;}inline void ContentSpecNode::setAdoptFirst(bool newState){    fAdoptFirst = newState;}inline void ContentSpecNode::setAdoptSecond(bool newState){    fAdoptSecond = newState;}// ---------------------------------------------------------------------------//  ContentSpecNode: Miscellaneous// ---------------------------------------------------------------------------inline bool ContentSpecNode::hasAllContent() {    if (fType == ContentSpecNode::ZeroOrOne) {        return (fFirst->getType() == ContentSpecNode::All);    }    return (fType == ContentSpecNode::All);}XERCES_CPP_NAMESPACE_END#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?