diff -r 3d8ab0f89102 -r 450827da2376 src/misc/DocumentPointer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/misc/DocumentPointer.h Tue Jan 21 02:09:14 2014 +0200 @@ -0,0 +1,58 @@ +/* + * LDForge: LDraw parts authoring CAD + * Copyright (C) 2013, 2014 Santeri Piippo + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef LDFORGE_DOCUMENT_POINTER_H +#define LDFORGE_DOCUMENT_POINTER_H + +#include "../Main.h" + +class LDSubfile; +class LDDocument; + +class LDDocumentPointer +{ + PROPERTY (private, LDDocument*, Pointer, NO_OPS, STOCK_WRITE) + + public: + LDDocumentPointer(); + LDDocumentPointer (LDDocument* ptr); + LDDocumentPointer (const LDDocumentPointer& other); + ~LDDocumentPointer(); + LDDocumentPointer& operator= (LDDocument* ptr); + + inline LDDocumentPointer& operator= (LDDocumentPointer& other) + { + return operator= (other.getPointer()); + } + + inline LDDocument* operator->() const + { + return getPointer(); + } + + inline operator LDDocument*() const + { + return getPointer(); + } + + private: + void addReference(); + void removeReference(); +}; + +#endif // LDFORGE_DOCUMENT_POINTER_H \ No newline at end of file