Do not expect exact load timing. Hopefull makes buildbot results more stable (see...
[gnash.git] / libbase / smart_ptr.h
blob0cc108cc67f389555890bc4994688062b3baedd8
1 //
2 // Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Free Software
3 // Foundation, Inc
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, write to the Free Software
17 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 // Smart (ref-counting) pointer classes. Uses "intrusive" approach:
20 // the types pointed to must have add_ref() and drop_ref() methods.
21 // Typically this is done by inheriting from a ref_counted class,
22 // although the nice thing about templates is that no particular
23 // ref-counted class is mandated.
26 #ifndef SMART_PTR_H
27 #define SMART_PTR_H
29 #include "ref_counted.h"
31 // TODO: drop all users of this macro, we _are_ using GC now
32 #define GNASH_USE_GC 1
34 namespace gnash {
35 class GcResource;
39 namespace gnash {
41 inline void
42 intrusive_ptr_add_ref(const ref_counted* o)
44 o->add_ref();
47 inline void
48 intrusive_ptr_release(const ref_counted* o)
50 o->drop_ref();
53 // These two should not be needed when we switch all GcResource
54 // pointers to use the gc_ptr instead of the intrusive_ptr
56 inline void intrusive_ptr_add_ref(const GcResource* ) { }
57 inline void intrusive_ptr_release(const GcResource* ) { }
59 } // namespace boost||gnash
62 #endif // SMART_PTR_H
65 // Local Variables:
66 // mode: C++
67 // c-basic-offset: 8
68 // tab-width: 8
69 // indent-tabs-mode: t
70 // End: