/* * 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: FieldActivator.hpp 568078 2007-08-21 11:43:25Z amassari $ */ #if !defined(FIELDACTIVATOR_HPP) #define FIELDACTIVATOR_HPP /** * This class is responsible for activating fields within a specific scope; * the caller merely requests the fields to be activated. */ // --------------------------------------------------------------------------- // Includes // --------------------------------------------------------------------------- #include XERCES_CPP_NAMESPACE_BEGIN // --------------------------------------------------------------------------- // Forward Declaration // --------------------------------------------------------------------------- class IdentityConstraint; class XPathMatcher; class ValueStoreCache; class IC_Field; class XPathMatcherStack; class VALIDATORS_EXPORT FieldActivator : public XMemory { public: // ----------------------------------------------------------------------- // Constructors/Destructor // ----------------------------------------------------------------------- FieldActivator(ValueStoreCache* const valueStoreCache, XPathMatcherStack* const matcherStack, MemoryManager* const manager = XMLPlatformUtils::fgMemoryManager); FieldActivator(const FieldActivator& other); ~FieldActivator(); // ----------------------------------------------------------------------- // Operator methods // ----------------------------------------------------------------------- FieldActivator& operator =(const FieldActivator& other); // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- bool getMayMatch(IC_Field* const field); // ----------------------------------------------------------------------- // Setter methods // ----------------------------------------------------------------------- void setValueStoreCache(ValueStoreCache* const other); void setMatcherStack(XPathMatcherStack* const matcherStack); void setMayMatch(IC_Field* const field, bool value); // ----------------------------------------------------------------------- // Activation methods // ----------------------------------------------------------------------- /** * Start the value scope for the specified identity constraint. This * method is called when the selector matches in order to initialize * the value store. */ void startValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); /** * Request to activate the specified field. This method returns the * matcher for the field. */ XPathMatcher* activateField(IC_Field* const field, const int initialDepth); /** * Ends the value scope for the specified identity constraint. */ void endValueScopeFor(const IdentityConstraint* const ic, const int initialDepth); private: // ----------------------------------------------------------------------- // Data // ----------------------------------------------------------------------- ValueStoreCache* fValueStoreCache; XPathMatcherStack* fMatcherStack; ValueHashTableOf* fMayMatch; MemoryManager* fMemoryManager; }; // --------------------------------------------------------------------------- // FieldActivator: Getter methods // --------------------------------------------------------------------------- inline bool FieldActivator::getMayMatch(IC_Field* const field) { return fMayMatch->get(field); } // --------------------------------------------------------------------------- // FieldActivator: Setter methods // --------------------------------------------------------------------------- inline void FieldActivator::setValueStoreCache(ValueStoreCache* const other) { fValueStoreCache = other; } inline void FieldActivator::setMatcherStack(XPathMatcherStack* const matcherStack) { fMatcherStack = matcherStack; } inline void FieldActivator::setMayMatch(IC_Field* const field, bool value) { fMayMatch->put(field, value); } XERCES_CPP_NAMESPACE_END #endif /** * End of file FieldActivator.hpp */