xref: /aoo42x/main/sw/source/core/bastyp/ring.cxx (revision cdf0e10c)
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