diff --git a/include/boost/numeric/ublas/documentation.hpp b/include/boost/numeric/ublas/documentation.hpp new file mode 100644 index 00000000..df2905d0 --- /dev/null +++ b/include/boost/numeric/ublas/documentation.hpp @@ -0,0 +1,37 @@ +// +// Copyright (c) 2000-2004 +// Joerg Walter, Mathias Koch and uBLAS developers +// +// Permission to use, copy, modify, distribute and sell this software +// and its documentation for any purpose is hereby granted without fee, +// provided that the above copyright notice appear in all copies and +// that both that copyright notice and this permission notice appear +// in supporting documentation. The authors make no representations +// about the suitability of this software for any purpose. +// It is provided "as is" without express or implied warranty. +// +// The authors gratefully acknowledge the support of +// GeNeSys mbH & Co. KG in producing this work. +// + +// this file should not contain any code, but the documentation +// global to all files + +/** \namespace boost::numeric::ublas + \brief contains all important classes and functions of uBLAS + + all ublas definitions ... + \todo expand this section + */ + +/** \defgroup blas1 Level 1 BLAS + \brief level 1 basic linear algebra subroutines +*/ + +/** \defgroup blas2 Level 2 BLAS + \brief level 2 basic linear algebra subroutines +*/ + +/** \defgroup blas3 Level 3 BLAS + \brief level 3 basic linear algebra subroutines +*/ diff --git a/include/boost/numeric/ublas/returntype_deduction.hpp b/include/boost/numeric/ublas/returntype_deduction.hpp new file mode 100644 index 00000000..de14d3d1 --- /dev/null +++ b/include/boost/numeric/ublas/returntype_deduction.hpp @@ -0,0 +1,171 @@ +/*============================================================================= + Copyright (c) 2001-2003 Joel de Guzman + + 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 BOOST_NUMERIC_UBLAS_NUMERICTYPE_DEDUCTION_IPP +#define BOOST_NUMERIC_UBLAS_NUMERICTYPE_DEDUCTION_IPP + +/* See original boost/utility/type_deduction.hpp for comments */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace boost { namespace numeric { namespace ublas { + +struct error_cant_deduce_type {}; + + namespace type_deduction_detail + { + typedef char(&bool_value_type)[1]; + typedef char(&float_value_type)[2]; + typedef char(&double_value_type)[3]; + typedef char(&long_double_value_type)[4]; + typedef char(&schar_value_type)[5]; + typedef char(&uchar_value_type)[6]; + typedef char(&short_value_type)[7]; + typedef char(&ushort_value_type)[8]; + typedef char(&int_value_type)[9]; + typedef char(&uint_value_type)[10]; + typedef char(&long_value_type)[11]; + typedef char(&ulong_value_type)[12]; + + typedef char(&x_value_type)[13]; + typedef char(&y_value_type)[14]; + + typedef char(&cant_deduce_type)[14]; + + template ::type> + struct is_basic + : mpl::or_< + typename mpl::or_< + is_same + , is_same + , is_same + , is_same + > ::type, + typename mpl::or_< + is_same + , is_same + , is_same + , is_same + > ::type, + typename mpl::or_< + is_same + , is_same + , is_same + , is_same + > ::type + > {}; + + struct asymmetric; + + template + cant_deduce_type + test(...); // The black hole !!! + + template + bool_value_type + test(bool const&); + + template + float_value_type + test(float const&); + + template + double_value_type + test(double const&); + + template + long_double_value_type + test(long double const&); + + template + schar_value_type + test(signed char const&); + + template + uchar_value_type + test(unsigned char const&); + + template + short_value_type + test(short const&); + + template + ushort_value_type + test(unsigned short const&); + + template + int_value_type + test(int const&); + + template + uint_value_type + test(unsigned int const&); + + template + long_value_type + test(long const&); + + template + ulong_value_type + test(unsigned long const&); + + template + typename disable_if< + mpl::or_, is_const > + , x_value_type + >::type + test(X const&); + + template + typename disable_if< + mpl::or_< + is_basic + , is_same + , is_const + , is_same + > + , y_value_type + >::type + test(Y const&); + + template + struct base_result_of + { + typedef typename remove_reference::type x_type; + typedef typename remove_reference::type y_type; + + typedef mpl::vector15< + mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + , mpl::identity + > + types; + }; + +}}} } // namespace boost::numeric::ublas ::type_deduction_detail + +#endif