diff --git a/proj/vc7ide/intermodule_singleton_test.vcproj b/proj/vc7ide/intermodule_singleton_test.vcproj new file mode 100644 index 0000000..1326a3a --- /dev/null +++ b/proj/vc7ide/intermodule_singleton_test.vcproj @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/intermodule_singleton_test.cpp b/test/intermodule_singleton_test.cpp new file mode 100644 index 0000000..7a7a16e --- /dev/null +++ b/test/intermodule_singleton_test.cpp @@ -0,0 +1,93 @@ +////////////////////////////////////////////////////////////////////////////// +// +// (C) Copyright Ion Gaztanaga 2004-2009. Distributed under 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) +// +// See http://www.boost.org/libs/interprocess for documentation. +// +////////////////////////////////////////////////////////////////////////////// +#include +#include +#include + +using namespace boost::interprocess; + +class MyClass +{ + public: + MyClass() + { + std::cout << "Constructor\n"; + } + + void shout() const + { + std::cout << "Shout\n"; + } + + ~MyClass() + { + std::cout << "Destructor\n"; + } +}; + +class MyDerivedClass + : public MyClass +{}; + +class MyThrowingClass +{ + public: + MyThrowingClass() + { + throw int(0); + } +}; + + + +int main () +{ + bool exception_thrown = false; + bool exception_2_thrown = false; + try{ + detail::intermodule_singleton::get(); + } + catch(int &){ + exception_thrown = true; + //Second try + try{ + detail::intermodule_singleton::get(); + } + catch(interprocess_exception &){ + exception_2_thrown = true; + } + } + + if(!exception_thrown || !exception_2_thrown){ + return 1; + } + + MyClass & mc = detail::intermodule_singleton::get(); + mc.shout(); + detail::intermodule_singleton::get().shout(); + detail::intermodule_singleton::get().shout(); + + //Second try + exception_2_thrown = false; + try{ + detail::intermodule_singleton::get(); + } + catch(interprocess_exception &){ + exception_2_thrown = true; + } + if(!exception_2_thrown){ + return 1; + } + + return 0; +} + +#include + diff --git a/test/movable_int.hpp b/test/movable_int.hpp index 1026bdc..c58a883 100644 --- a/test/movable_int.hpp +++ b/test/movable_int.hpp @@ -79,7 +79,7 @@ std::basic_ostream & operator<< class movable_and_copyable_int { - BOOST_COPYABLE_AND_MOVABLE(movable_and_copyable_int) + BOOST_INTERPROCESS_COPYABLE_AND_MOVABLE(movable_and_copyable_int) public: movable_and_copyable_int()