vtf-logo

HeapHandleArray.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00008 #if !defined(__ads_HeapHandleArray_h__)
00009 #define __ads_HeapHandleArray_h__
00010 
00011 #include "../defs.h"
00012 
00013 BEGIN_NAMESPACE_ADS
00014 
00016 
00021 template <typename DataConstIterator, typename HeapIterator>
00022 class HeapHandleArray
00023 {
00024  public:
00025 
00027   typedef DataConstIterator data_const_iterator;
00029   typedef HeapIterator heap_iterator;
00030 
00031  private:
00032 
00033   //
00034   // Member data
00035   //
00036 
00037   data_const_iterator _data_begin;
00038   heap_iterator* _handles_begin;
00039 
00040  private:
00041 
00042   // Assignment operator not implemented.
00043   HeapHandleArray&
00044   operator=( const HeapHandleArray& );
00045 
00046  public:
00047 
00048   //
00049   // Constructors
00050   //
00051     
00053   HeapHandleArray() :
00054     _data_begin( 0 ),
00055     _handles_begin( 0 )
00056   {}
00057 
00059   template <class DataArray, class HandleArray>
00060   HeapHandleArray( const DataArray& data, HandleArray& handles ) :
00061     _data_begin( data.begin() ),
00062     _handles_begin( handles.begin() )
00063   {}
00064 
00066   HeapHandleArray( const HeapHandleArray& x ) :
00067     _data_begin( x._data_begin ),
00068     _handles_begin( x._handles_begin )
00069   {}
00070 
00071   //
00072   // Accessors
00073   //
00074     
00076   heap_iterator
00077   operator()( data_const_iterator h ) const
00078   {
00079     return _handles_begin[ h - _data_begin ];
00080   }
00081 
00082   //
00083   // Manipulators
00084   //
00085 
00087   heap_iterator&
00088   operator()( data_const_iterator h )
00089   {
00090     return _handles_begin[ h - _data_begin ];
00091   }
00092 
00094   template <class DataArray, class HandleArray>
00095   void
00096   initialize( const DataArray& data, HandleArray& handles )
00097   {
00098     _data_begin = data.begin();
00099     _handles_begin = handles.begin();
00100   }
00101 
00102 };
00103 
00104 END_NAMESPACE_ADS
00105 
00106 #endif

Generated on Fri Aug 24 12:55:24 2007 for Algorithms and Data Structures Package by  doxygen 1.4.7