dbertoni    2004/08/12 16:48:00

  Added:       c/src/xalanc/XercesParserLiaison
                        XercesWrapperNavigatorAllocator.cpp
                        XercesWrapperNavigatorAllocator.hpp
  Log:
  Removed use of deque.
  
  Revision  Changes    Path
  1.1                  
xml-xalan/c/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.cpp
  
  Index: XercesWrapperNavigatorAllocator.cpp
  ===================================================================
  /*
   * Copyright 1999-2004 The Apache Software Foundation.
   *
   * Licensed 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.
   */
  
  // Class header file.
  #include "XercesWrapperNavigatorAllocator.hpp"
  
  
  
  XALAN_CPP_NAMESPACE_BEGIN
  
  
  
  XercesWrapperNavigatorAllocator::XercesWrapperNavigatorAllocator(size_type    
theBlockCount) :
        m_allocator(theBlockCount)
  {
  }
  
  
  
  XercesWrapperNavigatorAllocator::~XercesWrapperNavigatorAllocator()
  {
  }
  
  
  
  XercesWrapperNavigatorAllocator::ObjectType*
  XercesWrapperNavigatorAllocator::create(XercesDocumentWrapper*  
theOwnerDocument)
  {
        ObjectType* const       theBlock = m_allocator.allocateBlock();
        assert(theBlock != 0);
  
        new(theBlock) ObjectType(theOwnerDocument);
  
        m_allocator.commitAllocation(theBlock);
  
        return theBlock;
  }
  
  
  
  void 
  XercesWrapperNavigatorAllocator::reset()
  {
        m_allocator.reset();
  }
  
  
  
  XALAN_CPP_NAMESPACE_END
  
  
  
  1.1                  
xml-xalan/c/src/xalanc/XercesParserLiaison/XercesWrapperNavigatorAllocator.hpp
  
  Index: XercesWrapperNavigatorAllocator.hpp
  ===================================================================
  /*
   * Copyright 1999-2004 The Apache Software Foundation.
   *
   * Licensed 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.
   */
  
  #if !defined(XERCESWRAPPERNAVIGATORALLOCATOR_INCLUDE_GUARD_12455133)
  #define XERCESWRAPPERNAVIGATORALLOCATOR_INCLUDE_GUARD_12455133
  
  
  
  #include <xalanc/XercesParserLiaison/XercesParserLiaisonDefinitions.hpp>
  
  
  
  #include <xalanc/PlatformSupport/ArenaAllocator.hpp>
  
  
  
  #include <xalanc/XercesParserLiaison/XercesWrapperNavigator.hpp>
  
  
  
  XALAN_CPP_NAMESPACE_BEGIN
  
  
  
  class XALAN_XERCESPARSERLIAISON_EXPORT XercesWrapperNavigatorAllocator
  {
  public:
  
      typedef XercesWrapperNavigator                  ObjectType;
  
  #if defined(XALAN_NO_DEFAULT_TEMPLATE_ARGUMENTS)
      typedef ArenaBlock<ObjectType>                  ArenaBlockType;
  
      typedef ArenaAllocator<ObjectType,
                             ArenaBlockType>          ArenaAllocatorType;
  #else
      typedef ArenaAllocator<ObjectType>              ArenaAllocatorType;
  #endif
  
      typedef ArenaAllocatorType::size_type           size_type;
  
      /**
       * Construct an instance that will allocate blocks of the specified size.
       *
       * @param theBlockSize The block size.
       */
      XercesWrapperNavigatorAllocator(size_type   theBlockCount);
  
      ~XercesWrapperNavigatorAllocator();
      
      /**
       * Create a XercesWrapperNavigator instance.
       * 
       * @param theOwnerDocument The XercesDocumentWrappter instance for this 
instance.
       *
       * @return pointer to the instance
       */
      ObjectType*
      create(XercesDocumentWrapper*   theOwnerDocument);
  
      /**
       * Delete all objects from allocator.
       */ 
      void
      reset();
  
      /**
       * Get size of an ArenaBlock, that is, the number
       * of objects in each block.
       *
       * @return The size of the block
       */
      size_type
      getBlockCount() const
      {
          return m_allocator.getBlockCount();
      }
  
      /**
       * Get the number of ArenaBlocks currently allocated.
       *
       * @return The number of blocks.
       */
      size_type
      getBlockSize() const
      {
          return m_allocator.getBlockSize();
      }
  
  private:
  
      // Not implemented...
      XercesWrapperNavigatorAllocator(const XercesWrapperNavigatorAllocator&);
  
      XercesWrapperNavigatorAllocator&
      operator=(const XercesWrapperNavigatorAllocator&);
  
      // Data members...
      ArenaAllocatorType  m_allocator;
  };
  
  
  
  XALAN_CPP_NAMESPACE_END
  
  
  
  #endif  // XERCESWRAPPERNAVIGATORALLOCATOR_INCLUDE_GUARD_12455133
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to