/************************************************************************* * * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: sci_impl.hxx,v $ * * $Revision: 1.4 $ * * last change: $Author: rt $ $Date: 2005-09-07 17:00:48 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. * * * GNU Lesser General Public License Version 2.1 * ============================================= * Copyright 2005 by Sun Microsystems, Inc. * 901 San Antonio Road, Palo Alto, CA 94303, USA * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1, as published by the Free Software Foundation. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * ************************************************************************/ #ifndef ARY_SCI_IMPL_HXX #define ARY_SCI_IMPL_HXX // USED SERVICES // BASE CLASSES #include // COMPONENTS // PARAMETERS namespace ary { //************************* SCI_Vector **********************************// template class SCI_Vector : public StdConstIterator { public: typedef std::vector source; typedef typename source::const_iterator source_iterator; SCI_Vector( const source & i_rSource ); virtual ~SCI_Vector(); private: // Interface StdConstIterator<>: virtual void do_Advance(); virtual const ELEM * inq_CurElement() const; virtual bool inq_IsSorted() const; // DATA source_iterator itRun; source_iterator itEnd; }; //************************* SCI_Map **********************************// template class SCI_Map : public StdConstIterator< typename std::map::value_type > { public: typedef std::map source; typedef typename source::const_iterator source_iterator; SCI_Map( const source & i_rSource ); virtual ~SCI_Map(); private: // Interface StdConstIterator<>: virtual void do_Advance(); virtual const typename std::map::value_type * inq_CurElement() const; virtual bool inq_IsSorted() const; // DATA source_iterator itRun; source_iterator itEnd; }; //************************* SCI_MultiMap **********************************// template class SCI_MultiMap : public StdConstIterator< typename std::multimap::value_type > { public: typedef std::multimap source; typedef typename source::const_iterator source_iterator; SCI_MultiMap( const source & i_rSource ); SCI_MultiMap( source_iterator i_begin, source_iterator i_end ); virtual ~SCI_MultiMap(); private: // Interface StdConstIterator<>: virtual void do_Advance(); virtual const typename std::multimap::value_type * inq_CurElement() const; virtual bool inq_IsSorted() const; // DATA source_iterator itRun; source_iterator itEnd; }; //************************* SCI_Set **********************************// template class SCI_Set : public StdConstIterator { public: typedef typename TYPES::element_type element; typedef typename TYPES::sort_type sorter; typedef std::set source; typedef typename source::const_iterator source_iterator; SCI_Set( const source & i_rSource ); virtual ~SCI_Set(); private: // Interface StdConstIterator<>: virtual void do_Advance(); virtual const element * inq_CurElement() const; virtual bool inq_IsSorted() const; // DATA source_iterator itRun; source_iterator itEnd; }; //************************* SCI_DataInMap **********************************// template class SCI_DataInMap : public StdConstIterator { public: typedef std::map source; typedef typename source::const_iterator source_iterator; SCI_DataInMap( const source & i_rSource ); virtual ~SCI_DataInMap(); private: // Interface StdConstIterator<>: virtual void do_Advance(); virtual const VALUE * inq_CurElement() const; virtual bool inq_IsSorted() const; // DATA source_iterator itRun; source_iterator itEnd; }; //********************************************************************// // IMPLEMENTATION template SCI_Vector::SCI_Vector( const source & i_rSource ) : itRun(i_rSource.begin()), itEnd(i_rSource.end()) { } template SCI_Vector::~SCI_Vector() { } template void SCI_Vector::do_Advance() { if (itRun != itEnd) ++itRun; } template const ELEM * SCI_Vector::inq_CurElement() const { if (itRun != itEnd) return &(*itRun); return 0; } template bool SCI_Vector::inq_IsSorted() const { return false; } template SCI_Map::SCI_Map( const source & i_rSource ) : itRun(i_rSource.begin()), itEnd(i_rSource.end()) { } template SCI_Map::~SCI_Map() { } template void SCI_Map::do_Advance() { if (itRun != itEnd) ++itRun; } template const typename std::map::value_type * SCI_Map::inq_CurElement() const { if (itRun != itEnd) return &(*itRun); return 0; } template bool SCI_Map::inq_IsSorted() const { return true; } template SCI_MultiMap::SCI_MultiMap( const source & i_rSource ) : itRun(i_rSource.begin()), itEnd(i_rSource.end()) { } template SCI_MultiMap::SCI_MultiMap( source_iterator i_begin, source_iterator i_end ) : itRun(i_begin), itEnd(i_end) { } template SCI_MultiMap::~SCI_MultiMap() { } template void SCI_MultiMap::do_Advance() { if (itRun != itEnd) ++itRun; } template const typename std::multimap::value_type * SCI_MultiMap::inq_CurElement() const { if (itRun != itEnd) return &(*itRun); return 0; } template bool SCI_MultiMap::inq_IsSorted() const { return true; } template SCI_Set::SCI_Set( const source & i_rSource ) : itRun(i_rSource.begin()), itEnd(i_rSource.end()) { } template SCI_Set::~SCI_Set() { } template void SCI_Set::do_Advance() { if (itRun != itEnd) ++itRun; } template const typename SCI_Set::element * SCI_Set::inq_CurElement() const { if (itRun != itEnd) return &(*itRun); return 0; } template bool SCI_Set::inq_IsSorted() const { return true; } template SCI_DataInMap::SCI_DataInMap( const source & i_rSource ) : itRun(i_rSource.begin()), itEnd(i_rSource.end()) { } template SCI_DataInMap::~SCI_DataInMap() { } template void SCI_DataInMap::do_Advance() { if (itRun != itEnd) ++itRun; } template const VALUE * SCI_DataInMap::inq_CurElement() const { if (itRun != itEnd) return &(*itRun).second; return 0; } template bool SCI_DataInMap::inq_IsSorted() const { return true; } } // namespace ary #endif