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

📄 uniondatatypevalidator.hpp

📁 经典开源游戏glest的源代码
💻 HPP
字号:
/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements.  See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License.  You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Id: UnionDatatypeValidator.hpp 568078 2007-08-21 11:43:25Z amassari $ */#if !defined(UNION_DATATYPEVALIDATOR_HPP)#define UNION_DATATYPEVALIDATOR_HPP#include <xercesc/validators/datatype/DatatypeValidator.hpp>XERCES_CPP_NAMESPACE_BEGINclass VALIDATORS_EXPORT UnionDatatypeValidator : public DatatypeValidator{public:    // -----------------------------------------------------------------------    //  Public ctor/dtor    // -----------------------------------------------------------------------	/** @name Constructors and Destructor. */    //@{    UnionDatatypeValidator    (        MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager    );    //    // constructor for native Union datatype validator    // <simpleType name="nativeUnion">    //      <union   memberTypes="member1 member2 ...">    // </simpleType>    //    UnionDatatypeValidator    (        RefVectorOf<DatatypeValidator>* const memberTypeValidators        , const int finalSet        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager    );    //    // constructor for derived Union datatype validator    // <simpleType name="derivedUnion">    //      <restriction base="nativeUnion">    //          <pattern     value="patter_value"/>    //          <enumeration value="enum_value"/>    //      </restriction>    // </simpleType>    //    UnionDatatypeValidator    (        DatatypeValidator* const baseValidator        , RefHashTableOf<KVStringPair>* const facets        , RefArrayVectorOf<XMLCh>* const enums        , const int finalSet        , MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager        , RefVectorOf<DatatypeValidator>* const memberTypeValidators = 0        , const bool memberTypesInherited = true    );    virtual ~UnionDatatypeValidator();	//@}	virtual const RefArrayVectorOf<XMLCh>* getEnumString() const;    // -----------------------------------------------------------------------    // Getter methods    // -----------------------------------------------------------------------    /** @name Getter Functions */    //@{    /**      * Returns whether the type is atomic or not      */    virtual bool isAtomic() const;    virtual const XMLCh* getCanonicalRepresentation                        (                          const XMLCh*         const rawData                        ,       MemoryManager* const memMgr = 0                        ,       bool                 toValidate = false                        ) const;    //@}    // -----------------------------------------------------------------------    // Validation methods    // -----------------------------------------------------------------------    /** @name Validation Function */    //@{    /**     * validate that a string matches the boolean datatype     * @param content A string containing the content to be validated     *     * @exception throws InvalidDatatypeException if the content is     * is not valid.     */	virtual void validate                 (                  const XMLCh*             const content                ,       ValidationContext* const context = 0                ,       MemoryManager*     const manager = XMLPlatformUtils::fgMemoryManager                  );    /**      * Checks whether a given type can be used as a substitute      *      * @param  toCheck    A datatype validator of the type to be used as a      *                    substitute      *      * To be redefined in UnionDatatypeValidator      */    virtual bool isSubstitutableBy(const DatatypeValidator* const toCheck);    //@}    // -----------------------------------------------------------------------    // 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     * @deprecated     **/    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     * @deprecated     **/    const XMLCh* getMemberTypeUri() const;    /**     * Returns true if the type that was actually used to validate the last time validate was called      * is anonymous     * @deprecated     */    bool getMemberTypeAnonymous() const;    /**     * Returns the member DatatypeValidator used to validate the content the last time validate      * was called     * @deprecated     */    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)->getType() == DatatypeValidator::Union) &&                (fMemberTypeValidators->elementAt(i) == toCheck))                return false;            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 + -