X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fstructure%2FSGSharedPtr.hxx;h=3afcfc9103bf69d6eff446c039899d74f07c1362;hb=9da0031039bb534011591ce3bd6fede21030c345;hp=aedd846353a2764cccb3513d6e9839b092dce016;hpb=247aa498499db8ef1081b047fa80d7bdb85fbd9c;p=simgear.git diff --git a/simgear/structure/SGSharedPtr.hxx b/simgear/structure/SGSharedPtr.hxx index aedd8463..3afcfc91 100644 --- a/simgear/structure/SGSharedPtr.hxx +++ b/simgear/structure/SGSharedPtr.hxx @@ -1,22 +1,21 @@ -/* -*-c++-*- - * - * Copyright (C) 2005-2012 Mathias Froehlich - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - */ +///@file +/// Pointer proxy doing reference counting. +// +// Copyright (C) 2005-2012 Mathias Froehlich +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Library General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library 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 +// Library General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. #ifndef SGSharedPtr_HXX #define SGSharedPtr_HXX @@ -24,11 +23,14 @@ #include "SGReferenced.hxx" #include +template +class SGWeakPtr; + /// This class is a pointer proxy doing reference counting on the object /// it is pointing to. /// The SGSharedPtr class handles reference counting and possible /// destruction if no nore references are in use automatically. -/// Classes derived from @SGReferenced can be handled with SGSharedPtr. +/// Classes derived from SGReferenced can be handled with SGSharedPtr. /// Once you have a SGSharedPtr available you can use it just like /// a usual pointer with the exception that you don't need to delete it. /// Such a reference is initialized by zero if not initialized with a @@ -43,9 +45,6 @@ /// pretty much the same than this one at /// http://dburns.dhs.org/OSG/Articles/RefPointers/RefPointers.html -template -class SGWeakPtr; - template class SGSharedPtr { public: @@ -60,6 +59,9 @@ public: template SGSharedPtr(const SGSharedPtr& p) : _ptr(p.get()) { get(_ptr); } + template + explicit SGSharedPtr(const SGWeakPtr& p): _ptr(0) + { reset(p.lock().get()); } ~SGSharedPtr(void) { reset(); }