1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 #ifndef DBACCESS_ROWSETCACHEITERATOR_HXX 28 #define DBACCESS_ROWSETCACHEITERATOR_HXX 29 30 #ifndef DBACCESS_CORE_API_ROWSETROW_HXX 31 #include "RowSetRow.hxx" 32 #endif 33 #ifndef _COMPHELPER_STLTYPES_HXX_ 34 #include <comphelper/stl_types.hxx> 35 #endif 36 37 namespace dbaccess 38 { 39 class ORowSetBase; 40 typedef struct 41 { 42 ORowSetMatrix::iterator aIterator; 43 ::com::sun::star::uno::Any aBookmark; 44 ORowSetBase* pRowSet; 45 } ORowSetCacheIterator_Helper; 46 47 DECLARE_STL_STDKEY_MAP(sal_Int32,ORowSetCacheIterator_Helper,ORowSetCacheMap); 48 49 class ORowSetCache; 50 class ORowSetCacheIterator 51 { 52 friend class ORowSetCache; 53 ORowSetCacheMap::iterator m_aIter; 54 ORowSetCache* m_pCache; 55 ORowSetBase* m_pRowSet; 56 protected: 57 ORowSetCacheIterator(const ORowSetCacheMap::iterator& _rIter,ORowSetCache* _pCache,ORowSetBase* _pRowSet) 58 : m_aIter(_rIter) 59 ,m_pCache(_pCache) 60 ,m_pRowSet(_pRowSet) 61 { 62 } 63 public: 64 ORowSetCacheIterator() :m_aIter(),m_pCache(NULL),m_pRowSet(NULL){} 65 ORowSetCacheIterator(const ORowSetCacheIterator& _rRH); 66 ORowSetCacheIterator& operator =(const ORowSetCacheIterator&); 67 68 sal_Bool isNull() const; 69 ORowSetCacheIterator& operator =(const ORowSetMatrix::iterator&); 70 operator ORowSetMatrix::iterator(); 71 72 ORowSetRow& operator *(); 73 const ORowSetRow& operator *() const; 74 75 ORowSetMatrix::iterator& operator ->(); 76 const ORowSetMatrix::iterator& operator ->() const; 77 78 bool operator <=(const ORowSetMatrix::iterator& _rRH) const; 79 bool operator <(const ORowSetMatrix::iterator& _rRH) const; 80 bool operator !=(const ORowSetMatrix::iterator& _rRH) const; 81 bool operator ==(const ORowSetMatrix::iterator& _rRH) const; 82 83 void setBookmark(const ::com::sun::star::uno::Any& _rBookmark); 84 ::com::sun::star::uno::Any getBookmark() const { return m_aIter->second.aBookmark; } 85 ::osl::Mutex* getMutex() const; 86 87 ORowSetCacheMap::iterator getIter() const { return m_aIter; } 88 }; 89 } 90 #endif // DBACCESS_ROWSETCACHEITERATOR_HXX 91 92 93