add OPENGL_CFLAGS to CPPFLAGS for OpenBSD
[gnash.git] / libbase / smart_ptr.h
blob6557236e97c5f2fae79c50457a460b7d3b76bf5a
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 #define COMPILER_SUPPORTS_ARGUMENT_DEPENDENT_LOOKUP 1
40 #ifdef COMPILER_SUPPORTS_ARGUMENT_DEPENDENT_LOOKUP
41 namespace gnash {
42 #else
43 namespace boost {
44 #endif
46 inline void
47 intrusive_ptr_add_ref(const ref_counted* o)
49 o->add_ref();
52 inline void
53 intrusive_ptr_release(const ref_counted* o)
55 o->drop_ref();
58 // These two should not be needed when we switch all GcResource
59 // pointers to use the gc_ptr instead of the intrusive_ptr
61 inline void intrusive_ptr_add_ref(const GcResource* ) { }
62 inline void intrusive_ptr_release(const GcResource* ) { }
64 } // namespace boost||gnash
67 #endif // SMART_PTR_H
70 // Local Variables:
71 // mode: C++
72 // c-basic-offset: 8
73 // tab-width: 8
74 // indent-tabs-mode: t
75 // End: