src/misc/documentPointer.cc

changeset 584
12caa4e7b874
child 590
7aec744ce97b
equal deleted inserted replaced
583:4906c5c1670f 584:12caa4e7b874
1 /*
2 * LDForge: LDraw parts authoring CAD
3 * Copyright (C) 2013 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
22 LDDocumentPointer::LDDocumentPointer() : m_Pointer (null) {}
23
24
25 // =============================================================================
26 // -----------------------------------------------------------------------------
27 LDDocumentPointer::LDDocumentPointer (LDDocument* ptr) :
28 m_Pointer (ptr)
29 { addReference ();
30 }
31
32 // =============================================================================
33 // -----------------------------------------------------------------------------
34 LDDocumentPointer::LDDocumentPointer (const LDDocumentPointer& other) :
35 m_Pointer (other.getPointer())
36 { addReference ();
37 }
38
39 // =============================================================================
40 // -----------------------------------------------------------------------------
41 LDDocumentPointer::~LDDocumentPointer()
42 { removeReference();
43 }
44
45 // =============================================================================
46 // -----------------------------------------------------------------------------
47 void LDDocumentPointer::addReference()
48 { if (getPointer() != null)
49 getPointer()->addReference (this);
50 }
51
52 // =============================================================================
53 // -----------------------------------------------------------------------------
54 void LDDocumentPointer::removeReference()
55 { if (getPointer() != null)
56 getPointer()->removeReference (this);
57 }
58
59 // =============================================================================
60 // -----------------------------------------------------------------------------
61 LDDocumentPointer& LDDocumentPointer::operator= (LDDocument* ptr)
62 { if (ptr != getPointer())
63 { removeReference();
64 setPointer (ptr);
65 addReference();
66 }
67 }

mercurial