diff options
Diffstat (limited to 'libs/python/pyste/tests/smart_ptr.h')
-rw-r--r-- | libs/python/pyste/tests/smart_ptr.h | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libs/python/pyste/tests/smart_ptr.h b/libs/python/pyste/tests/smart_ptr.h new file mode 100644 index 000000000..b230b9179 --- /dev/null +++ b/libs/python/pyste/tests/smart_ptr.h @@ -0,0 +1,50 @@ +/* Copyright Bruno da Silva de Oliveira 2003. Use, modification and + distribution is subject to the Boost Software License, Version 1.0. + (See accompanying file LICENSE_1_0.txt or copy at + http://www.boost.org/LICENSE_1_0.txt) + */ + +#ifndef SMART_PTR_H +#define SMART_PTR_H + + +#include <memory> +#include <boost/shared_ptr.hpp> + +namespace smart_ptr { + +struct C +{ + int value; +}; + +inline boost::shared_ptr<C> NewC() { return boost::shared_ptr<C>( new C() ); } + +struct D +{ + boost::shared_ptr<C> Get() { return ptr; } + void Set( boost::shared_ptr<C> c ) { ptr = c; } +private: + boost::shared_ptr<C> ptr; +}; + +inline std::auto_ptr<D> NewD() { return std::auto_ptr<D>( new D() ); } + + +// test an abstract class +struct A +{ + virtual int f() = 0; +}; + +struct B: A +{ + virtual int f(){ return 1; } +}; + +inline boost::shared_ptr<A> NewA() { return boost::shared_ptr<A>(new B()); } +inline int GetA(boost::shared_ptr<A> a) { return a->f(); } + +} + +#endif |