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 28 #ifndef X2C_HEAP_HXX 29 #define X2C_HEAP_HXX 30 31 #include "sistr.hxx" 32 33 class HeapItem; 34 35 class Heap 36 { 37 public: 38 Heap( 39 unsigned i_nWidth ); 40 ~Heap(); 41 42 void InsertValue( 43 const char * i_sKey, 44 const char * i_sValue ); 45 HeapItem * ReleaseTop(); /// @return must be deleted by caller of method. 46 47 private: 48 typedef HeapItem * Column; 49 50 void IncColumn(); 51 Column & ActiveColumn() { return dpColumnsArray[nActiveColumn]; } 52 53 Column * dpColumnsArray; 54 unsigned nColumnsArraySize; 55 unsigned nActiveColumn; 56 }; 57 58 59 class HeapItem 60 { 61 public: 62 HeapItem( 63 const char * i_sKey, 64 const char * i_sValue ); 65 ~HeapItem( ); 66 67 bool operator<( 68 const HeapItem & i_rOther ) const; 69 bool operator<=( 70 const HeapItem & i_rOther ) const 71 { return ! (i_rOther < *this); } 72 const Simstr & Value() const; 73 const Simstr & Key() const; 74 HeapItem * Next() const; 75 76 void SetNext( 77 HeapItem * i_pNext ); 78 private: 79 Simstr sValue; 80 Simstr sKey; 81 HeapItem * pNext; 82 }; 83 84 85 86 87 88 89 #endif 90 91 92