summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--raul/Array.hpp4
-rw-r--r--raul/Disposable.hpp44
-rw-r--r--raul/Maid.hpp43
-rw-r--r--raul/Manageable.hpp43
-rw-r--r--raul/SharedPtr.hpp37
-rw-r--r--raul/WeakPtr.hpp29
-rw-r--r--test/ptr_test.cpp30
-rw-r--r--wscript13
8 files changed, 35 insertions, 208 deletions
diff --git a/raul/Array.hpp b/raul/Array.hpp
index 485f3cf..5dab626 100644
--- a/raul/Array.hpp
+++ b/raul/Array.hpp
@@ -21,7 +21,7 @@
#include <cassert>
#include <cstddef>
-#include "raul/Disposable.hpp"
+#include "raul/Maid.hpp"
namespace Raul {
@@ -33,7 +33,7 @@ namespace Raul {
* \ingroup raul
*/
template <class T>
-class Array : public Disposable
+class Array : public Maid::Disposable
{
public:
explicit Array(size_t size = 0)
diff --git a/raul/Disposable.hpp b/raul/Disposable.hpp
deleted file mode 100644
index 7496921..0000000
--- a/raul/Disposable.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- This file is part of Raul.
- Copyright 2007-2012 David Robillard <http://drobilla.net>
-
- Raul 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 any later version.
-
- Raul 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 Raul. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef RAUL_DISPOSABLE_HPP
-#define RAUL_DISPOSABLE_HPP
-
-#include <stddef.h>
-
-#include "raul/Deletable.hpp"
-
-namespace Raul {
-
-class Maid;
-
-/** Something that can be collected by the Maid.
- *
- * \ingroup raul
- */
-class Disposable : public Deletable
-{
-public:
- Disposable() : _maid_next(NULL) {}
-
-private:
- friend class Maid;
- Disposable* _maid_next;
-};
-
-} // namespace Raul
-
-#endif // RAUL_DISPOSABLE_HPP
diff --git a/raul/Maid.hpp b/raul/Maid.hpp
index c64a1db..c1d76c1 100644
--- a/raul/Maid.hpp
+++ b/raul/Maid.hpp
@@ -18,11 +18,10 @@
#define RAUL_MAID_HPP
#include <atomic>
+#include <memory>
-#include "raul/Disposable.hpp"
-#include "raul/Manageable.hpp"
+#include "raul/Deletable.hpp"
#include "raul/Noncopyable.hpp"
-#include "raul/SharedPtr.hpp"
namespace Raul {
@@ -36,6 +35,26 @@ namespace Raul {
class Maid : public Noncopyable
{
public:
+ /** An object that can be managed by the maid using shared_ptr. */
+ class Manageable : public Deletable {
+ public:
+ Manageable() {}
+
+ private:
+ friend class Maid;
+ std::shared_ptr<Manageable> _maid_next;
+ };
+
+ /** An object that can be disposed via Maid::dispose(). */
+ class Disposable : public Deletable {
+ public:
+ Disposable() : _maid_next(NULL) {}
+
+ private:
+ friend class Maid;
+ Disposable* _maid_next;
+ };
+
Maid() : _disposed(NULL) {}
inline ~Maid() {
@@ -59,18 +78,18 @@ public:
}
}
- /** Manage an object held by a SharedPtr.
+ /** Manage an object held by a shared pointer.
*
* This will hold a reference to @p ptr ensuring it will not be deleted
- * except by cleanup(). This is mainly useful to allow dropping SharedPtr
- * references in real-time threads without causing a deletion.
+ * except by cleanup(). This is mainly useful to allow dropping references
+ * in real-time threads without causing a deletion.
*
* This is not thread-safe.
*
* Note this mechanism scales linearly. If a very large number of objects
* are managed cleanup() will become very expensive.
*/
- inline void manage(SharedPtr<Manageable> ptr) {
+ inline void manage(std::shared_ptr<Manageable> ptr) {
ptr->_maid_next = _managed;
_managed = ptr;
}
@@ -98,18 +117,18 @@ public:
}
// Free the managed list
- SharedPtr<Manageable> managed = _managed;
+ std::shared_ptr<Manageable> managed = _managed;
_managed.reset();
- for (SharedPtr<Manageable> obj = managed; obj;) {
- const SharedPtr<Manageable> next = obj->_maid_next;
+ for (std::shared_ptr<Manageable> obj = managed; obj;) {
+ const std::shared_ptr<Manageable> next = obj->_maid_next;
obj->_maid_next.reset();
obj = next;
}
}
private:
- std::atomic<Disposable*> _disposed;
- SharedPtr<Manageable> _managed;
+ std::atomic<Disposable*> _disposed;
+ std::shared_ptr<Manageable> _managed;
};
} // namespace Raul
diff --git a/raul/Manageable.hpp b/raul/Manageable.hpp
deleted file mode 100644
index 6b8b71f..0000000
--- a/raul/Manageable.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- This file is part of Raul.
- Copyright 2007-2012 David Robillard <http://drobilla.net>
-
- Raul 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 any later version.
-
- Raul 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 Raul. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef RAUL_MANAGEABLE_HPP
-#define RAUL_MANAGEABLE_HPP
-
-#include "raul/Deletable.hpp"
-#include "raul/SharedPtr.hpp"
-
-namespace Raul {
-
-class Maid;
-
-/** Something that can be managed by the Maid.
- *
- * \ingroup raul
- */
-class Manageable : public Deletable
-{
-public:
- Manageable() {}
-
-private:
- friend class Maid;
- SharedPtr<Manageable> _maid_next;
-};
-
-} // namespace Raul
-
-#endif // RAUL_MANAGEABLE_HPP
diff --git a/raul/SharedPtr.hpp b/raul/SharedPtr.hpp
deleted file mode 100644
index fdce5fa..0000000
--- a/raul/SharedPtr.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- This file is part of Raul.
- Copyright 2007-2012 David Robillard <http://drobilla.net>
-
- Raul 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 any later version.
-
- Raul 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 Raul. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef RAUL_SHARED_PTR_HPP
-#define RAUL_SHARED_PTR_HPP
-
-template <typename T> void NullDeleter(T* ptr) {}
-
-#ifdef RAUL_CPP0x
-# include <memory>
-# define SharedPtr std::shared_ptr
-# define PtrCast std::dynamic_pointer_cast
-#else
-# include <boost/shared_ptr.hpp>
-# ifdef BOOST_AC_USE_PTHREADS
-# error "Boost is using mutexes for shared_ptr reference counting."
-# error "This is VERY slow. Please report your platform to d@drobilla.net"
-# endif
-# define SharedPtr boost::shared_ptr
-# define PtrCast boost::dynamic_pointer_cast
-#endif
-
-#endif // RAUL_SHARED_PTR_HPP
-
diff --git a/raul/WeakPtr.hpp b/raul/WeakPtr.hpp
deleted file mode 100644
index 327b03d..0000000
--- a/raul/WeakPtr.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- This file is part of Raul.
- Copyright 2007-2012 David Robillard <http://drobilla.net>
-
- Raul 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 any later version.
-
- Raul 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 Raul. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef RAUL_WEAK_PTR_HPP
-#define RAUL_WEAK_PTR_HPP
-
-#ifdef RAUL_CPP0x
-# include <memory>
-# define WeakPtr std::weak_ptr
-#else
-# include <boost/weak_ptr.hpp>
-# define WeakPtr boost::weak_ptr
-#endif
-
-#endif // RAUL_WEAK_PTR_HPP
-
diff --git a/test/ptr_test.cpp b/test/ptr_test.cpp
deleted file mode 100644
index 22a1c2b..0000000
--- a/test/ptr_test.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- This file is part of Raul.
- Copyright 2007-2012 David Robillard <http://drobilla.net>
-
- Raul 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 any later version.
-
- Raul 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 Raul. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "raul/SharedPtr.hpp"
-#include "raul/WeakPtr.hpp"
-
-int
-main()
-{
- /* TODO: Actually test functionality... */
-
- SharedPtr<int> iptr;
- WeakPtr<int> wptr;
- wptr = iptr;
-
- return 0;
-}
diff --git a/wscript b/wscript
index a26c041..b0f9c4d 100644
--- a/wscript
+++ b/wscript
@@ -57,14 +57,8 @@ def configure(conf):
define_name='HAVE_GCOV',
mandatory=False)
- if Options.options.cpp0x:
- conf.env.append_value('CXXFLAGS', ['-std=c++0x'])
- autowaf.check_header(conf, 'cxx', 'memory')
- autowaf.check_header(conf, 'cxx', 'atomic')
- autowaf.define(conf, 'RAUL_CPP0x', 1)
- else:
- autowaf.check_header(conf, 'cxx', 'boost/shared_ptr.hpp')
- autowaf.check_header(conf, 'cxx', 'boost/weak_ptr.hpp')
+ autowaf.check_header(conf, 'cxx', 'memory')
+ autowaf.check_header(conf, 'cxx', 'atomic')
# TODO: Version includes and use autowaf.set_lib_env() here
conf.env['INCLUDES_RAUL'] = [os.path.abspath(top) + '/raul']
@@ -79,7 +73,6 @@ tests = '''
test/atom_test
test/double_buffer_test
test/path_test
- test/ptr_test
test/queue_test
test/ringbuffer_test
test/sem_test
@@ -124,8 +117,6 @@ def build(bld):
target = i,
install_path = '',
cxxflags = test_cxxflags)
- if bld.env.RAUL_CPP0x:
- obj.defines = ['RAUL_CPP0x']
# Documentation
autowaf.build_dox(bld, 'RAUL', RAUL_VERSION, top, out)