⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 contentspecnode.hpp

📁 基于属性证书的访问控制源代码,由c++编写,包括openssl,xercesc等
💻 HPP
📖 第 1 页 / 共 2 页
字号:
    //      is fgPCDataElemId, then its a PCData node.  Else, it is zero.    //    //  fFirst    //  fSecond    //      The optional first and second nodes. The fType field indicates    //      which of these are valid. The validaty constraints are:    //    //          Leaf = Neither valid    //          ZeroOrOne, ZeroOrMore = First    //          Choice, Sequence, All = First and Second    //          Any* = Neither valid    //    //  fType    //      The type of node. This controls how many of the child node fields    //      are used.    //    //  fAdoptFirst    //      Indicate if this ContentSpecNode adopts the fFirst, and is responsible    //      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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -