1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_svl.hxx" 26 27 #ifndef GCC 28 #endif 29 30 #include <svl/itemiter.hxx> 31 #include <svl/itempool.hxx> 32 #include <svl/itemset.hxx> 33 34 // STATIC DATA ----------------------------------------------------------- 35 36 DBG_NAME(SfxItemIter); 37 38 39 // -------------------------------------------------------------------------- 40 41 42 SfxItemIter::SfxItemIter( const SfxItemSet& rItemSet ) 43 : _rSet( rItemSet ) 44 { 45 DBG_CTOR(SfxItemIter, 0); 46 DBG_ASSERTWARNING( _rSet.Count(), "es gibt gar keine Attribute" ); 47 48 if ( !_rSet._nCount ) 49 { 50 _nStt = 1; 51 _nEnd = 0; 52 } 53 else 54 { 55 SfxItemArray ppFnd = _rSet._aItems; 56 57 // suche das 1. gesetzte Item 58 for ( _nStt = 0; !*(ppFnd + _nStt ); ++_nStt ) 59 ; // empty loop 60 if ( 1 < _rSet.Count() ) 61 for( _nEnd = _rSet.TotalCount(); !*( ppFnd + --_nEnd); ) 62 ; // empty loop 63 else 64 _nEnd = _nStt; 65 } 66 67 _nAkt = _nStt; 68 } 69 70 // -------------------------------------------------------------------------- 71 72 73 SfxItemIter::~SfxItemIter() 74 { 75 DBG_DTOR(SfxItemIter, 0); 76 } 77 78 // -------------------------------------------------------------------------- 79 80 81 const SfxPoolItem* SfxItemIter::NextItem() 82 { 83 DBG_CHKTHIS(SfxItemIter, 0); 84 SfxItemArray ppFnd = _rSet._aItems; 85 86 if( _nAkt < _nEnd ) 87 { 88 do { 89 _nAkt++; 90 } while( _nAkt < _nEnd && !*(ppFnd + _nAkt ) ); 91 return *(ppFnd+_nAkt); 92 } 93 return 0; 94 } 95 96 // -------------------------------------------------------------------------- 97 98 99 const SfxPoolItem* SfxItemIter::PrevItem() 100 { 101 DBG_CHKTHIS(SfxItemIter, 0); 102 SfxItemArray ppFnd = _rSet._aItems; 103 104 if ( _nAkt > _nStt ) 105 { 106 do { 107 --_nAkt; 108 } while( _nAkt && !*(ppFnd + _nAkt )); 109 return *(ppFnd+_nAkt); 110 } 111 return 0; 112 } 113 114 115 116