Initial Commit
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// Copyright John Maddock 2006, 2007.
|
||||
// Copyright Paul A. Bristow 2006, 2007, 2009, 2010.
|
||||
|
||||
// Use, modification and distribution are 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)
|
||||
|
||||
// This file includes *all* the distributions.
|
||||
// this *may* be convenient if many are used
|
||||
// - to avoid including each distribution individually.
|
||||
|
||||
#ifndef BOOST_MATH_DISTRIBUTIONS_HPP
|
||||
#define BOOST_MATH_DISTRIBUTIONS_HPP
|
||||
|
||||
#include <boost/math/distributions/arcsine.hpp>
|
||||
#include <boost/math/distributions/bernoulli.hpp>
|
||||
#include <boost/math/distributions/beta.hpp>
|
||||
#include <boost/math/distributions/binomial.hpp>
|
||||
#include <boost/math/distributions/cauchy.hpp>
|
||||
#include <boost/math/distributions/chi_squared.hpp>
|
||||
#include <boost/math/distributions/complement.hpp>
|
||||
#include <boost/math/distributions/exponential.hpp>
|
||||
#include <boost/math/distributions/extreme_value.hpp>
|
||||
#include <boost/math/distributions/fisher_f.hpp>
|
||||
#include <boost/math/distributions/gamma.hpp>
|
||||
#include <boost/math/distributions/geometric.hpp>
|
||||
#include <boost/math/distributions/hyperexponential.hpp>
|
||||
#include <boost/math/distributions/hypergeometric.hpp>
|
||||
#include <boost/math/distributions/inverse_chi_squared.hpp>
|
||||
#include <boost/math/distributions/inverse_gamma.hpp>
|
||||
#include <boost/math/distributions/inverse_gaussian.hpp>
|
||||
#include <boost/math/distributions/laplace.hpp>
|
||||
#include <boost/math/distributions/logistic.hpp>
|
||||
#include <boost/math/distributions/lognormal.hpp>
|
||||
#include <boost/math/distributions/negative_binomial.hpp>
|
||||
#include <boost/math/distributions/non_central_chi_squared.hpp>
|
||||
#include <boost/math/distributions/non_central_beta.hpp>
|
||||
#include <boost/math/distributions/non_central_f.hpp>
|
||||
#include <boost/math/distributions/non_central_t.hpp>
|
||||
#include <boost/math/distributions/normal.hpp>
|
||||
#include <boost/math/distributions/pareto.hpp>
|
||||
#include <boost/math/distributions/poisson.hpp>
|
||||
#include <boost/math/distributions/rayleigh.hpp>
|
||||
#include <boost/math/distributions/skew_normal.hpp>
|
||||
#include <boost/math/distributions/students_t.hpp>
|
||||
#include <boost/math/distributions/triangular.hpp>
|
||||
#include <boost/math/distributions/uniform.hpp>
|
||||
#include <boost/math/distributions/weibull.hpp>
|
||||
#include <boost/math/distributions/find_scale.hpp>
|
||||
#include <boost/math/distributions/find_location.hpp>
|
||||
|
||||
#endif // BOOST_MATH_DISTRIBUTIONS_HPP
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
|
||||
#ifndef BOOST_MPL_MAP_AUX_ERASE_KEY_IMPL_HPP_INCLUDED
|
||||
#define BOOST_MPL_MAP_AUX_ERASE_KEY_IMPL_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2003-2004
|
||||
// Copyright David Abrahams 2003-2004
|
||||
//
|
||||
// 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/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/erase_key_fwd.hpp>
|
||||
#include <boost/mpl/map/aux_/has_key_impl.hpp>
|
||||
#include <boost/mpl/map/aux_/item.hpp>
|
||||
#include <boost/mpl/map/aux_/tag.hpp>
|
||||
#include <boost/mpl/identity.hpp>
|
||||
#include <boost/mpl/base.hpp>
|
||||
#include <boost/mpl/eval_if.hpp>
|
||||
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<>
|
||||
struct erase_key_impl< aux::map_tag >
|
||||
{
|
||||
template<
|
||||
typename Map
|
||||
, typename Key
|
||||
>
|
||||
struct apply
|
||||
: eval_if<
|
||||
has_key_impl<aux::map_tag>::apply<Map,Key>
|
||||
, eval_if<
|
||||
is_same< Key,typename Map::key_ >
|
||||
, base<Map>
|
||||
, identity< m_mask<Key,Map> >
|
||||
>
|
||||
, identity<Map>
|
||||
>
|
||||
{
|
||||
};
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_MAP_AUX_ERASE_KEY_IMPL_HPP_INCLUDED
|
||||
@@ -0,0 +1,55 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2014-2015 Kohei Takahashi
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#ifndef FUSION_MAKE_VECTOR_11112014_2252
|
||||
#define FUSION_MAKE_VECTOR_11112014_2252
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/container/vector/vector.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_VECTOR)
|
||||
# include <boost/fusion/container/generation/detail/pp_make_vector.hpp>
|
||||
#else
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic interface
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
#include <boost/type_traits/remove_const.hpp>
|
||||
#include <utility>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace result_of
|
||||
{
|
||||
template <typename ...T>
|
||||
struct make_vector
|
||||
{
|
||||
typedef vector<
|
||||
typename detail::as_fusion_element<
|
||||
typename remove_const<
|
||||
typename remove_reference<T>::type
|
||||
>::type
|
||||
>::type...
|
||||
> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename ...T>
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline typename result_of::make_vector<T...>::type
|
||||
make_vector(T&&... arg)
|
||||
{
|
||||
return typename result_of::make_vector<T...>::type(std::forward<T>(arg)...);
|
||||
}
|
||||
}}
|
||||
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
/*
|
||||
[auto_generated]
|
||||
boost/numeric/odeint/external/vexcl/vexcl_resize.hpp
|
||||
|
||||
[begin_description]
|
||||
Enable resizing for vexcl vector and multivector.
|
||||
[end_description]
|
||||
|
||||
Copyright 2012 Karsten Ahnert
|
||||
Copyright 2012 Mario Mulansky
|
||||
Copyright 2012 Denis Demidov
|
||||
|
||||
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)
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_RESIZE_HPP_INCLUDED
|
||||
#define BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_RESIZE_HPP_INCLUDED
|
||||
|
||||
#include <vexcl/vector.hpp>
|
||||
#include <vexcl/multivector.hpp>
|
||||
|
||||
#include <boost/numeric/odeint/util/is_resizeable.hpp>
|
||||
#include <boost/numeric/odeint/util/resize.hpp>
|
||||
#include <boost/numeric/odeint/util/same_size.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace numeric {
|
||||
namespace odeint {
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* specializations for vex::vector< T >
|
||||
*/
|
||||
template< typename T >
|
||||
struct is_resizeable< vex::vector< T > > : boost::true_type { };
|
||||
|
||||
template< typename T >
|
||||
struct resize_impl< vex::vector< T > , vex::vector< T > >
|
||||
{
|
||||
static void resize( vex::vector< T > &x1 , const vex::vector< T > &x2 )
|
||||
{
|
||||
x1.resize( x2.queue_list() , x2.size() );
|
||||
}
|
||||
};
|
||||
|
||||
template< typename T >
|
||||
struct same_size_impl< vex::vector< T > , vex::vector< T > >
|
||||
{
|
||||
static bool same_size( const vex::vector< T > &x1 , const vex::vector< T > &x2 )
|
||||
{
|
||||
return x1.size() == x2.size();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* specializations for vex::multivector< T >
|
||||
*/
|
||||
template< typename T , size_t N >
|
||||
struct is_resizeable< vex::multivector< T , N > > : boost::true_type { };
|
||||
|
||||
template< typename T , size_t N >
|
||||
struct resize_impl< vex::multivector< T , N > , vex::multivector< T , N > >
|
||||
{
|
||||
static void resize( vex::multivector< T , N > &x1 , const vex::multivector< T , N > &x2 )
|
||||
{
|
||||
x1.resize( x2.queue_list() , x2.size() );
|
||||
}
|
||||
};
|
||||
|
||||
template< typename T , size_t N >
|
||||
struct same_size_impl< vex::multivector< T , N > , vex::multivector< T , N > >
|
||||
{
|
||||
static bool same_size( const vex::multivector< T , N > &x1 , const vex::multivector< T , N > &x2 )
|
||||
{
|
||||
return x1.size() == x2.size();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // namespace odeint
|
||||
} // namespace numeric
|
||||
} // namespace boost
|
||||
|
||||
|
||||
|
||||
#endif // BOOST_NUMERIC_ODEINT_EXTERNAL_VEXCL_VEXCL_RESIZE_HPP_INCLUDED
|
||||
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
Copyright Rene Rivera 2008-2015
|
||||
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)
|
||||
*/
|
||||
|
||||
#ifndef BOOST_PREDEF_COMPILER_METAWARE_H
|
||||
#define BOOST_PREDEF_COMPILER_METAWARE_H
|
||||
|
||||
#include <boost/predef/version_number.h>
|
||||
#include <boost/predef/make.h>
|
||||
|
||||
/*`
|
||||
[heading `BOOST_COMP_HIGHC`]
|
||||
|
||||
MetaWare High C/C++ compiler.
|
||||
|
||||
[table
|
||||
[[__predef_symbol__] [__predef_version__]]
|
||||
|
||||
[[`__HIGHC__`] [__predef_detection__]]
|
||||
]
|
||||
*/
|
||||
|
||||
#define BOOST_COMP_HIGHC BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if defined(__HIGHC__)
|
||||
# define BOOST_COMP_HIGHC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
|
||||
#endif
|
||||
|
||||
#ifdef BOOST_COMP_HIGHC_DETECTION
|
||||
# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
|
||||
# define BOOST_COMP_HIGHC_EMULATED BOOST_COMP_HIGHC_DETECTION
|
||||
# else
|
||||
# undef BOOST_COMP_HIGHC
|
||||
# define BOOST_COMP_HIGHC BOOST_COMP_HIGHC_DETECTION
|
||||
# endif
|
||||
# define BOOST_COMP_HIGHC_AVAILABLE
|
||||
# include <boost/predef/detail/comp_detected.h>
|
||||
#endif
|
||||
|
||||
#define BOOST_COMP_HIGHC_NAME "MetaWare High C/C++"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HIGHC,BOOST_COMP_HIGHC_NAME)
|
||||
|
||||
#ifdef BOOST_COMP_HIGHC_EMULATED
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HIGHC_EMULATED,BOOST_COMP_HIGHC_NAME)
|
||||
#endif
|
||||
@@ -0,0 +1,63 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
|
||||
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)
|
||||
==============================================================================*/
|
||||
#if !defined(FUSION_ITERATOR_RANGE_05062005_1224)
|
||||
#define FUSION_ITERATOR_RANGE_05062005_1224
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/detail/access.hpp>
|
||||
#include <boost/fusion/support/sequence_base.hpp>
|
||||
#include <boost/fusion/support/category_of.hpp>
|
||||
#include <boost/fusion/iterator/distance.hpp>
|
||||
#include <boost/fusion/iterator/mpl/convert_iterator.hpp>
|
||||
#include <boost/fusion/view/iterator_range/detail/begin_impl.hpp>
|
||||
#include <boost/fusion/view/iterator_range/detail/end_impl.hpp>
|
||||
#include <boost/fusion/view/iterator_range/detail/at_impl.hpp>
|
||||
#include <boost/fusion/view/iterator_range/detail/size_impl.hpp>
|
||||
#include <boost/fusion/view/iterator_range/detail/value_at_impl.hpp>
|
||||
#include <boost/fusion/view/iterator_range/detail/is_segmented_impl.hpp>
|
||||
#include <boost/fusion/view/iterator_range/detail/segments_impl.hpp>
|
||||
#include <boost/fusion/adapted/mpl/mpl_iterator.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#if defined (BOOST_MSVC)
|
||||
# pragma warning(push)
|
||||
# pragma warning (disable: 4512) // assignment operator could not be generated.
|
||||
#endif
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct iterator_range_tag;
|
||||
struct fusion_sequence_tag;
|
||||
|
||||
template <typename First, typename Last>
|
||||
struct iterator_range : sequence_base<iterator_range<First, Last> >
|
||||
{
|
||||
typedef typename convert_iterator<First>::type begin_type;
|
||||
typedef typename convert_iterator<Last>::type end_type;
|
||||
typedef iterator_range_tag fusion_tag;
|
||||
typedef fusion_sequence_tag tag; // this gets picked up by MPL
|
||||
typedef mpl::true_ is_view;
|
||||
|
||||
typedef typename traits::category_of<begin_type>::type category;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
iterator_range(First const& in_first, Last const& in_last)
|
||||
: first(convert_iterator<First>::call(in_first))
|
||||
, last(convert_iterator<Last>::call(in_last)) {}
|
||||
|
||||
begin_type first;
|
||||
end_type last;
|
||||
};
|
||||
}}
|
||||
|
||||
#if defined (BOOST_MSVC)
|
||||
# pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,146 @@
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2000-2004
|
||||
//
|
||||
// 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)
|
||||
//
|
||||
|
||||
// *Preprocessed* version of the main "plus.hpp" header
|
||||
// -- DO NOT modify by hand!
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<
|
||||
typename Tag1
|
||||
, typename Tag2
|
||||
>
|
||||
struct plus_impl
|
||||
: if_c<
|
||||
( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
|
||||
> BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
|
||||
)
|
||||
|
||||
, aux::cast2nd_impl< plus_impl< Tag1,Tag1 >,Tag1, Tag2 >
|
||||
, aux::cast1st_impl< plus_impl< Tag2,Tag2 >,Tag1, Tag2 >
|
||||
>::type
|
||||
{
|
||||
};
|
||||
|
||||
/// for Digital Mars C++/compilers with no CTPS/TTP support
|
||||
template<> struct plus_impl< na,na >
|
||||
{
|
||||
template< typename U1, typename U2 > struct apply
|
||||
{
|
||||
typedef apply type;
|
||||
BOOST_STATIC_CONSTANT(int, value = 0);
|
||||
};
|
||||
};
|
||||
|
||||
template< typename Tag > struct plus_impl< na,Tag >
|
||||
{
|
||||
template< typename U1, typename U2 > struct apply
|
||||
{
|
||||
typedef apply type;
|
||||
BOOST_STATIC_CONSTANT(int, value = 0);
|
||||
};
|
||||
};
|
||||
|
||||
template< typename Tag > struct plus_impl< Tag,na >
|
||||
{
|
||||
template< typename U1, typename U2 > struct apply
|
||||
{
|
||||
typedef apply type;
|
||||
BOOST_STATIC_CONSTANT(int, value = 0);
|
||||
};
|
||||
};
|
||||
|
||||
template< typename T > struct plus_tag
|
||||
{
|
||||
typedef typename T::tag type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||
, typename N3 = na, typename N4 = na, typename N5 = na
|
||||
>
|
||||
struct plus
|
||||
: plus< plus< plus< plus< N1,N2 >, N3>, N4>, N5>
|
||||
{
|
||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(
|
||||
5
|
||||
, plus
|
||||
, ( N1, N2, N3, N4, N5 )
|
||||
)
|
||||
};
|
||||
|
||||
template<
|
||||
typename N1, typename N2, typename N3, typename N4
|
||||
>
|
||||
struct plus< N1,N2,N3,N4,na >
|
||||
|
||||
: plus< plus< plus< N1,N2 >, N3>, N4>
|
||||
{
|
||||
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||
5
|
||||
, plus
|
||||
, ( N1, N2, N3, N4, na )
|
||||
)
|
||||
};
|
||||
|
||||
template<
|
||||
typename N1, typename N2, typename N3
|
||||
>
|
||||
struct plus< N1,N2,N3,na,na >
|
||||
|
||||
: plus< plus< N1,N2 >, N3>
|
||||
{
|
||||
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||
5
|
||||
, plus
|
||||
, ( N1, N2, N3, na, na )
|
||||
)
|
||||
};
|
||||
|
||||
template<
|
||||
typename N1, typename N2
|
||||
>
|
||||
struct plus< N1,N2,na,na,na >
|
||||
: plus_impl<
|
||||
typename plus_tag<N1>::type
|
||||
, typename plus_tag<N2>::type
|
||||
>::template apply< N1,N2 >::type
|
||||
{
|
||||
BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(
|
||||
5
|
||||
, plus
|
||||
, ( N1, N2, na, na, na )
|
||||
)
|
||||
|
||||
};
|
||||
|
||||
BOOST_MPL_AUX_NA_SPEC2(2, 5, plus)
|
||||
|
||||
}}
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
template<>
|
||||
struct plus_impl< integral_c_tag,integral_c_tag >
|
||||
{
|
||||
template< typename N1, typename N2 > struct apply
|
||||
|
||||
: integral_c<
|
||||
typename aux::largest_int<
|
||||
typename N1::value_type
|
||||
, typename N2::value_type
|
||||
>::type
|
||||
, ( BOOST_MPL_AUX_VALUE_WKND(N1)::value
|
||||
+ BOOST_MPL_AUX_VALUE_WKND(N2)::value
|
||||
)
|
||||
>
|
||||
{
|
||||
};
|
||||
};
|
||||
|
||||
}}
|
||||
@@ -0,0 +1,51 @@
|
||||
# /* **************************************************************************
|
||||
# * *
|
||||
# * (C) Copyright Edward Diener 2014.
|
||||
# * 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 for most recent version. */
|
||||
#
|
||||
# ifndef BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP
|
||||
# define BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP
|
||||
|
||||
# include <boost/preprocessor/config/config.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS
|
||||
|
||||
#include <boost/preprocessor/punctuation/detail/is_begin_parens.hpp>
|
||||
|
||||
#if BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400
|
||||
|
||||
#define BOOST_PP_IS_BEGIN_PARENS(param) \
|
||||
BOOST_PP_DETAIL_IBP_SPLIT \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_DETAIL_IBP_CAT \
|
||||
( \
|
||||
BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_, \
|
||||
BOOST_PP_DETAIL_IBP_IS_VARIADIC_C param \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_PP_IS_BEGIN_PARENS(...) \
|
||||
BOOST_PP_DETAIL_IBP_SPLIT \
|
||||
( \
|
||||
0, \
|
||||
BOOST_PP_DETAIL_IBP_CAT \
|
||||
( \
|
||||
BOOST_PP_DETAIL_IBP_IS_VARIADIC_R_, \
|
||||
BOOST_PP_DETAIL_IBP_IS_VARIADIC_C __VA_ARGS__ \
|
||||
) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#endif /* BOOST_PP_VARIADICS_MSVC && _MSC_VER <= 1400 */
|
||||
#endif /* BOOST_PP_VARIADICS */
|
||||
#endif /* BOOST_PREPROCESSOR_IS_BEGIN_PARENS_HPP */
|
||||
@@ -0,0 +1,169 @@
|
||||
|
||||
#ifndef BOOST_MPL_MAP_AUX_ITERATOR_HPP_INCLUDED
|
||||
#define BOOST_MPL_MAP_AUX_ITERATOR_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2003-2004
|
||||
// Copyright David Abrahams 2003-2004
|
||||
//
|
||||
// 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/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/map/aux_/map0.hpp>
|
||||
#include <boost/mpl/map/aux_/at_impl.hpp>
|
||||
#include <boost/mpl/map/aux_/tag.hpp>
|
||||
#include <boost/mpl/iterator_tags.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
#include <boost/mpl/next.hpp>
|
||||
#include <boost/mpl/deref.hpp>
|
||||
#include <boost/mpl/long.hpp>
|
||||
#include <boost/mpl/void.hpp>
|
||||
#include <boost/mpl/aux_/nttp_decl.hpp>
|
||||
#include <boost/mpl/aux_/config/ctps.hpp>
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, long order
|
||||
, long max_order
|
||||
>
|
||||
struct next_order
|
||||
: if_<
|
||||
is_void_< typename item_by_order<Map,order>::type >
|
||||
, next_order<Map,(order+1),max_order>
|
||||
, long_<order>
|
||||
>::type
|
||||
{
|
||||
};
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, long max_order
|
||||
>
|
||||
struct next_order<Map,max_order,max_order>
|
||||
: long_<max_order>
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
template< typename Map, long order, long max_order >
|
||||
struct m_iter
|
||||
{
|
||||
typedef forward_iterator_tag category;
|
||||
typedef typename item_by_order<Map,order>::type type;
|
||||
};
|
||||
|
||||
template< typename Map, long max_order >
|
||||
struct m_iter<Map,max_order,max_order>
|
||||
{
|
||||
typedef forward_iterator_tag category;
|
||||
};
|
||||
|
||||
|
||||
template< typename Map, long order, long max_order >
|
||||
struct next< m_iter<Map,order,max_order> >
|
||||
{
|
||||
typedef m_iter<
|
||||
Map
|
||||
, next_order<Map,order+1,max_order>::value
|
||||
, max_order
|
||||
> type;
|
||||
};
|
||||
|
||||
template< typename Map, long max_order >
|
||||
struct next< m_iter<Map,max_order,max_order> >
|
||||
{
|
||||
};
|
||||
|
||||
#else
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, order)
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, max_order)
|
||||
>
|
||||
struct next_order;
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, order)
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, max_order)
|
||||
>
|
||||
struct next_order_impl
|
||||
: if_<
|
||||
is_void_< typename item_by_order<Map,order>::type >
|
||||
, next_order<Map,(order+1),max_order>
|
||||
, long_<order>
|
||||
>::type
|
||||
{
|
||||
};
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, order)
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, max_order)
|
||||
>
|
||||
struct next_order
|
||||
: if_c<
|
||||
(order != max_order)
|
||||
, next_order_impl<Map,order,max_order>
|
||||
, long_<order>
|
||||
>::type
|
||||
{
|
||||
};
|
||||
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, order)
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, max_order)
|
||||
>
|
||||
struct m_iter;
|
||||
|
||||
struct m_iter_empty_base {};
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, order)
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, max_order)
|
||||
>
|
||||
struct m_iter_base
|
||||
{
|
||||
typedef typename item_by_order<Map,order>::type type;
|
||||
|
||||
typedef m_iter<
|
||||
Map
|
||||
, next_order<Map,order+1,max_order>::value
|
||||
, max_order
|
||||
> next;
|
||||
};
|
||||
|
||||
template<
|
||||
typename Map
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, order)
|
||||
, BOOST_MPL_AUX_NTTP_DECL(long, max_order)
|
||||
>
|
||||
struct m_iter
|
||||
: if_c<
|
||||
(order == max_order)
|
||||
, m_iter_empty_base
|
||||
, m_iter_base<Map,order,max_order>
|
||||
>::type
|
||||
{
|
||||
typedef forward_iterator_tag category;
|
||||
};
|
||||
|
||||
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_MAP_AUX_ITERATOR_HPP_INCLUDED
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Reads an ADIF log file into memory
|
||||
* Searches log for call, band and mode
|
||||
* VK3ACF July 2013
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __ADIF_H
|
||||
#define __ADIF_H
|
||||
|
||||
#if defined (QT5)
|
||||
#include <QList>
|
||||
#include <QString>
|
||||
#include <QMultiHash>
|
||||
#else
|
||||
#include <QtGui>
|
||||
#endif
|
||||
|
||||
class QDateTime;
|
||||
|
||||
class ADIF
|
||||
{
|
||||
public:
|
||||
void init(QString const& filename);
|
||||
void load();
|
||||
void add(QString const& call, QString const& band, QString const& mode, QString const& date);
|
||||
bool match(QString const& call, QString const& band, QString const& mode) const;
|
||||
QList<QString> getCallList() const;
|
||||
int getCount() const;
|
||||
|
||||
// open ADIF file and append the QSO details. Return true on success
|
||||
bool addQSOToFile(QString const& hisCall, QString const& hisGrid, QString const& mode, QString const& rptSent, QString const& rptRcvd, QDateTime const& dateTimeOn, QDateTime const& dateTimeOff, QString const& band,
|
||||
QString const& comments, QString const& name, QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid, QString const& m_txPower);
|
||||
|
||||
private:
|
||||
struct QSO
|
||||
{
|
||||
QString call,band,mode,date;
|
||||
};
|
||||
|
||||
QMultiHash<QString, QSO> _data;
|
||||
QString _filename;
|
||||
|
||||
QString extractField(QString const& line, QString const& fieldName) const;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
subroutine lpf1(dd,jz,dat,jz2)
|
||||
|
||||
parameter (NFFT1=64*11025,NFFT2=32*11025)
|
||||
real dd(jz)
|
||||
real dat(jz)
|
||||
real x(NFFT1)
|
||||
complex cx(0:NFFT1/2)
|
||||
equivalence (x,cx)
|
||||
save x,cx
|
||||
|
||||
fac=1.0/float(NFFT1)
|
||||
x(1:jz)=fac*dd(1:jz)
|
||||
x(jz+1:NFFT1)=0.0
|
||||
call four2a(x,NFFT1,1,-1,0) !Forwarxd FFT, r2c
|
||||
cx(NFFT2/2:)=0.0
|
||||
|
||||
! df=11025.0/NFFT1
|
||||
! do i=1,NFFT1/2
|
||||
! sx=real(cx(i))**2 + aimag(cx(i))**2
|
||||
! write(50,3000) i*df,sx
|
||||
!3000 format(f15.6,e12.3)
|
||||
! enddo
|
||||
|
||||
call four2a(cx,NFFT2,1,1,-1) !Inverse FFT, c2r
|
||||
jz2=jz/2
|
||||
dat(1:jz2)=x(1:jz2)
|
||||
|
||||
return
|
||||
end subroutine lpf1
|
||||
@@ -0,0 +1,91 @@
|
||||
// Copyright (C) 2006 Douglas Gregor <doug.gregor -at- gmail.com>
|
||||
|
||||
// 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)
|
||||
|
||||
/** @file timer.hpp
|
||||
*
|
||||
* This header provides the @c timer class, which provides access to
|
||||
* the MPI timers.
|
||||
*/
|
||||
#ifndef BOOST_MPI_TIMER_HPP
|
||||
#define BOOST_MPI_TIMER_HPP
|
||||
|
||||
#include <boost/mpi/config.hpp>
|
||||
#include <boost/limits.hpp>
|
||||
|
||||
namespace boost { namespace mpi {
|
||||
|
||||
/** @brief A simple timer that provides access to the MPI timing
|
||||
* facilities.
|
||||
*
|
||||
* The @c timer class is a simple wrapper around the MPI timing
|
||||
* facilities that mimics the interface of the Boost Timer library.
|
||||
*/
|
||||
class BOOST_MPI_DECL timer {
|
||||
public:
|
||||
/** Initializes the timer
|
||||
*
|
||||
* @post @c elapsed() == 0
|
||||
*/
|
||||
timer();
|
||||
|
||||
/** Restart the timer.
|
||||
*
|
||||
* @post @c elapsed() == 0
|
||||
*/
|
||||
void restart();
|
||||
|
||||
/** Return the amount of time that has elapsed since the last
|
||||
* construction or reset, in seconds.
|
||||
*/
|
||||
double elapsed() const;
|
||||
|
||||
/** Return an estimate of the maximum possible value of
|
||||
* elapsed(). Note that this routine may return too high a value on
|
||||
* some systems.
|
||||
*/
|
||||
double elapsed_max() const;
|
||||
|
||||
/** Returns the minimum non-zero value that @c elapsed() may
|
||||
* return. This is the resolution of the timer.
|
||||
*/
|
||||
double elapsed_min() const;
|
||||
|
||||
/** Determines whether the elapsed time values are global times or
|
||||
local processor times. */
|
||||
static bool time_is_global();
|
||||
|
||||
private:
|
||||
double start_time;
|
||||
}; // timer
|
||||
|
||||
inline timer::timer()
|
||||
{
|
||||
restart();
|
||||
}
|
||||
|
||||
inline void timer::restart()
|
||||
{
|
||||
start_time = MPI_Wtime();
|
||||
}
|
||||
|
||||
inline double timer::elapsed() const
|
||||
{
|
||||
return MPI_Wtime() - start_time;
|
||||
}
|
||||
|
||||
inline double timer::elapsed_max() const
|
||||
{
|
||||
return (std::numeric_limits<double>::max)();
|
||||
}
|
||||
|
||||
inline double timer::elapsed_min() const
|
||||
{
|
||||
return MPI_Wtick();
|
||||
}
|
||||
|
||||
} } // end namespace boost::mpi
|
||||
|
||||
#endif // BOOST_MPI_TIMER_HPP
|
||||
@@ -0,0 +1,96 @@
|
||||
// (C) Copyright John Maddock 2007.
|
||||
// Use, modification and distribution are 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)
|
||||
//
|
||||
// This file is machine generated, do not edit by hand
|
||||
|
||||
// Polynomial evaluation using second order Horners rule
|
||||
#ifndef BOOST_MATH_TOOLS_RAT_EVAL_7_HPP
|
||||
#define BOOST_MATH_TOOLS_RAT_EVAL_7_HPP
|
||||
|
||||
namespace boost{ namespace math{ namespace tools{ namespace detail{
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T*, const U*, const V&, const mpl::int_<0>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
return static_cast<V>(0);
|
||||
}
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T* a, const U* b, const V&, const mpl::int_<1>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
return static_cast<V>(a[0]) / static_cast<V>(b[0]);
|
||||
}
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<2>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
return static_cast<V>((a[1] * x + a[0]) / (b[1] * x + b[0]));
|
||||
}
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<3>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
return static_cast<V>(((a[2] * x + a[1]) * x + a[0]) / ((b[2] * x + b[1]) * x + b[0]));
|
||||
}
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<4>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
return static_cast<V>((((a[3] * x + a[2]) * x + a[1]) * x + a[0]) / (((b[3] * x + b[2]) * x + b[1]) * x + b[0]));
|
||||
}
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<5>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
if(x <= 1)
|
||||
{
|
||||
V x2 = x * x;
|
||||
return static_cast<V>(((a[4] * x2 + a[2]) * x2 + a[0] + (a[3] * x2 + a[1]) * x) / ((b[4] * x2 + b[2]) * x2 + b[0] + (b[3] * x2 + b[1]) * x));
|
||||
}
|
||||
else
|
||||
{
|
||||
V z = 1 / x;
|
||||
V z2 = 1 / (x * x);
|
||||
return static_cast<V>(((a[0] * z2 + a[2]) * z2 + a[4] + (a[1] * z2 + a[3]) * z) / ((b[0] * z2 + b[2]) * z2 + b[4] + (b[1] * z2 + b[3]) * z));
|
||||
}
|
||||
}
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<6>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
if(x <= 1)
|
||||
{
|
||||
V x2 = x * x;
|
||||
return static_cast<V>((((a[5] * x2 + a[3]) * x2 + a[1]) * x + (a[4] * x2 + a[2]) * x2 + a[0]) / (((b[5] * x2 + b[3]) * x2 + b[1]) * x + (b[4] * x2 + b[2]) * x2 + b[0]));
|
||||
}
|
||||
else
|
||||
{
|
||||
V z = 1 / x;
|
||||
V z2 = 1 / (x * x);
|
||||
return static_cast<V>((((a[0] * z2 + a[2]) * z2 + a[4]) * z + (a[1] * z2 + a[3]) * z2 + a[5]) / (((b[0] * z2 + b[2]) * z2 + b[4]) * z + (b[1] * z2 + b[3]) * z2 + b[5]));
|
||||
}
|
||||
}
|
||||
|
||||
template <class T, class U, class V>
|
||||
inline V evaluate_rational_c_imp(const T* a, const U* b, const V& x, const mpl::int_<7>*) BOOST_MATH_NOEXCEPT(V)
|
||||
{
|
||||
if(x <= 1)
|
||||
{
|
||||
V x2 = x * x;
|
||||
return static_cast<V>((((a[6] * x2 + a[4]) * x2 + a[2]) * x2 + a[0] + ((a[5] * x2 + a[3]) * x2 + a[1]) * x) / (((b[6] * x2 + b[4]) * x2 + b[2]) * x2 + b[0] + ((b[5] * x2 + b[3]) * x2 + b[1]) * x));
|
||||
}
|
||||
else
|
||||
{
|
||||
V z = 1 / x;
|
||||
V z2 = 1 / (x * x);
|
||||
return static_cast<V>((((a[0] * z2 + a[2]) * z2 + a[4]) * z2 + a[6] + ((a[1] * z2 + a[3]) * z2 + a[5]) * z) / (((b[0] * z2 + b[2]) * z2 + b[4]) * z2 + b[6] + ((b[1] * z2 + b[3]) * z2 + b[5]) * z));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}}}} // namespaces
|
||||
|
||||
#endif // include guard
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
# /* **************************************************************************
|
||||
# * *
|
||||
# * (C) Copyright Paul Mensonides 2002.
|
||||
# * 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 for most recent version. */
|
||||
#
|
||||
# ifndef BOOST_PREPROCESSOR_ARRAY_DATA_HPP
|
||||
# define BOOST_PREPROCESSOR_ARRAY_DATA_HPP
|
||||
#
|
||||
# include <boost/preprocessor/config/config.hpp>
|
||||
# include <boost/preprocessor/tuple/elem.hpp>
|
||||
#
|
||||
# /* BOOST_PP_ARRAY_DATA */
|
||||
#
|
||||
# if ~BOOST_PP_CONFIG_FLAGS() & BOOST_PP_CONFIG_EDG()
|
||||
# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_TUPLE_ELEM(2, 1, array)
|
||||
# else
|
||||
# define BOOST_PP_ARRAY_DATA(array) BOOST_PP_ARRAY_DATA_I(array)
|
||||
# define BOOST_PP_ARRAY_DATA_I(array) BOOST_PP_ARRAY_DATA_II array
|
||||
# define BOOST_PP_ARRAY_DATA_II(size, data) data
|
||||
# endif
|
||||
#
|
||||
# endif
|
||||
@@ -0,0 +1,157 @@
|
||||
|
||||
// Copyright 2005-2011 Daniel James.
|
||||
// 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)
|
||||
|
||||
// Note: if you change this include guard, you also need to change
|
||||
// container_fwd_compile_fail.cpp
|
||||
#if !defined(BOOST_DETAIL_CONTAINER_FWD_HPP)
|
||||
#define BOOST_DETAIL_CONTAINER_FWD_HPP
|
||||
|
||||
#if defined(_MSC_VER) && \
|
||||
!defined(BOOST_DETAIL_TEST_CONFIG_ONLY)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// //
|
||||
// Define BOOST_DETAIL_NO_CONTAINER_FWD if you don't want this header to //
|
||||
// forward declare standard containers. //
|
||||
// //
|
||||
// BOOST_DETAIL_CONTAINER_FWD to make it foward declare containers even if it //
|
||||
// normally doesn't. //
|
||||
// //
|
||||
// BOOST_DETAIL_NO_CONTAINER_FWD overrides BOOST_DETAIL_CONTAINER_FWD. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(BOOST_DETAIL_NO_CONTAINER_FWD)
|
||||
# if defined(BOOST_DETAIL_CONTAINER_FWD)
|
||||
// Force forward declarations.
|
||||
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||
// STLport
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# elif defined(__LIBCOMO__)
|
||||
// Comeau STL:
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
|
||||
// Rogue Wave library:
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# elif defined(_LIBCPP_VERSION)
|
||||
// libc++
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
|
||||
// GNU libstdc++ 3
|
||||
//
|
||||
// Disable forwarding for all recent versions, as the library has a
|
||||
// versioned namespace mode, and I don't know how to detect it.
|
||||
# if __GLIBCXX__ >= 20070513 \
|
||||
|| defined(_GLIBCXX_DEBUG) \
|
||||
|| defined(_GLIBCXX_PARALLEL) \
|
||||
|| defined(_GLIBCXX_PROFILE)
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# else
|
||||
# if defined(__GLIBCXX__) && __GLIBCXX__ >= 20040530
|
||||
# define BOOST_CONTAINER_FWD_COMPLEX_STRUCT
|
||||
# endif
|
||||
# endif
|
||||
# elif defined(__STL_CONFIG_H)
|
||||
// generic SGI STL
|
||||
//
|
||||
// Forward declaration seems to be okay, but it has a couple of odd
|
||||
// implementations.
|
||||
# define BOOST_CONTAINER_FWD_BAD_BITSET
|
||||
# if !defined(__STL_NON_TYPE_TMPL_PARAM_BUG)
|
||||
# define BOOST_CONTAINER_FWD_BAD_DEQUE
|
||||
# endif
|
||||
# elif defined(__MSL_CPP__)
|
||||
// MSL standard lib:
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# elif defined(__IBMCPP__)
|
||||
// The default VACPP std lib, forward declaration seems to be fine.
|
||||
# elif defined(MSIPL_COMPILE_H)
|
||||
// Modena C++ standard library
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
|
||||
// Dinkumware Library (this has to appear after any possible replacement
|
||||
// libraries)
|
||||
# else
|
||||
# define BOOST_DETAIL_NO_CONTAINER_FWD
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_DETAIL_TEST_CONFIG_ONLY)
|
||||
|
||||
#if defined(BOOST_DETAIL_NO_CONTAINER_FWD) && \
|
||||
!defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD)
|
||||
|
||||
#include <deque>
|
||||
#include <list>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <bitset>
|
||||
#include <string>
|
||||
#include <complex>
|
||||
|
||||
#else
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
#if defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
|
||||
#include <deque>
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_CONTAINER_FWD_BAD_BITSET)
|
||||
#include <bitset>
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_MSVC)
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4099) // struct/class mismatch in fwd declarations
|
||||
#endif
|
||||
|
||||
namespace std
|
||||
{
|
||||
template <class T> class allocator;
|
||||
template <class charT, class traits, class Allocator> class basic_string;
|
||||
|
||||
template <class charT> struct char_traits;
|
||||
|
||||
#if defined(BOOST_CONTAINER_FWD_COMPLEX_STRUCT)
|
||||
template <class T> struct complex;
|
||||
#else
|
||||
template <class T> class complex;
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE)
|
||||
template <class T, class Allocator> class deque;
|
||||
#endif
|
||||
|
||||
template <class T, class Allocator> class list;
|
||||
template <class T, class Allocator> class vector;
|
||||
template <class Key, class T, class Compare, class Allocator> class map;
|
||||
template <class Key, class T, class Compare, class Allocator>
|
||||
class multimap;
|
||||
template <class Key, class Compare, class Allocator> class set;
|
||||
template <class Key, class Compare, class Allocator> class multiset;
|
||||
|
||||
#if !defined(BOOST_CONTAINER_FWD_BAD_BITSET)
|
||||
template <size_t N> class bitset;
|
||||
#endif
|
||||
template <class T1, class T2> struct pair;
|
||||
}
|
||||
|
||||
#if defined(BOOST_MSVC)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_DETAIL_NO_CONTAINER_FWD &&
|
||||
// !defined(BOOST_DETAIL_TEST_FORCE_CONTAINER_FWD)
|
||||
|
||||
#endif // BOOST_DETAIL_TEST_CONFIG_ONLY
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,142 @@
|
||||
#ifndef BOOST_SERIALIZATION_MAP_HPP
|
||||
#define BOOST_SERIALIZATION_MAP_HPP
|
||||
|
||||
// MS compatible compilers support #pragma once
|
||||
#if defined(_MSC_VER)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
|
||||
// serialization/map.hpp:
|
||||
// serialization for stl map templates
|
||||
|
||||
// (C) Copyright 2002-2014 Robert Ramey - http://www.rrsd.com .
|
||||
// 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)
|
||||
|
||||
// See http://www.boost.org for updates, documentation, and revision history.
|
||||
|
||||
#include <map>
|
||||
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#include <boost/archive/detail/basic_iarchive.hpp>
|
||||
#include <boost/serialization/access.hpp>
|
||||
#include <boost/serialization/nvp.hpp>
|
||||
#include <boost/serialization/collection_size_type.hpp>
|
||||
#include <boost/serialization/item_version_type.hpp>
|
||||
#include <boost/serialization/detail/stack_constructor.hpp>
|
||||
|
||||
#include <boost/serialization/utility.hpp>
|
||||
#include <boost/serialization/collections_save_imp.hpp>
|
||||
#include <boost/serialization/split_free.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace serialization {
|
||||
|
||||
////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
|
||||
// implementation of serialization for map and mult-map STL containers
|
||||
|
||||
template<class Archive, class Container>
|
||||
inline void load_map_collection(Archive & ar, Container &s)
|
||||
{
|
||||
s.clear();
|
||||
const boost::archive::library_version_type library_version(
|
||||
ar.get_library_version()
|
||||
);
|
||||
// retrieve number of elements
|
||||
item_version_type item_version(0);
|
||||
collection_size_type count;
|
||||
ar >> BOOST_SERIALIZATION_NVP(count);
|
||||
if(boost::archive::library_version_type(3) < library_version){
|
||||
ar >> BOOST_SERIALIZATION_NVP(item_version);
|
||||
}
|
||||
typename Container::iterator hint;
|
||||
hint = s.begin();
|
||||
while(count-- > 0){
|
||||
typedef typename Container::value_type type;
|
||||
detail::stack_construct<Archive, type> t(ar, item_version);
|
||||
ar >> boost::serialization::make_nvp("item", t.reference());
|
||||
typename Container::iterator result =
|
||||
#ifdef BOOST_NO_CXX11_HDR_UNORDERED_MAP
|
||||
s.insert(hint, t.reference());
|
||||
#else
|
||||
s.emplace_hint(hint, t.reference());
|
||||
#endif
|
||||
ar.reset_object_address(& (result->second), & t.reference().second);
|
||||
hint = result;
|
||||
++hint;
|
||||
}
|
||||
}
|
||||
|
||||
// map
|
||||
template<class Archive, class Type, class Key, class Compare, class Allocator >
|
||||
inline void save(
|
||||
Archive & ar,
|
||||
const std::map<Key, Type, Compare, Allocator> &t,
|
||||
const unsigned int /* file_version */
|
||||
){
|
||||
boost::serialization::stl::save_collection<
|
||||
Archive,
|
||||
std::map<Key, Type, Compare, Allocator>
|
||||
>(ar, t);
|
||||
}
|
||||
|
||||
template<class Archive, class Type, class Key, class Compare, class Allocator >
|
||||
inline void load(
|
||||
Archive & ar,
|
||||
std::map<Key, Type, Compare, Allocator> &t,
|
||||
const unsigned int /* file_version */
|
||||
){
|
||||
load_map_collection(ar, t);
|
||||
}
|
||||
|
||||
// split non-intrusive serialization function member into separate
|
||||
// non intrusive save/load member functions
|
||||
template<class Archive, class Type, class Key, class Compare, class Allocator >
|
||||
inline void serialize(
|
||||
Archive & ar,
|
||||
std::map<Key, Type, Compare, Allocator> &t,
|
||||
const unsigned int file_version
|
||||
){
|
||||
boost::serialization::split_free(ar, t, file_version);
|
||||
}
|
||||
|
||||
// multimap
|
||||
template<class Archive, class Type, class Key, class Compare, class Allocator >
|
||||
inline void save(
|
||||
Archive & ar,
|
||||
const std::multimap<Key, Type, Compare, Allocator> &t,
|
||||
const unsigned int /* file_version */
|
||||
){
|
||||
boost::serialization::stl::save_collection<
|
||||
Archive,
|
||||
std::multimap<Key, Type, Compare, Allocator>
|
||||
>(ar, t);
|
||||
}
|
||||
|
||||
template<class Archive, class Type, class Key, class Compare, class Allocator >
|
||||
inline void load(
|
||||
Archive & ar,
|
||||
std::multimap<Key, Type, Compare, Allocator> &t,
|
||||
const unsigned int /* file_version */
|
||||
){
|
||||
load_map_collection(ar, t);
|
||||
}
|
||||
|
||||
// split non-intrusive serialization function member into separate
|
||||
// non intrusive save/load member functions
|
||||
template<class Archive, class Type, class Key, class Compare, class Allocator >
|
||||
inline void serialize(
|
||||
Archive & ar,
|
||||
std::multimap<Key, Type, Compare, Allocator> &t,
|
||||
const unsigned int file_version
|
||||
){
|
||||
boost::serialization::split_free(ar, t, file_version);
|
||||
}
|
||||
|
||||
} // serialization
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_SERIALIZATION_MAP_HPP
|
||||
@@ -0,0 +1,48 @@
|
||||
// (C) Copyright John Maddock 2006.
|
||||
// Use, modification and distribution are 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_MATH_SQRT1PM1
|
||||
#define BOOST_MATH_SQRT1PM1
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include <boost/math/special_functions/math_fwd.hpp>
|
||||
#include <boost/math/special_functions/log1p.hpp>
|
||||
#include <boost/math/special_functions/expm1.hpp>
|
||||
|
||||
//
|
||||
// This algorithm computes sqrt(1+x)-1 for small x:
|
||||
//
|
||||
|
||||
namespace boost{ namespace math{
|
||||
|
||||
template <class T, class Policy>
|
||||
inline typename tools::promote_args<T>::type sqrt1pm1(const T& val, const Policy& pol)
|
||||
{
|
||||
typedef typename tools::promote_args<T>::type result_type;
|
||||
BOOST_MATH_STD_USING
|
||||
|
||||
if(fabs(result_type(val)) > 0.75)
|
||||
return sqrt(1 + result_type(val)) - 1;
|
||||
return boost::math::expm1(boost::math::log1p(val, pol) / 2, pol);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
inline typename tools::promote_args<T>::type sqrt1pm1(const T& val)
|
||||
{
|
||||
return sqrt1pm1(val, policies::policy<>());
|
||||
}
|
||||
|
||||
} // namespace math
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_MATH_SQRT1PM1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,155 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2012-2016.
|
||||
// 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/move for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! \file
|
||||
|
||||
#ifndef BOOST_MOVE_ALGO_MOVE_HPP
|
||||
#define BOOST_MOVE_ALGO_MOVE_HPP
|
||||
|
||||
#ifndef BOOST_CONFIG_HPP
|
||||
# include <boost/config.hpp>
|
||||
#endif
|
||||
#
|
||||
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
#include <boost/move/detail/config_begin.hpp>
|
||||
|
||||
#include <boost/move/utility_core.hpp>
|
||||
#include <boost/move/detail/iterator_traits.hpp>
|
||||
#include <boost/detail/no_exceptions_support.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// move
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#if !defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE)
|
||||
|
||||
//! <b>Effects</b>: Moves elements in the range [first,last) into the range [result,result + (last -
|
||||
//! first)) starting from first and proceeding to last. For each non-negative integer n < (last-first),
|
||||
//! performs *(result + n) = ::boost::move (*(first + n)).
|
||||
//!
|
||||
//! <b>Effects</b>: result + (last - first).
|
||||
//!
|
||||
//! <b>Requires</b>: result shall not be in the range [first,last).
|
||||
//!
|
||||
//! <b>Complexity</b>: Exactly last - first move assignments.
|
||||
template <typename I, // I models InputIterator
|
||||
typename O> // O models OutputIterator
|
||||
O move(I f, I l, O result)
|
||||
{
|
||||
while (f != l) {
|
||||
*result = ::boost::move(*f);
|
||||
++f; ++result;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// move_backward
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! <b>Effects</b>: Moves elements in the range [first,last) into the range
|
||||
//! [result - (last-first),result) starting from last - 1 and proceeding to
|
||||
//! first. For each positive integer n <= (last - first),
|
||||
//! performs *(result - n) = ::boost::move(*(last - n)).
|
||||
//!
|
||||
//! <b>Requires</b>: result shall not be in the range [first,last).
|
||||
//!
|
||||
//! <b>Returns</b>: result - (last - first).
|
||||
//!
|
||||
//! <b>Complexity</b>: Exactly last - first assignments.
|
||||
template <typename I, // I models BidirectionalIterator
|
||||
typename O> // O models BidirectionalIterator
|
||||
O move_backward(I f, I l, O result)
|
||||
{
|
||||
while (f != l) {
|
||||
--l; --result;
|
||||
*result = ::boost::move(*l);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
using ::std::move_backward;
|
||||
|
||||
#endif //!defined(BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE)
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// uninitialized_move
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//! <b>Effects</b>:
|
||||
//! \code
|
||||
//! for (; first != last; ++result, ++first)
|
||||
//! new (static_cast<void*>(&*result))
|
||||
//! typename iterator_traits<ForwardIterator>::value_type(boost::move(*first));
|
||||
//! \endcode
|
||||
//!
|
||||
//! <b>Returns</b>: result
|
||||
template
|
||||
<typename I, // I models InputIterator
|
||||
typename F> // F models ForwardIterator
|
||||
F uninitialized_move(I f, I l, F r
|
||||
/// @cond
|
||||
// ,typename ::boost::move_detail::enable_if<has_move_emulation_enabled<typename boost::movelib::iterator_traits<I>::value_type> >::type* = 0
|
||||
/// @endcond
|
||||
)
|
||||
{
|
||||
typedef typename boost::movelib::iterator_traits<I>::value_type input_value_type;
|
||||
|
||||
F back = r;
|
||||
BOOST_TRY{
|
||||
while (f != l) {
|
||||
void * const addr = static_cast<void*>(::boost::move_detail::addressof(*r));
|
||||
::new(addr) input_value_type(::boost::move(*f));
|
||||
++f; ++r;
|
||||
}
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
for (; back != r; ++back){
|
||||
back->~input_value_type();
|
||||
}
|
||||
BOOST_RETHROW;
|
||||
}
|
||||
BOOST_CATCH_END
|
||||
return r;
|
||||
}
|
||||
|
||||
/// @cond
|
||||
/*
|
||||
template
|
||||
<typename I, // I models InputIterator
|
||||
typename F> // F models ForwardIterator
|
||||
F uninitialized_move(I f, I l, F r,
|
||||
typename ::boost::move_detail::disable_if<has_move_emulation_enabled<typename boost::movelib::iterator_traits<I>::value_type> >::type* = 0)
|
||||
{
|
||||
return std::uninitialized_copy(f, l, r);
|
||||
}
|
||||
*/
|
||||
|
||||
/// @endcond
|
||||
|
||||
} //namespace boost {
|
||||
|
||||
#include <boost/move/detail/config_end.hpp>
|
||||
|
||||
#endif //#ifndef BOOST_MOVE_ALGO_MOVE_HPP
|
||||
@@ -0,0 +1,237 @@
|
||||
#include "CyclesOfGraph.h"
|
||||
|
||||
NodesOfGraph::NodesOfGraph(void) { parityConnections=NULL;symbolConnections=NULL;
|
||||
}
|
||||
NodesOfGraph::~NodesOfGraph(void) {
|
||||
delete [] parityConnections;
|
||||
delete [] symbolConnections;
|
||||
delete [] symbolMapping;
|
||||
|
||||
}
|
||||
|
||||
void NodesOfGraph::setParityConnections(int num, int *value) {
|
||||
numOfParityConnections=num;
|
||||
parityConnections=new int[num];
|
||||
for(int i=0;i<numOfParityConnections;i++){
|
||||
parityConnections[i]=value[i];
|
||||
//cout<<parityConnections[i]<<" ";
|
||||
}
|
||||
//cout<<endl;
|
||||
}
|
||||
void NodesOfGraph::setSymbolConnections(int num, int *value) {
|
||||
numOfSymbolConnections=num;
|
||||
symbolConnections=new int[num];
|
||||
for(int i=0;i<numOfSymbolConnections;i++){
|
||||
symbolConnections[i]=value[i];
|
||||
//cout<<symbolConnections[i]<<" ";
|
||||
}
|
||||
//cout<<endl;
|
||||
}
|
||||
void NodesOfGraph::setSymbolMapping(int num, int *value) {
|
||||
numOfSymbolMapping=num;
|
||||
//cout<<num<<endl;
|
||||
symbolMapping=new int[num];
|
||||
for(int i=0;i<numOfSymbolMapping;i++){
|
||||
symbolMapping[i]=value[i];
|
||||
//cout<<symbolMapping[i]<<" ";
|
||||
}
|
||||
//cout<<endl;
|
||||
}
|
||||
|
||||
CyclesOfGraph::CyclesOfGraph(int mm, int n, int *(*h)){
|
||||
int i, j, k, m, index;
|
||||
M=mm;
|
||||
N=n;
|
||||
H=h;
|
||||
|
||||
tmp=new int [N];
|
||||
med=new int [N];
|
||||
tmpCycles=new int [N];
|
||||
cyclesTable=new int [N];
|
||||
nodesOfGraph=new NodesOfGraph [N];
|
||||
|
||||
//cout<<M<<" "<<N<<endl;
|
||||
/*
|
||||
for(i=0;i<M;i++){
|
||||
for(j=0;j<N;j++)
|
||||
cout<<H[i][j]<<" ";
|
||||
cout<<endl;
|
||||
}
|
||||
*/
|
||||
for(i=0;i<N;i++){
|
||||
index=0;
|
||||
for(j=0;j<M;j++){
|
||||
if(H[j][i]==1){
|
||||
tmp[index]=j;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
nodesOfGraph[i].setSymbolConnections(index, tmp);
|
||||
}
|
||||
for(i=0;i<M;i++){
|
||||
index=0;
|
||||
for(j=0;j<N;j++){
|
||||
if(H[i][j]==1){
|
||||
tmp[index]=j;
|
||||
index++;
|
||||
}
|
||||
}
|
||||
nodesOfGraph[i].setParityConnections(index, tmp);
|
||||
}
|
||||
for(i=0;i<N;i++){
|
||||
index=0;
|
||||
for(j=0;j<nodesOfGraph[i].numOfSymbolConnections;j++){
|
||||
for(k=0;k<nodesOfGraph[nodesOfGraph[i].symbolConnections[j]].numOfParityConnections;k++){
|
||||
int t=0;
|
||||
for(m=0;m<index;m++){
|
||||
if(nodesOfGraph[nodesOfGraph[i].symbolConnections[j]].parityConnections[k]==tmp[m]){
|
||||
t=1; break;
|
||||
}
|
||||
}
|
||||
if(nodesOfGraph[nodesOfGraph[i].symbolConnections[j]].parityConnections[k]==i) t=1;
|
||||
if(t==0) {
|
||||
tmp[index]=nodesOfGraph[nodesOfGraph[i].symbolConnections[j]].parityConnections[k];
|
||||
index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
nodesOfGraph[i].setSymbolMapping(index, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
CyclesOfGraph::~CyclesOfGraph(void){
|
||||
delete [] tmp;
|
||||
tmp=NULL;
|
||||
delete [] med;
|
||||
med=NULL;
|
||||
delete [] tmpCycles;
|
||||
tmpCycles=NULL;
|
||||
delete [] cyclesTable;
|
||||
cyclesTable=NULL;
|
||||
delete [] nodesOfGraph;
|
||||
nodesOfGraph=NULL;
|
||||
}
|
||||
|
||||
void CyclesOfGraph::getCyclesTable(void) {
|
||||
int i, j, k, m, n, t, imed;
|
||||
for(i=0;i<N;i++){
|
||||
//special handlement for nodes having only one or zero connections
|
||||
if(nodesOfGraph[i].numOfSymbolConnections<=1) {
|
||||
cyclesTable[i]=2*N;
|
||||
continue;
|
||||
}
|
||||
for(j=0;j<nodesOfGraph[i].numOfSymbolConnections-1;j++){ //-1 because the graph is undirected
|
||||
for(k=0;k<nodesOfGraph[nodesOfGraph[i].symbolConnections[j]].numOfParityConnections;k++){
|
||||
tmp[k]=nodesOfGraph[nodesOfGraph[i].symbolConnections[j]].parityConnections[k];
|
||||
//cout<<tmp[k]<<" ";
|
||||
}
|
||||
//cout<<endl;
|
||||
int cycles=2;
|
||||
int index=nodesOfGraph[nodesOfGraph[i].symbolConnections[j]].numOfParityConnections;
|
||||
LOOP:
|
||||
imed=0;
|
||||
for(k=0;k<index;k++){
|
||||
if(tmp[k]==i) continue;
|
||||
//cout<<"k="<<k<<" "<<tmp[k]<<endl;
|
||||
for(m=0;m<nodesOfGraph[tmp[k]].numOfSymbolConnections;m++){
|
||||
for(n=0;n<nodesOfGraph[i].numOfSymbolConnections;n++){
|
||||
if((n!=j)&&(nodesOfGraph[tmp[k]].symbolConnections[m]==nodesOfGraph[i].symbolConnections[n])){
|
||||
cycles+=2;
|
||||
goto OUTLOOP;
|
||||
}
|
||||
}
|
||||
}
|
||||
for(m=0;m<nodesOfGraph[tmp[k]].numOfSymbolMapping;m++){
|
||||
t=0;
|
||||
for(int l=0;l<imed;l++) {
|
||||
if(nodesOfGraph[tmp[k]].symbolMapping[m]==med[l]){
|
||||
t=1; break;
|
||||
}
|
||||
}
|
||||
if(t==0){
|
||||
med[imed]=nodesOfGraph[tmp[k]].symbolMapping[m];
|
||||
//cout<<med[imed]<<endl;
|
||||
imed++;
|
||||
}
|
||||
}
|
||||
}
|
||||
index=imed;//cout<<index<<" "<<endl;
|
||||
for(k=0;k<index;k++) {
|
||||
tmp[k]=med[k];//cout<<tmp[k]<<" ";
|
||||
}
|
||||
//cout<<"j="<<j<<endl;
|
||||
cycles+=2;
|
||||
if(cycles>=2*N) //dead lock
|
||||
goto OUTLOOP;
|
||||
else
|
||||
goto LOOP;
|
||||
OUTLOOP:
|
||||
tmpCycles[j]=cycles;
|
||||
}
|
||||
//for(j=0;j<nodesOfGraph[i].numOfSymbolConnections-1;j++) cout<<tmpCycles[j]<<" ";
|
||||
//cout<<endl;
|
||||
cyclesTable[i]=tmpCycles[0];
|
||||
for(j=1;j<nodesOfGraph[i].numOfSymbolConnections-1;j++){
|
||||
if(cyclesTable[i]>tmpCycles[j])
|
||||
cyclesTable[i]=tmpCycles[j];
|
||||
}
|
||||
//OUTPUT cycles per symbol node
|
||||
//cout<<"i="<<i<<" "<<cyclesTable[i]<<endl;
|
||||
}
|
||||
}
|
||||
|
||||
int CyclesOfGraph::girth(void) {
|
||||
int girth=2*N;
|
||||
for(int i=0;i<N;i++)
|
||||
if(girth>cyclesTable[i]) girth=cyclesTable[i];
|
||||
return(girth);
|
||||
}
|
||||
|
||||
void CyclesOfGraph::printCyclesTable(void){
|
||||
using namespace std;
|
||||
int i, temp[20];
|
||||
/*
|
||||
for(i=0;i<N;i++)
|
||||
cout<<cyclesTable[i]<<" ";
|
||||
cout<<endl;
|
||||
*/
|
||||
for(i=0;i<20;i++) temp[i]=0;
|
||||
for(i=0;i<N;i++){
|
||||
if(cyclesTable[i]==4) temp[0]++;
|
||||
else if(cyclesTable[i]==6) temp[1]++;
|
||||
else if(cyclesTable[i]==8) temp[2]++;
|
||||
else if(cyclesTable[i]==10) temp[3]++;
|
||||
else if(cyclesTable[i]==12) temp[4]++;
|
||||
else if(cyclesTable[i]==14) temp[5]++;
|
||||
else if(cyclesTable[i]==16) temp[6]++;
|
||||
else if(cyclesTable[i]==18) temp[7]++;
|
||||
else if(cyclesTable[i]==20) temp[8]++;
|
||||
else if(cyclesTable[i]==22) temp[9]++;
|
||||
else if(cyclesTable[i]==24) temp[10]++;
|
||||
else if(cyclesTable[i]==26) temp[11]++;
|
||||
else if(cyclesTable[i]==28) temp[12]++;
|
||||
else if(cyclesTable[i]==30) temp[13]++;
|
||||
else {
|
||||
cout<<"Wrong cycles calculation "<<cyclesTable[i]<<endl;
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
cout<<endl;
|
||||
cout<<"Num of Nodes with local girth 4: "<< temp[0]<<endl;
|
||||
cout<<"Num of Nodes with local girth 6: "<< temp[1]<<endl;
|
||||
cout<<"Num of Nodes with local girth 8: "<< temp[2]<<endl;
|
||||
cout<<"Num of Nodes with local girth 10: "<< temp[3]<<endl;
|
||||
cout<<"Num of Nodes with local girth 12: "<< temp[4]<<endl;
|
||||
cout<<"Num of Nodes with local girth 14: "<< temp[5]<<endl;
|
||||
cout<<"Num of Nodes with local girth 16: "<< temp[6]<<endl;
|
||||
cout<<"Num of Nodes with local girth 18: "<< temp[7]<<endl;
|
||||
cout<<"Num of Nodes with local girth 20: "<< temp[8]<<endl;
|
||||
cout<<"Num of Nodes with local girth 22: "<< temp[9]<<endl;
|
||||
cout<<"Num of Nodes with local girth 24: "<< temp[10]<<endl;
|
||||
cout<<"Num of Nodes with local girth 26: "<< temp[11]<<endl;
|
||||
cout<<"Num of Nodes with local girth 28: "<< temp[12]<<endl;
|
||||
cout<<"Num of Nodes with local girth 30: "<< temp[13]<<endl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* Reads cty.dat file
|
||||
* Establishes a map between prefixes and their country names
|
||||
* VK3ACF July 2013
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __COUNTRYDAT_H
|
||||
#define __COUNTRYDAT_H
|
||||
|
||||
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QHash>
|
||||
|
||||
|
||||
class CountryDat
|
||||
{
|
||||
public:
|
||||
void init(const QString filename);
|
||||
void load();
|
||||
QString find(QString prefix) const; // return country name or ""
|
||||
QStringList getCountryNames() const { return _countryNames; };
|
||||
|
||||
private:
|
||||
QString _extractName(const QString line) const;
|
||||
void _removeBrackets(QString &line, const QString a, const QString b) const;
|
||||
QStringList _extractPrefix(QString &line, bool &more) const;
|
||||
|
||||
QString _filename;
|
||||
QStringList _countryNames;
|
||||
QHash<QString, QString> _data;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,76 @@
|
||||
/* boost random/detail/uniform_int_float.hpp header file
|
||||
*
|
||||
* Copyright Jens Maurer 2000-2001
|
||||
* Copyright Steven Watanabe 2011
|
||||
* 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 for most recent version including documentation.
|
||||
*
|
||||
* $Id$
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef BOOST_RANDOM_DETAIL_UNIFORM_INT_FLOAT_HPP
|
||||
#define BOOST_RANDOM_DETAIL_UNIFORM_INT_FLOAT_HPP
|
||||
|
||||
#include <boost/limits.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/integer.hpp>
|
||||
#include <boost/random/detail/config.hpp>
|
||||
#include <boost/random/detail/generator_bits.hpp>
|
||||
|
||||
#include <boost/random/detail/disable_warnings.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace random {
|
||||
namespace detail {
|
||||
|
||||
template<class URNG>
|
||||
class uniform_int_float
|
||||
{
|
||||
public:
|
||||
typedef URNG base_type;
|
||||
typedef typename base_type::result_type base_result;
|
||||
|
||||
typedef typename boost::uint_t<
|
||||
(std::numeric_limits<boost::uintmax_t>::digits <
|
||||
std::numeric_limits<base_result>::digits)?
|
||||
std::numeric_limits<boost::uintmax_t>::digits :
|
||||
std::numeric_limits<base_result>::digits
|
||||
>::fast result_type;
|
||||
|
||||
uniform_int_float(base_type& rng)
|
||||
: _rng(rng) {}
|
||||
|
||||
static result_type min BOOST_PREVENT_MACRO_SUBSTITUTION ()
|
||||
{ return 0; }
|
||||
static result_type max BOOST_PREVENT_MACRO_SUBSTITUTION ()
|
||||
{
|
||||
std::size_t digits = std::numeric_limits<result_type>::digits;
|
||||
if(detail::generator_bits<URNG>::value() < digits) {
|
||||
digits = detail::generator_bits<URNG>::value();
|
||||
}
|
||||
return (result_type(2) << (digits - 1)) - 1;
|
||||
}
|
||||
base_type& base() { return _rng; }
|
||||
const base_type& base() const { return _rng; }
|
||||
|
||||
result_type operator()()
|
||||
{
|
||||
base_result range = static_cast<base_result>((max)())+1;
|
||||
return static_cast<result_type>(_rng() * range);
|
||||
}
|
||||
|
||||
private:
|
||||
base_type& _rng;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
} // namespace random
|
||||
} // namespace boost
|
||||
|
||||
#include <boost/random/detail/enable_warnings.hpp>
|
||||
|
||||
#endif // BOOST_RANDOM_DETAIL_UNIFORM_INT_FLOAT_HPP
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
# Set paths
|
||||
EXE_DIR = ..\\..\\wsjtx_install
|
||||
QT_DIR = C:/wsjt-env/Qt5/5.2.1/mingw48_32
|
||||
FFTW3_DIR = ..
|
||||
|
||||
INCPATH = -I${QT_DIR}/include/QtCore -I${QT_DIR}/include
|
||||
|
||||
# Compilers
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
FC = gfortran
|
||||
AR = ar cr
|
||||
RANLIB = ranlib
|
||||
MKDIR = mkdir -p
|
||||
CP = cp
|
||||
RM = rm -f
|
||||
|
||||
FFLAGS = -O2 -fbounds-check -Wall -Wno-conversion
|
||||
CFLAGS = -O2 -I.
|
||||
|
||||
# Default rules
|
||||
%.o: %.c
|
||||
${CC} ${CFLAGS} -c $<
|
||||
%.o: %.f
|
||||
${FC} ${FFLAGS} -c $<
|
||||
%.o: %.F
|
||||
${FC} ${FFLAGS} -c $<
|
||||
%.o: %.f90
|
||||
${FC} ${FFLAGS} -c $<
|
||||
%.o: %.F90
|
||||
${FC} ${FFLAGS} -c $<
|
||||
|
||||
#all: jt9code JTMSKcode
|
||||
all: jtmsk JTMSKcode
|
||||
|
||||
OBJS4 = jt9code.o packjt.o fmtmsg.o gen9.o deg2grid.o grid2deg.o \
|
||||
entail.o encode232.o interleave9.o graycode.o igray.o
|
||||
jt9code: $(OBJS4)
|
||||
$(FC) -o jt9code $(OBJS4)
|
||||
|
||||
OBJS5 = JTMSKcode.o packjt.o fmtmsg.o genmsk.o deg2grid.o grid2deg.o \
|
||||
entail.o nhash.o tab.o vit213.o
|
||||
JTMSKcode: $(OBJS5)
|
||||
$(FC) -o JTMSKcode $(OBJS5)
|
||||
|
||||
OBJS6 = jtmsk.o jtmsk.o analytic.o four2a.o db.o mskdf.o pctile.o \
|
||||
sort.o tweak1.o syncmsk.o genmsk.o packjt.o fmtmsg.o indexx.o \
|
||||
deg2grid.o grid2deg.o entail.o nhash.o tab.o vit213.o
|
||||
jtmsk: $(OBJS6)
|
||||
$(FC) -o jtmsk $(OBJS6) -lfftw3f
|
||||
|
||||
OBJS1 = t1.o four2a.o db.o
|
||||
t1: $(OBJS1)
|
||||
$(FC) -o t1 $(OBJS1) -lfftw3f
|
||||
|
||||
OBJS2 = t2.o four2a.o db.o
|
||||
t2: $(OBJS2)
|
||||
$(FC) -o t2 $(OBJS2) -lfftw3f
|
||||
|
||||
OBJS6 = t6.o four2a.o db.o
|
||||
t6: $(OBJS6)
|
||||
$(FC) -o t6 $(OBJS6) -lfftw3f
|
||||
|
||||
nhash.o: wsprd/nhash.h wsprd/nhash.c
|
||||
$(CC) -c -O2 wsprd/nhash.c
|
||||
|
||||
.PHONY : clean
|
||||
|
||||
clean:
|
||||
$(RM) *.o JTMSKcode JTMSKcode.exe
|
||||
@@ -0,0 +1,147 @@
|
||||
/* MOD2SPARSE.H - Interface to module for handling sparse mod2 matrices. */
|
||||
|
||||
/* Copyright (c) 1995-2012 by Radford M. Neal.
|
||||
*
|
||||
* Permission is granted for anyone to copy, use, modify, and distribute
|
||||
* these programs and accompanying documents for any purpose, provided
|
||||
* this copyright notice is retained and prominently displayed, and note
|
||||
* is made of any changes made to these programs. These programs and
|
||||
* documents are distributed without any warranty, express or implied.
|
||||
* As the programs were written for research purposes only, they have not
|
||||
* been tested to the degree that would be advisable in any important
|
||||
* application. All use of these programs is entirely at the user's own
|
||||
* risk.
|
||||
*/
|
||||
|
||||
|
||||
/* This module implements operations on sparse matrices of mod2 elements
|
||||
(bits, with addition and multiplication being done modulo 2).
|
||||
|
||||
All procedures in this module display an error message on standard
|
||||
error and terminate the program if passed an invalid argument (indicative
|
||||
of a programming error), or if memory cannot be allocated. Errors from
|
||||
invalid contents of a file result in an error code being returned to the
|
||||
caller, with no message being printed by this module.
|
||||
*/
|
||||
|
||||
|
||||
/* DATA STRUCTURES USED TO STORE A SPARSE MATRIX. Non-zero entries (ie, 1s)
|
||||
are represented by nodes that are doubly-linked both by row and by column,
|
||||
with the headers for these lists being kept in arrays. Nodes are allocated
|
||||
in blocks to reduce time and space overhead. Freed nodes are kept for
|
||||
reuse in the same matrix, rather than being freed for other uses, except
|
||||
that they are all freed when the matrix is cleared to all zeros by the
|
||||
mod2sparse_clear procedure, or copied into by mod2sparse_copy.
|
||||
|
||||
Direct access to these structures should be avoided except in low-level
|
||||
routines. Use the macros and procedures defined below instead. */
|
||||
|
||||
typedef struct mod2entry /* Structure representing a non-zero entry, or
|
||||
the header for a row or column */
|
||||
{
|
||||
int row, col; /* Row and column indexes of this entry, starting
|
||||
at 0, and with -1 for a row or column header */
|
||||
|
||||
struct mod2entry *left, *right, /* Pointers to entries adjacent in row */
|
||||
*up, *down; /* and column, or to headers. Free */
|
||||
/* entries are linked by 'left'. */
|
||||
|
||||
double pr, lr; /* Probability and likelihood ratios - not used */
|
||||
/* by the mod2sparse module itself */
|
||||
} mod2entry;
|
||||
|
||||
#define Mod2sparse_block 10 /* Number of entries to block together for
|
||||
memory allocation */
|
||||
|
||||
typedef struct mod2block /* Block of entries allocated all at once */
|
||||
{
|
||||
struct mod2block *next; /* Next block that has been allocated */
|
||||
|
||||
mod2entry entry[Mod2sparse_block]; /* Entries in this block */
|
||||
|
||||
} mod2block;
|
||||
|
||||
typedef struct /* Representation of a sparse matrix */
|
||||
{
|
||||
int n_rows; /* Number of rows in the matrix */
|
||||
int n_cols; /* Number of columns in the matrix */
|
||||
|
||||
mod2entry *rows; /* Pointer to array of row headers */
|
||||
mod2entry *cols; /* Pointer to array of column headers */
|
||||
|
||||
mod2block *blocks; /* Blocks that have been allocated */
|
||||
mod2entry *next_free; /* Next free entry */
|
||||
|
||||
} mod2sparse;
|
||||
|
||||
|
||||
/* MACROS TO GET AT ELEMENTS OF A SPARSE MATRIX. The 'first', 'last', 'next',
|
||||
and 'prev' macros traverse the elements in a row or column. Moving past
|
||||
the first/last element gets one to a header element, which can be identified
|
||||
using the 'at_end' macro. Macros also exist for finding out the row
|
||||
and column of an entry, and for finding out the dimensions of a matrix. */
|
||||
|
||||
#define mod2sparse_first_in_row(m,i) ((m)->rows[i].right) /* Find the first */
|
||||
#define mod2sparse_first_in_col(m,j) ((m)->cols[j].down) /* or last entry in */
|
||||
#define mod2sparse_last_in_row(m,i) ((m)->rows[i].left) /* a row or column */
|
||||
#define mod2sparse_last_in_col(m,j) ((m)->cols[j].up)
|
||||
|
||||
#define mod2sparse_next_in_row(e) ((e)->right) /* Move from one entry to */
|
||||
#define mod2sparse_next_in_col(e) ((e)->down) /* another in any of the four */
|
||||
#define mod2sparse_prev_in_row(e) ((e)->left) /* possible directions */
|
||||
#define mod2sparse_prev_in_col(e) ((e)->up)
|
||||
|
||||
#define mod2sparse_at_end(e) ((e)->row<0) /* See if we've reached the end */
|
||||
|
||||
#define mod2sparse_row(e) ((e)->row) /* Find out the row or column index */
|
||||
#define mod2sparse_col(e) ((e)->col) /* of an entry (indexes start at 0) */
|
||||
|
||||
#define mod2sparse_rows(m) ((m)->n_rows) /* Get the number of rows or columns*/
|
||||
#define mod2sparse_cols(m) ((m)->n_cols) /* in a matrix */
|
||||
|
||||
|
||||
/* POSSIBLE LU DECOMPOSITION STRATEGIES. For use with mod2sparse_decomp. */
|
||||
|
||||
typedef enum
|
||||
{ Mod2sparse_first,
|
||||
Mod2sparse_mincol,
|
||||
Mod2sparse_minprod
|
||||
} mod2sparse_strategy;
|
||||
|
||||
|
||||
/* PROCEDURES TO MANIPULATE SPARSE MATRICES. */
|
||||
|
||||
mod2sparse *mod2sparse_allocate (int, int);
|
||||
void mod2sparse_free (mod2sparse *);
|
||||
|
||||
void mod2sparse_clear (mod2sparse *);
|
||||
void mod2sparse_copy (mod2sparse *, mod2sparse *);
|
||||
void mod2sparse_copyrows (mod2sparse *, mod2sparse *, int *);
|
||||
void mod2sparse_copycols (mod2sparse *, mod2sparse *, int *);
|
||||
|
||||
void mod2sparse_print (FILE *, mod2sparse *);
|
||||
int mod2sparse_write (FILE *, mod2sparse *);
|
||||
mod2sparse *mod2sparse_read (FILE *);
|
||||
|
||||
mod2entry *mod2sparse_find (mod2sparse *, int, int);
|
||||
mod2entry *mod2sparse_insert (mod2sparse *, int, int);
|
||||
void mod2sparse_delete (mod2sparse *, mod2entry *);
|
||||
|
||||
void mod2sparse_transpose (mod2sparse *, mod2sparse *);
|
||||
void mod2sparse_add (mod2sparse *, mod2sparse *, mod2sparse *);
|
||||
void mod2sparse_multiply (mod2sparse *, mod2sparse *, mod2sparse *);
|
||||
void mod2sparse_mulvec (mod2sparse *, char *, char *);
|
||||
|
||||
int mod2sparse_equal (mod2sparse *, mod2sparse *);
|
||||
|
||||
int mod2sparse_count_row (mod2sparse *, int);
|
||||
int mod2sparse_count_col (mod2sparse *, int);
|
||||
|
||||
void mod2sparse_add_row (mod2sparse *, int, mod2sparse *, int);
|
||||
void mod2sparse_add_col (mod2sparse *, int, mod2sparse *, int);
|
||||
|
||||
int mod2sparse_decomp (mod2sparse *, int, mod2sparse *, mod2sparse *,
|
||||
int *, int *, mod2sparse_strategy, int, int);
|
||||
|
||||
int mod2sparse_forward_sub (mod2sparse *, int *, char *, char *);
|
||||
int mod2sparse_backward_sub (mod2sparse *, int *, char *, char *);
|
||||
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// (C) Copyright 2010-2011 Vicente J. Botet Escriba
|
||||
// Use, modification and distribution are 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_CHRONO_CLOCK_STRING_HPP
|
||||
#define BOOST_CHRONO_CLOCK_STRING_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace chrono
|
||||
{
|
||||
|
||||
template<class Clock, class CharT>
|
||||
struct clock_string;
|
||||
|
||||
} // chrono
|
||||
|
||||
} // boost
|
||||
|
||||
#endif // BOOST_CHRONO_CLOCK_STRING_HPP
|
||||
@@ -0,0 +1,137 @@
|
||||
// Boost.Range library
|
||||
//
|
||||
// Copyright Thorsten Ottosen, Neil Groves 2006. 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)
|
||||
//
|
||||
// For more information, see http://www.boost.org/libs/range/
|
||||
//
|
||||
|
||||
#ifndef BOOST_RANGE_ADAPTOR_TOKENIZED_HPP
|
||||
#define BOOST_RANGE_ADAPTOR_TOKENIZED_HPP
|
||||
|
||||
#include <boost/regex.hpp>
|
||||
#include <boost/range/iterator_range.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace range_detail
|
||||
{
|
||||
|
||||
template< class R >
|
||||
struct tokenized_range :
|
||||
public boost::iterator_range<
|
||||
boost::regex_token_iterator<
|
||||
BOOST_DEDUCED_TYPENAME range_iterator<R>::type
|
||||
>
|
||||
>
|
||||
{
|
||||
private:
|
||||
typedef
|
||||
boost::regex_token_iterator<
|
||||
BOOST_DEDUCED_TYPENAME range_iterator<R>::type
|
||||
>
|
||||
regex_iter;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME regex_iter::regex_type
|
||||
regex_type;
|
||||
|
||||
typedef boost::iterator_range<regex_iter>
|
||||
base;
|
||||
|
||||
public:
|
||||
template< class Regex, class Submatch, class Flag >
|
||||
tokenized_range( R& r, const Regex& re, const Submatch& sub, Flag f )
|
||||
: base( regex_iter( boost::begin(r), boost::end(r),
|
||||
regex_type(re), sub, f ),
|
||||
regex_iter() )
|
||||
{ }
|
||||
};
|
||||
|
||||
template< class T, class U, class V >
|
||||
struct regex_holder
|
||||
{
|
||||
T re;
|
||||
U sub;
|
||||
V f;
|
||||
|
||||
regex_holder( const T& rex, const U& subm, V flag ) :
|
||||
re(rex), sub(subm), f(flag)
|
||||
{ }
|
||||
private:
|
||||
// Not assignable
|
||||
void operator=(const regex_holder&);
|
||||
};
|
||||
|
||||
struct regex_forwarder
|
||||
{
|
||||
template< class Regex >
|
||||
regex_holder<Regex,int,regex_constants::match_flag_type>
|
||||
operator()( const Regex& re,
|
||||
int submatch = 0,
|
||||
regex_constants::match_flag_type f =
|
||||
regex_constants::match_default ) const
|
||||
{
|
||||
return regex_holder<Regex,int,
|
||||
regex_constants::match_flag_type>( re, submatch, f );
|
||||
}
|
||||
|
||||
template< class Regex, class Submatch >
|
||||
regex_holder<Regex,Submatch,regex_constants::match_flag_type>
|
||||
operator()( const Regex& re,
|
||||
const Submatch& sub,
|
||||
regex_constants::match_flag_type f =
|
||||
regex_constants::match_default ) const
|
||||
{
|
||||
return regex_holder<Regex,Submatch,
|
||||
regex_constants::match_flag_type>( re, sub, f );
|
||||
}
|
||||
};
|
||||
|
||||
template< class BidirectionalRng, class R, class S, class F >
|
||||
inline tokenized_range<BidirectionalRng>
|
||||
operator|( BidirectionalRng& r,
|
||||
const regex_holder<R,S,F>& f )
|
||||
{
|
||||
return tokenized_range<BidirectionalRng>( r, f.re, f.sub, f.f );
|
||||
}
|
||||
|
||||
template< class BidirectionalRng, class R, class S, class F >
|
||||
inline tokenized_range<const BidirectionalRng>
|
||||
operator|( const BidirectionalRng& r,
|
||||
const regex_holder<R,S,F>& f )
|
||||
{
|
||||
return tokenized_range<const BidirectionalRng>( r, f.re, f.sub, f.f );
|
||||
}
|
||||
|
||||
} // 'range_detail'
|
||||
|
||||
using range_detail::tokenized_range;
|
||||
|
||||
namespace adaptors
|
||||
{
|
||||
namespace
|
||||
{
|
||||
const range_detail::regex_forwarder tokenized =
|
||||
range_detail::regex_forwarder();
|
||||
}
|
||||
|
||||
template<class BidirectionalRange, class Regex, class Submatch, class Flag>
|
||||
inline tokenized_range<BidirectionalRange>
|
||||
tokenize(BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f)
|
||||
{
|
||||
return tokenized_range<BidirectionalRange>(rng, reg, sub, f);
|
||||
}
|
||||
|
||||
template<class BidirectionalRange, class Regex, class Submatch, class Flag>
|
||||
inline tokenized_range<const BidirectionalRange>
|
||||
tokenize(const BidirectionalRange& rng, const Regex& reg, const Submatch& sub, Flag f)
|
||||
{
|
||||
return tokenized_range<const BidirectionalRange>(rng, reg, sub, f);
|
||||
}
|
||||
} // 'adaptors'
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,33 @@
|
||||
|
||||
#ifndef BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
|
||||
#define BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2000-2004
|
||||
//
|
||||
// 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/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/O1_size_fwd.hpp>
|
||||
#include <boost/mpl/list/aux_/tag.hpp>
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<>
|
||||
struct O1_size_impl< aux::list_tag >
|
||||
{
|
||||
template< typename List > struct apply
|
||||
: List::size
|
||||
{
|
||||
};
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_LIST_AUX_O1_SIZE_HPP_INCLUDED
|
||||
@@ -0,0 +1,19 @@
|
||||
// Copyright (C) 2013 Vicente J. Botet Escriba
|
||||
//
|
||||
// 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)
|
||||
|
||||
|
||||
#if defined(BOOST_INTEL)
|
||||
|
||||
#pragma pop_macro("atomic_compare_exchange")
|
||||
#pragma pop_macro("atomic_compare_exchange_explicit")
|
||||
#pragma pop_macro("atomic_exchange")
|
||||
#pragma pop_macro("atomic_exchange_explicit")
|
||||
#pragma pop_macro("atomic_is_lock_free")
|
||||
#pragma pop_macro("atomic_load")
|
||||
#pragma pop_macro("atomic_load_explicit")
|
||||
#pragma pop_macro("atomic_store")
|
||||
#pragma pop_macro("atomic_store_explicit")
|
||||
|
||||
#endif // #if defined(BOOST_INTEL)
|
||||
Reference in New Issue
Block a user