1*8b851043SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*8b851043SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*8b851043SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*8b851043SAndrew Rist * distributed with this work for additional information 6*8b851043SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*8b851043SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*8b851043SAndrew Rist * "License"); you may not use this file except in compliance 9*8b851043SAndrew Rist * with the License. You may obtain a copy of the License at 10*8b851043SAndrew Rist * 11*8b851043SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*8b851043SAndrew Rist * 13*8b851043SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*8b851043SAndrew Rist * software distributed under the License is distributed on an 15*8b851043SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*8b851043SAndrew Rist * KIND, either express or implied. See the License for the 17*8b851043SAndrew Rist * specific language governing permissions and limitations 18*8b851043SAndrew Rist * under the License. 19*8b851043SAndrew Rist * 20*8b851043SAndrew Rist *************************************************************/ 21*8b851043SAndrew Rist 22*8b851043SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _QUEUE_HXX 25cdf0e10cSrcweir #define _QUEUE_HXX 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <tools/solar.h> 28cdf0e10cSrcweir #include <tools/contnr.hxx> 29cdf0e10cSrcweir 30cdf0e10cSrcweir // --------- 31cdf0e10cSrcweir // - Queue - 32cdf0e10cSrcweir // --------- 33cdf0e10cSrcweir 34cdf0e10cSrcweir #define QUEUE_ENTRY_NOTFOUND CONTAINER_ENTRY_NOTFOUND 35cdf0e10cSrcweir 36cdf0e10cSrcweir class Queue : private Container 37cdf0e10cSrcweir { 38cdf0e10cSrcweir public: 39cdf0e10cSrcweir using Container::Clear; 40cdf0e10cSrcweir using Container::Count; 41cdf0e10cSrcweir using Container::GetObject; 42cdf0e10cSrcweir using Container::GetPos; 43cdf0e10cSrcweir Queue(sal_uInt16 _nInitSize=16,sal_uInt16 _nReSize=16)44cdf0e10cSrcweir Queue( sal_uInt16 _nInitSize = 16, sal_uInt16 _nReSize = 16 ) : 45cdf0e10cSrcweir Container( _nReSize, _nInitSize, _nReSize ) {} Queue(const Queue & rQueue)46cdf0e10cSrcweir Queue( const Queue& rQueue ) : Container( rQueue ) {} 47cdf0e10cSrcweir Put(void * p)48cdf0e10cSrcweir void Put( void* p ) { Container::Insert( p, CONTAINER_APPEND ); } Get()49cdf0e10cSrcweir void* Get() { return Container::Remove( (sal_uIntPtr)0 ); } 50cdf0e10cSrcweir operator =(const Queue & rQueue)51cdf0e10cSrcweir Queue& operator =( const Queue& rQueue ) 52cdf0e10cSrcweir { Container::operator =( rQueue ); return *this; } 53cdf0e10cSrcweir operator ==(const Queue & rQueue) const54cdf0e10cSrcweir sal_Bool operator ==( const Queue& rQueue ) const 55cdf0e10cSrcweir { return Container::operator ==( rQueue ); } operator !=(const Queue & rQueue) const56cdf0e10cSrcweir sal_Bool operator !=( const Queue& rQueue ) const 57cdf0e10cSrcweir { return Container::operator !=( rQueue ); } 58cdf0e10cSrcweir }; 59cdf0e10cSrcweir 60cdf0e10cSrcweir // ----------------- 61cdf0e10cSrcweir // - DECLARE_QUEUE - 62cdf0e10cSrcweir // ----------------- 63cdf0e10cSrcweir 64cdf0e10cSrcweir #define DECLARE_QUEUE( ClassName, Type ) \ 65cdf0e10cSrcweir class ClassName : private Queue \ 66cdf0e10cSrcweir { \ 67cdf0e10cSrcweir public: \ 68cdf0e10cSrcweir using Queue::Clear; \ 69cdf0e10cSrcweir using Queue::Count; \ 70cdf0e10cSrcweir \ 71cdf0e10cSrcweir ClassName( sal_uInt16 _nInitSize = 16, \ 72cdf0e10cSrcweir sal_uInt16 _nReSize = 16 ) : \ 73cdf0e10cSrcweir Queue( _nInitSize, _nReSize ) {} \ 74cdf0e10cSrcweir ClassName( const ClassName& rClassName ) : \ 75cdf0e10cSrcweir Queue( rClassName ) {} \ 76cdf0e10cSrcweir \ 77cdf0e10cSrcweir void Put( Type p ) { Queue::Put( (void*)p ); } \ 78cdf0e10cSrcweir Type Get() { return (Type)Queue::Get(); } \ 79cdf0e10cSrcweir \ 80cdf0e10cSrcweir Type GetObject( sal_uIntPtr nIndex ) const \ 81cdf0e10cSrcweir { return (Type)Queue::GetObject( nIndex ); } \ 82cdf0e10cSrcweir sal_uIntPtr GetPos( const Type p ) const \ 83cdf0e10cSrcweir { return Queue::GetPos( (const void*)p ); } \ 84cdf0e10cSrcweir sal_uIntPtr GetPos( const Type p, sal_uIntPtr nStartIndex, \ 85cdf0e10cSrcweir sal_Bool bForward = sal_True ) const \ 86cdf0e10cSrcweir { return Queue::GetPos( (const void*)p, \ 87cdf0e10cSrcweir nStartIndex, \ 88cdf0e10cSrcweir bForward ); } \ 89cdf0e10cSrcweir \ 90cdf0e10cSrcweir ClassName& operator =( const ClassName& rClassName ) \ 91cdf0e10cSrcweir { Queue::operator =( rClassName ); \ 92cdf0e10cSrcweir return *this; } \ 93cdf0e10cSrcweir \ 94cdf0e10cSrcweir sal_Bool operator ==( const Queue& rQueue ) const \ 95cdf0e10cSrcweir { return Queue::operator ==( rQueue ); } \ 96cdf0e10cSrcweir sal_Bool operator !=( const Queue& rQueue ) const \ 97cdf0e10cSrcweir { return Queue::operator !=( rQueue ); } \ 98cdf0e10cSrcweir }; 99cdf0e10cSrcweir 100cdf0e10cSrcweir #endif // _QUEUE_HXX 101