/************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * Copyright 2000, 2010 Oracle and/or its affiliates. * * OpenOffice.org - a multi-platform office productivity suite * * This file is part of OpenOffice.org. * * OpenOffice.org is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * only, as published by the Free Software Foundation. * * OpenOffice.org 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 version 3 for more details * (a copy is included in the LICENSE file that accompanied this code). * * You should have received a copy of the GNU Lesser General Public License * version 3 along with OpenOffice.org. If not, see * * for a copy of the LGPLv3 License. * ************************************************************************/ #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