test_value_wrapper.cpp 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // Copyright (c) 2005 Daniel Wallin and Arvid Norberg
  2. // Permission is hereby granted, free of charge, to any person obtaining a
  3. // copy of this software and associated documentation files (the "Software"),
  4. // to deal in the Software without restriction, including without limitation
  5. // the rights to use, copy, modify, merge, publish, distribute, sublicense,
  6. // and/or sell copies of the Software, and to permit persons to whom the
  7. // Software is furnished to do so, subject to the following conditions:
  8. // The above copyright notice and this permission notice shall be included
  9. // in all copies or substantial portions of the Software.
  10. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
  11. // ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  12. // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  13. // PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
  14. // SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR
  15. // ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
  16. // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  17. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
  18. // OR OTHER DEALINGS IN THE SOFTWARE.
  19. #include <luabind/value_wrapper.hpp>
  20. #include <luabind/object.hpp>
  21. #include <boost/mpl/assert.hpp>
  22. struct X_tag;
  23. struct X
  24. {
  25. typedef X_tag value_wrapper_tag;
  26. };
  27. namespace luabind
  28. {
  29. #ifdef LUABIND_USE_VALUE_WRAPPER_TAG
  30. template<>
  31. struct value_wrapper_traits<X_tag>
  32. {
  33. typedef boost::mpl::true_ is_specialized;
  34. };
  35. #else
  36. // used on compilers supporting partial template specialization
  37. template<>
  38. struct value_wrapper_traits<X>
  39. {
  40. typedef boost::mpl::true_ is_specialized;
  41. };
  42. #endif
  43. } // namespace luabind
  44. BOOST_MPL_ASSERT(( luabind::is_value_wrapper<X> ));
  45. BOOST_MPL_ASSERT_NOT(( luabind::is_value_wrapper<X&> ));
  46. BOOST_MPL_ASSERT_NOT(( luabind::is_value_wrapper<X const&> ));
  47. BOOST_MPL_ASSERT(( luabind::is_value_wrapper_arg<X> ));
  48. BOOST_MPL_ASSERT(( luabind::is_value_wrapper_arg<X const> ));
  49. BOOST_MPL_ASSERT(( luabind::is_value_wrapper_arg<X&> ));
  50. BOOST_MPL_ASSERT(( luabind::is_value_wrapper_arg<X const&> ));
  51. BOOST_MPL_ASSERT_NOT(( luabind::is_value_wrapper_arg<int> ));
  52. BOOST_MPL_ASSERT_NOT(( luabind::is_value_wrapper_arg<int[4]> ));
  53. BOOST_MPL_ASSERT(( luabind::is_value_wrapper_arg<X const&> ));
  54. BOOST_MPL_ASSERT(( luabind::is_value_wrapper_arg<luabind::object&> ));
  55. BOOST_MPL_ASSERT(( luabind::is_value_wrapper_arg<luabind::object const&> ));
  56. int main()
  57. {
  58. }