src/misc/DocumentPointer.cc

changeset 629
b75c6cce02e2
child 642
751a8df42842
equal deleted inserted replaced
628:6b13e4c2e97b 629:b75c6cce02e2
1 /*
2 * LDForge: LDraw parts authoring CAD
3 * Copyright (C) 2013, 2014 Santeri Piippo
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 #include "DocumentPointer.h"
20 #include "../Document.h"
21 #include "../Misc.h"
22
23 LDDocumentPointer::LDDocumentPointer() : m_Pointer (null) {}
24
25 // =============================================================================
26 // -----------------------------------------------------------------------------
27 LDDocumentPointer::LDDocumentPointer (LDDocument* ptr) :
28 m_Pointer (ptr)
29 {
30 addReference ();
31 }
32
33 // =============================================================================
34 // -----------------------------------------------------------------------------
35 LDDocumentPointer::LDDocumentPointer (const LDDocumentPointer& other) :
36 m_Pointer (other.getPointer())
37 {
38 addReference ();
39 }
40
41 // =============================================================================
42 // -----------------------------------------------------------------------------
43 LDDocumentPointer::~LDDocumentPointer()
44 {
45 removeReference();
46 }
47
48 // =============================================================================
49 // -----------------------------------------------------------------------------
50 void LDDocumentPointer::addReference()
51 {
52 if (getPointer() != null)
53 getPointer()->addReference (this);
54 }
55
56 // =============================================================================
57 // -----------------------------------------------------------------------------
58 void LDDocumentPointer::removeReference()
59 {
60 if (getPointer() != null)
61 getPointer()->removeReference (this);
62 }
63
64 // =============================================================================
65 // -----------------------------------------------------------------------------
66 LDDocumentPointer& LDDocumentPointer::operator= (LDDocument* ptr)
67 {
68 if (ptr != getPointer())
69 {
70 removeReference();
71 setPointer (ptr);
72 addReference();
73 }
74
75 return *this;
76 }

mercurial