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 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_sw.hxx" 30 31 32 33 #include "ring.hxx" 34 35 36 /************************************************************************* 37 |* 38 |* Ring::Ring() 39 |* 40 |* Ersterstellung VB 02.07.91 41 |* Letzte Aenderung JP 10.10.97 42 |* 43 *************************************************************************/ 44 45 Ring::Ring( Ring *pObj ) 46 { 47 if( !pObj ) 48 pNext = this, pPrev = this; 49 else 50 { 51 pNext = pObj; 52 pPrev = pObj->pPrev; 53 pObj->pPrev = this; 54 pPrev->pNext = this; 55 } 56 } 57 58 /************************************************************************* 59 |* 60 |* Ring::~Ring() 61 |* 62 |* Ersterstellung VB 02.07.91 63 |* Letzte Aenderung JP 10.10.97 64 |* 65 *************************************************************************/ 66 67 Ring::~Ring() 68 { 69 pNext->pPrev = pPrev; 70 pPrev->pNext = pNext; 71 } 72 73 /************************************************************************* 74 |* 75 |* Ring::MoveTo 76 |* 77 |* Ersterstellung VB 4.3.91 78 |* Letzte Aenderung JP 10.10.97 79 |* 80 *************************************************************************/ 81 82 void Ring::MoveTo(Ring *pDestRing) 83 { 84 // loeschen aus dem alten 85 pNext->pPrev = pPrev; 86 pPrev->pNext = pNext; 87 88 // im neuen einfuegen 89 if( pDestRing ) 90 { 91 pNext = pDestRing; 92 pPrev = pDestRing->pPrev; 93 pDestRing->pPrev = this; 94 pPrev->pNext = this; 95 } 96 else 97 pNext = pPrev = this; 98 99 } 100 101 void Ring::MoveRingTo(Ring *pDestRing) 102 { 103 // den gesamten Ring in den DestRing einfuegen 104 Ring* pMyPrev = pPrev; 105 Ring* pDestPrev = pDestRing->pPrev; 106 107 pMyPrev->pNext = pDestRing; 108 pDestPrev->pNext = this; 109 pDestRing->pPrev = pMyPrev; 110 pPrev = pDestPrev; 111 } 112 113 sal_uInt32 Ring::numberOf() const 114 { 115 sal_uInt32 nRet = 1; 116 const Ring* pNxt = pNext; 117 while( pNxt != this ) 118 { 119 ++nRet; 120 pNxt = pNxt->GetNext(); 121 } 122 return nRet; 123 } 124 125 126