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

📄 uniondatatypevalidator.hpp

📁 基于属性证书的访问控制源代码,由c++编写,包括openssl,xercesc等
💻 HPP
📖 第 1 页 / 共 2 页
字号:
    //@}    // -----------------------------------------------------------------------    // Compare methods    // -----------------------------------------------------------------------    /** @name Compare Function */    //@{    /**     * Compare two boolean data types     *     * @param content1     * @param content2     * @return     */    int compare(const XMLCh* const, const XMLCh* const        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager        );    //@}    /**      * Returns an instance of the base datatype validator class	  * Used by the DatatypeValidatorFactory.      */    virtual DatatypeValidator* newInstance    (        RefHashTableOf<KVStringPair>* const facets        , RefArrayVectorOf<XMLCh>* const enums        , const int finalSet        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager    );    /***     * Support for Serialization/De-serialization     ***/    DECL_XSERIALIZABLE(UnionDatatypeValidator)    RefVectorOf<DatatypeValidator>* getMemberTypeValidators() const;    /**     * Returns the type name that was actually used to validate the last time validate was called     * note - this does not mean that it fully validated sucessfully     **/    const XMLCh* getMemberTypeName() const;    /**     * Returns the type uri that was actually used to validate the last time validate was called     * note - this does not mean that it fully validated sucessfully     **/    const XMLCh* getMemberTypeUri() const;    /**     * Returns true if the type that was actually used to validate the last time validate was called      * is anonymous     */    bool getMemberTypeAnonymous() const;    /**     * Returns the member DatatypeValidator used to validate the content the last time validate      * was called     */    const DatatypeValidator* getMemberTypeValidator() const;    /**     * Called inbetween uses of this validator to reset PSVI information     */    void reset();private:    // -----------------------------------------------------------------------    //  Unimplemented constructors and operators    // -----------------------------------------------------------------------        UnionDatatypeValidator(const UnionDatatypeValidator&);    UnionDatatypeValidator& operator=(const UnionDatatypeValidator&);    virtual void checkContent(const XMLCh*             const content                            ,       ValidationContext* const context                            , bool                           asBase                            ,       MemoryManager*     const manager);    void init(DatatypeValidator*            const baseValidator            , RefHashTableOf<KVStringPair>* const facets            , RefArrayVectorOf<XMLCh>*      const enums            , MemoryManager*                const manager);    void cleanUp();        RefArrayVectorOf<XMLCh>*  getEnumeration() const;    void                 setEnumeration(RefArrayVectorOf<XMLCh>*, bool);    // -----------------------------------------------------------------------    //  Private data members    //    //  fEnumeration    //      we own it (or not, depending on state of fEnumerationInherited).    //    //  fMemberTypeValidators    //      we own it (or not, depending on the state of fMemberTypesInherited).    //    //  fValidatedDatatype    //      the dataTypeValidator  that was actually used to validate the last time validate was called    //    // -----------------------------------------------------------------------     bool                             fEnumerationInherited;     bool                             fMemberTypesInherited;     RefArrayVectorOf<XMLCh>*         fEnumeration;     RefVectorOf<DatatypeValidator>*  fMemberTypeValidators;     DatatypeValidator*               fValidatedDatatype;};inline DatatypeValidator* UnionDatatypeValidator::newInstance(      RefHashTableOf<KVStringPair>* const facets    , RefArrayVectorOf<XMLCh>* const      enums    , const int                           finalSet    , MemoryManager* const                manager){    return (DatatypeValidator*) new (manager) UnionDatatypeValidator(this, facets, enums, finalSet, manager, fMemberTypeValidators, true);}inline void UnionDatatypeValidator::validate( const XMLCh*             const content                                           ,        ValidationContext* const context                                           ,        MemoryManager*     const manager){    checkContent(content, context, false, manager);}inline void UnionDatatypeValidator::cleanUp(){    //~RefVectorOf will delete all adopted elements    if ( !fEnumerationInherited && fEnumeration)        delete fEnumeration;    if (!fMemberTypesInherited && fMemberTypeValidators)        delete fMemberTypeValidators;    }inline RefArrayVectorOf<XMLCh>* UnionDatatypeValidator:: getEnumeration() const{    return fEnumeration;}inline void UnionDatatypeValidator::setEnumeration(RefArrayVectorOf<XMLCh>* enums                                                 , bool                inherited){    if (enums)    {        if (  !fEnumerationInherited && fEnumeration)            delete fEnumeration;        fEnumeration = enums;        fEnumerationInherited = inherited;        setFacetsDefined(DatatypeValidator::FACET_ENUMERATION);    }}//// get the native UnionDTV's fMemberTypeValidators//inlineRefVectorOf<DatatypeValidator>* UnionDatatypeValidator::getMemberTypeValidators() const{    return this->fMemberTypeValidators;}inline bool UnionDatatypeValidator::isAtomic() const {    if (!fMemberTypeValidators) {        return false;    }    unsigned int memberSize = fMemberTypeValidators->size();    for (unsigned int i=0; i < memberSize; i++) {        if (!fMemberTypeValidators->elementAt(i)->isAtomic()) {            return false;        }    }    return true;}inline bool UnionDatatypeValidator::isSubstitutableBy(const DatatypeValidator* const toCheck) {    if (toCheck == this) {        return true;    }    if (fMemberTypeValidators) {        unsigned int memberSize = fMemberTypeValidators->size();        for (unsigned int i=0; i < memberSize; i++) {            if (fMemberTypeValidators->elementAt(i)->isSubstitutableBy(toCheck)) {                return true;            }        }    }    return false;}inline const XMLCh* UnionDatatypeValidator::getMemberTypeName() const {    if(fValidatedDatatype) {        return fValidatedDatatype->getTypeLocalName();    }    return 0;}inline const XMLCh* UnionDatatypeValidator::getMemberTypeUri() const {    if(fValidatedDatatype) {        return fValidatedDatatype->getTypeUri();    }    return 0;}inline bool UnionDatatypeValidator::getMemberTypeAnonymous() const {    if(fValidatedDatatype) {        return fValidatedDatatype->getAnonymous();    }    return 0;}inline const DatatypeValidator* UnionDatatypeValidator::getMemberTypeValidator() const {    return fValidatedDatatype;}inline void UnionDatatypeValidator::reset() {    fValidatedDatatype = 0;}XERCES_CPP_NAMESPACE_END#endif/**  * End of file UnionDatatypeValidator.hpp  */

⌨️ 快捷键说明

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