Initial Commit
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
// Copyright (C) 2004 Arkadiy Vertleyb
|
||||
// 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_TYPEOF_MODIFIERS_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
|
||||
|
||||
#include <boost/typeof/encode_decode.hpp>
|
||||
#include <boost/preprocessor/facilities/identity.hpp>
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
// modifiers
|
||||
|
||||
#define BOOST_TYPEOF_modifier_support(ID, Fun)\
|
||||
template<class V, class T> struct encode_type_impl<V, Fun(T)>\
|
||||
{\
|
||||
typedef\
|
||||
typename boost::type_of::encode_type<\
|
||||
typename boost::type_of::push_back<\
|
||||
V\
|
||||
, boost::mpl::size_t<ID> >::type\
|
||||
, T>::type\
|
||||
type;\
|
||||
};\
|
||||
template<class Iter> struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
|
||||
{\
|
||||
typedef boost::type_of::decode_type<Iter> d1;\
|
||||
typedef Fun(typename d1::type) type;\
|
||||
typedef typename d1::iter iter;\
|
||||
}
|
||||
|
||||
|
||||
#define BOOST_TYPEOF_const_fun(T) const T
|
||||
#define BOOST_TYPEOF_volatile_fun(T) volatile T
|
||||
#define BOOST_TYPEOF_volatile_const_fun(T) volatile const T
|
||||
#define BOOST_TYPEOF_pointer_fun(T) T*
|
||||
#define BOOST_TYPEOF_reference_fun(T) T&
|
||||
|
||||
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
|
||||
//Borland incorrectly handles T const, T const volatile and T volatile.
|
||||
//It drops the decoration no matter what, so we need to try to handle T* const etc. without loosing the top modifier.
|
||||
#define BOOST_TYPEOF_const_pointer_fun(T) T const *
|
||||
#define BOOST_TYPEOF_const_reference_fun(T) T const &
|
||||
#define BOOST_TYPEOF_volatile_pointer_fun(T) T volatile*
|
||||
#define BOOST_TYPEOF_volatile_reference_fun(T) T volatile&
|
||||
#define BOOST_TYPEOF_volatile_const_pointer_fun(T) T volatile const *
|
||||
#define BOOST_TYPEOF_volatile_const_reference_fun(T) T volatile const &
|
||||
#endif
|
||||
|
||||
BOOST_TYPEOF_BEGIN_ENCODE_NS
|
||||
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_pointer_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_reference_fun);
|
||||
|
||||
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_pointer_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_const_reference_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_pointer_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_reference_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_pointer_fun);
|
||||
BOOST_TYPEOF_modifier_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_TYPEOF_volatile_const_reference_fun);
|
||||
#endif
|
||||
|
||||
BOOST_TYPEOF_END_ENCODE_NS
|
||||
|
||||
#undef BOOST_TYPEOF_modifier_support
|
||||
#undef BOOST_TYPEOF_const_fun
|
||||
#undef BOOST_TYPEOF_volatile_fun
|
||||
#undef BOOST_TYPEOF_volatile_const_fun
|
||||
#undef BOOST_TYPEOF_pointer_fun
|
||||
#undef BOOST_TYPEOF_reference_fun
|
||||
|
||||
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
|
||||
#undef BOOST_TYPEOF_const_pointer_fun
|
||||
#undef BOOST_TYPEOF_const_reference_fun
|
||||
#undef BOOST_TYPEOF_volatile_pointer_fun
|
||||
#undef BOOST_TYPEOF_volatile_reference_fun
|
||||
#undef BOOST_TYPEOF_volatile_const_pointer_fun
|
||||
#undef BOOST_TYPEOF_volatile_const_reference_fun
|
||||
#endif
|
||||
|
||||
// arrays
|
||||
|
||||
#define BOOST_TYPEOF_array_support(ID, Qualifier)\
|
||||
template<class V, class T, int N>\
|
||||
struct encode_type_impl<V, Qualifier() T[N]>\
|
||||
{\
|
||||
typedef\
|
||||
typename boost::type_of::encode_type<\
|
||||
typename boost::type_of::push_back<\
|
||||
typename boost::type_of::push_back<\
|
||||
V\
|
||||
, boost::mpl::size_t<ID> >::type\
|
||||
, boost::mpl::size_t<N> >::type\
|
||||
, T>::type\
|
||||
type;\
|
||||
};\
|
||||
template<class Iter>\
|
||||
struct decode_type_impl<boost::mpl::size_t<ID>, Iter>\
|
||||
{\
|
||||
enum{n = Iter::type::value};\
|
||||
typedef boost::type_of::decode_type<typename Iter::next> d;\
|
||||
typedef typename d::type Qualifier() type[n];\
|
||||
typedef typename d::iter iter;\
|
||||
}
|
||||
|
||||
BOOST_TYPEOF_BEGIN_ENCODE_NS
|
||||
|
||||
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_EMPTY);
|
||||
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(const));
|
||||
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile));
|
||||
BOOST_TYPEOF_array_support(BOOST_TYPEOF_UNIQUE_ID(), BOOST_PP_IDENTITY(volatile const));
|
||||
BOOST_TYPEOF_END_ENCODE_NS
|
||||
|
||||
#undef BOOST_TYPEOF_array_support
|
||||
|
||||
#endif//BOOST_TYPEOF_MODIFIERS_HPP_INCLUDED
|
||||
@@ -0,0 +1,30 @@
|
||||
This directory contains original artwork used to generate the graphics
|
||||
used in various parts of the WSJT-X ecosystem. The CMake build scripts
|
||||
do not generate the final image bitmaps because of the extra tools
|
||||
required to complete this step. Instead there is shell script here
|
||||
(make_graphics.sh) that does the generation. If you want to modify the
|
||||
source graphics or add new ones then you need an SVG editor (I use
|
||||
inkscape) and a tool to do various conversion steps (I use
|
||||
ImageMagick), the shell script explicitly uses these tools.
|
||||
|
||||
The files here are:
|
||||
|
||||
installer_logo.svg - A 150x57 pixel image (the size is important with
|
||||
a whte background that is used at the top right of the NSIS
|
||||
Windows installer.
|
||||
|
||||
wsjt_globe_1024x1024.svg - A 1024x1024 pixel generic globe image which
|
||||
is used in various places, mainly for high resolution icons.
|
||||
|
||||
wsjtx_globe_1024x1024.svg - A 1024x1024 pixel WSJT-X specific image
|
||||
which is used in various places, mainly for high resolution icons.
|
||||
|
||||
wsjt_globe_128x128.svg - A 128x128 pixel image which is used for low
|
||||
resolution icons.
|
||||
|
||||
make_graphics.sh - Run this script (on Linux) to generate the
|
||||
intermediate bitmap image files used in the wsjtx build. This
|
||||
script generates all but the final Mac iconset file which is
|
||||
generated by a build on Mac since it requires a Mac developer tool
|
||||
(iconutil). This script requires that inkscape and ImageMagick are
|
||||
installed.
|
||||
@@ -0,0 +1,77 @@
|
||||
/*=============================================================================
|
||||
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_NEXT_IMPL_07162005_1029)
|
||||
#define FUSION_NEXT_IMPL_07162005_1029
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/iterator/next.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
struct transform_view_iterator_tag;
|
||||
struct transform_view_iterator2_tag;
|
||||
|
||||
template<typename First, typename F>
|
||||
struct transform_view_iterator;
|
||||
|
||||
template <typename First1, typename First2, typename F>
|
||||
struct transform_view_iterator2;
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
struct next_impl;
|
||||
|
||||
// Unary Version
|
||||
template <>
|
||||
struct next_impl<transform_view_iterator_tag>
|
||||
{
|
||||
template <typename Iterator>
|
||||
struct apply
|
||||
{
|
||||
typedef typename Iterator::first_type first_type;
|
||||
typedef typename result_of::next<first_type>::type next_type;
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator<next_type, transform_type> type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
return type(fusion::next(i.first), i.f);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
// Binary Version
|
||||
template <>
|
||||
struct next_impl<transform_view_iterator2_tag>
|
||||
{
|
||||
template <typename Iterator>
|
||||
struct apply
|
||||
{
|
||||
typedef typename Iterator::first1_type first1_type;
|
||||
typedef typename Iterator::first2_type first2_type;
|
||||
typedef typename result_of::next<first1_type>::type next1_type;
|
||||
typedef typename result_of::next<first2_type>::type next2_type;
|
||||
typedef typename Iterator::transform_type transform_type;
|
||||
typedef transform_view_iterator2<next1_type, next2_type, transform_type> type;
|
||||
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static type
|
||||
call(Iterator const& i)
|
||||
{
|
||||
return type(fusion::next(i.first1), fusion::next(i.first2), i.f);
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
// (C) Copyright John Maddock 2001.
|
||||
// (C) Copyright David Abrahams 2002.
|
||||
// (C) Copyright Aleksey Gurtovoy 2002.
|
||||
// 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)
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Kai C++ compiler setup:
|
||||
|
||||
#include <boost/config/compiler/common_edg.hpp>
|
||||
|
||||
# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG)
|
||||
// at least on Sun, the contents of <cwchar> is not in namespace std
|
||||
# define BOOST_NO_STDC_NAMESPACE
|
||||
# endif
|
||||
|
||||
// see also common_edg.hpp which needs a special check for __KCC
|
||||
# if !defined(_EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
|
||||
# define BOOST_NO_EXCEPTIONS
|
||||
# endif
|
||||
|
||||
//
|
||||
// last known and checked version is 4001:
|
||||
#if (__KCC_VERSION > 4001)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
// Status=review
|
||||
[[CONFIG_DETAILS]]
|
||||
|
||||
Are we here?
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* 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)
|
||||
*
|
||||
* Copyright (c) 2011 Helge Bahmann
|
||||
* Copyright (c) 2013 Tim Blechmann
|
||||
* Copyright (c) 2014 Andrey Semashev
|
||||
*/
|
||||
/*!
|
||||
* \file atomic/atomic_flag.hpp
|
||||
*
|
||||
* This header contains definition of \c atomic_flag.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_ATOMIC_ATOMIC_FLAG_HPP_INCLUDED_
|
||||
#define BOOST_ATOMIC_ATOMIC_FLAG_HPP_INCLUDED_
|
||||
|
||||
#include <boost/atomic/capabilities.hpp>
|
||||
#include <boost/atomic/detail/operations.hpp>
|
||||
#include <boost/atomic/detail/atomic_flag.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
|
||||
using atomics::atomic_flag;
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_ATOMIC_ATOMIC_FLAG_HPP_INCLUDED_
|
||||
@@ -0,0 +1,337 @@
|
||||
/* Boost interval/utility.hpp template implementation file
|
||||
*
|
||||
* Copyright 2000 Jens Maurer
|
||||
* Copyright 2002-2003 Hervé Brönnimann, Guillaume Melquiond, Sylvain Pion
|
||||
*
|
||||
* 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_INTERVAL_UTILITY_HPP
|
||||
#define BOOST_NUMERIC_INTERVAL_UTILITY_HPP
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/numeric/interval/detail/interval_prototype.hpp>
|
||||
#include <boost/numeric/interval/detail/test_input.hpp>
|
||||
#include <boost/numeric/interval/detail/bugs.hpp>
|
||||
#include <algorithm>
|
||||
#include <utility>
|
||||
|
||||
/*
|
||||
* Implementation of simple functions
|
||||
*/
|
||||
|
||||
namespace boost {
|
||||
namespace numeric {
|
||||
|
||||
/*
|
||||
* Utility Functions
|
||||
*/
|
||||
|
||||
template<class T, class Policies> inline
|
||||
const T& lower(const interval<T, Policies>& x)
|
||||
{
|
||||
return x.lower();
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
const T& upper(const interval<T, Policies>& x)
|
||||
{
|
||||
return x.upper();
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
T checked_lower(const interval<T, Policies>& x)
|
||||
{
|
||||
if (empty(x)) {
|
||||
typedef typename Policies::checking checking;
|
||||
return checking::nan();
|
||||
}
|
||||
return x.lower();
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
T checked_upper(const interval<T, Policies>& x)
|
||||
{
|
||||
if (empty(x)) {
|
||||
typedef typename Policies::checking checking;
|
||||
return checking::nan();
|
||||
}
|
||||
return x.upper();
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
T width(const interval<T, Policies>& x)
|
||||
{
|
||||
if (interval_lib::detail::test_input(x)) return static_cast<T>(0);
|
||||
typename Policies::rounding rnd;
|
||||
return rnd.sub_up(x.upper(), x.lower());
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
T median(const interval<T, Policies>& x)
|
||||
{
|
||||
if (interval_lib::detail::test_input(x)) {
|
||||
typedef typename Policies::checking checking;
|
||||
return checking::nan();
|
||||
}
|
||||
typename Policies::rounding rnd;
|
||||
return rnd.median(x.lower(), x.upper());
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> widen(const interval<T, Policies>& x, const T& v)
|
||||
{
|
||||
if (interval_lib::detail::test_input(x))
|
||||
return interval<T, Policies>::empty();
|
||||
typename Policies::rounding rnd;
|
||||
return interval<T, Policies>(rnd.sub_down(x.lower(), v),
|
||||
rnd.add_up (x.upper(), v), true);
|
||||
}
|
||||
|
||||
/*
|
||||
* Set-like operations
|
||||
*/
|
||||
|
||||
template<class T, class Policies> inline
|
||||
bool empty(const interval<T, Policies>& x)
|
||||
{
|
||||
return interval_lib::detail::test_input(x);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
bool zero_in(const interval<T, Policies>& x)
|
||||
{
|
||||
if (interval_lib::detail::test_input(x)) return false;
|
||||
return (!interval_lib::user::is_pos(x.lower())) &&
|
||||
(!interval_lib::user::is_neg(x.upper()));
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
bool in_zero(const interval<T, Policies>& x) // DEPRECATED
|
||||
{
|
||||
return zero_in<T, Policies>(x);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
bool in(const T& x, const interval<T, Policies>& y)
|
||||
{
|
||||
if (interval_lib::detail::test_input(x, y)) return false;
|
||||
return y.lower() <= x && x <= y.upper();
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
bool subset(const interval<T, Policies>& x,
|
||||
const interval<T, Policies>& y)
|
||||
{
|
||||
if (empty(x)) return true;
|
||||
return !empty(y) && y.lower() <= x.lower() && x.upper() <= y.upper();
|
||||
}
|
||||
|
||||
template<class T, class Policies1, class Policies2> inline
|
||||
bool proper_subset(const interval<T, Policies1>& x,
|
||||
const interval<T, Policies2>& y)
|
||||
{
|
||||
if (empty(y)) return false;
|
||||
if (empty(x)) return true;
|
||||
return y.lower() <= x.lower() && x.upper() <= y.upper() &&
|
||||
(y.lower() != x.lower() || x.upper() != y.upper());
|
||||
}
|
||||
|
||||
template<class T, class Policies1, class Policies2> inline
|
||||
bool overlap(const interval<T, Policies1>& x,
|
||||
const interval<T, Policies2>& y)
|
||||
{
|
||||
if (interval_lib::detail::test_input(x, y)) return false;
|
||||
return (x.lower() <= y.lower() && y.lower() <= x.upper()) ||
|
||||
(y.lower() <= x.lower() && x.lower() <= y.upper());
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
bool singleton(const interval<T, Policies>& x)
|
||||
{
|
||||
return !empty(x) && x.lower() == x.upper();
|
||||
}
|
||||
|
||||
template<class T, class Policies1, class Policies2> inline
|
||||
bool equal(const interval<T, Policies1>& x, const interval<T, Policies2>& y)
|
||||
{
|
||||
if (empty(x)) return empty(y);
|
||||
return !empty(y) && x.lower() == y.lower() && x.upper() == y.upper();
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> intersect(const interval<T, Policies>& x,
|
||||
const interval<T, Policies>& y)
|
||||
{
|
||||
BOOST_USING_STD_MIN();
|
||||
BOOST_USING_STD_MAX();
|
||||
if (interval_lib::detail::test_input(x, y))
|
||||
return interval<T, Policies>::empty();
|
||||
const T& l = max BOOST_PREVENT_MACRO_SUBSTITUTION(x.lower(), y.lower());
|
||||
const T& u = min BOOST_PREVENT_MACRO_SUBSTITUTION(x.upper(), y.upper());
|
||||
if (l <= u) return interval<T, Policies>(l, u, true);
|
||||
else return interval<T, Policies>::empty();
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> hull(const interval<T, Policies>& x,
|
||||
const interval<T, Policies>& y)
|
||||
{
|
||||
BOOST_USING_STD_MIN();
|
||||
BOOST_USING_STD_MAX();
|
||||
bool bad_x = interval_lib::detail::test_input(x);
|
||||
bool bad_y = interval_lib::detail::test_input(y);
|
||||
if (bad_x)
|
||||
if (bad_y) return interval<T, Policies>::empty();
|
||||
else return y;
|
||||
else
|
||||
if (bad_y) return x;
|
||||
return interval<T, Policies>(min BOOST_PREVENT_MACRO_SUBSTITUTION(x.lower(), y.lower()),
|
||||
max BOOST_PREVENT_MACRO_SUBSTITUTION(x.upper(), y.upper()), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> hull(const interval<T, Policies>& x, const T& y)
|
||||
{
|
||||
BOOST_USING_STD_MIN();
|
||||
BOOST_USING_STD_MAX();
|
||||
bool bad_x = interval_lib::detail::test_input(x);
|
||||
bool bad_y = interval_lib::detail::test_input<T, Policies>(y);
|
||||
if (bad_y)
|
||||
if (bad_x) return interval<T, Policies>::empty();
|
||||
else return x;
|
||||
else
|
||||
if (bad_x) return interval<T, Policies>(y, y, true);
|
||||
return interval<T, Policies>(min BOOST_PREVENT_MACRO_SUBSTITUTION(x.lower(), y),
|
||||
max BOOST_PREVENT_MACRO_SUBSTITUTION(x.upper(), y), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> hull(const T& x, const interval<T, Policies>& y)
|
||||
{
|
||||
BOOST_USING_STD_MIN();
|
||||
BOOST_USING_STD_MAX();
|
||||
bool bad_x = interval_lib::detail::test_input<T, Policies>(x);
|
||||
bool bad_y = interval_lib::detail::test_input(y);
|
||||
if (bad_x)
|
||||
if (bad_y) return interval<T, Policies>::empty();
|
||||
else return y;
|
||||
else
|
||||
if (bad_y) return interval<T, Policies>(x, x, true);
|
||||
return interval<T, Policies>(min BOOST_PREVENT_MACRO_SUBSTITUTION(x, y.lower()),
|
||||
max BOOST_PREVENT_MACRO_SUBSTITUTION(x, y.upper()), true);
|
||||
}
|
||||
|
||||
template<class T> inline
|
||||
interval<T> hull(const T& x, const T& y)
|
||||
{
|
||||
return interval<T>::hull(x, y);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
std::pair<interval<T, Policies>, interval<T, Policies> >
|
||||
bisect(const interval<T, Policies>& x)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x))
|
||||
return std::pair<I,I>(I::empty(), I::empty());
|
||||
const T m = median(x);
|
||||
return std::pair<I,I>(I(x.lower(), m, true), I(m, x.upper(), true));
|
||||
}
|
||||
|
||||
/*
|
||||
* Elementary functions
|
||||
*/
|
||||
|
||||
template<class T, class Policies> inline
|
||||
T norm(const interval<T, Policies>& x)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x)) {
|
||||
typedef typename Policies::checking checking;
|
||||
return checking::nan();
|
||||
}
|
||||
BOOST_USING_STD_MAX();
|
||||
return max BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<T>(-x.lower()), x.upper());
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> abs(const interval<T, Policies>& x)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x))
|
||||
return I::empty();
|
||||
if (!interval_lib::user::is_neg(x.lower())) return x;
|
||||
if (!interval_lib::user::is_pos(x.upper())) return -x;
|
||||
BOOST_USING_STD_MAX();
|
||||
return I(static_cast<T>(0), max BOOST_PREVENT_MACRO_SUBSTITUTION(static_cast<T>(-x.lower()), x.upper()), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> max BOOST_PREVENT_MACRO_SUBSTITUTION (const interval<T, Policies>& x,
|
||||
const interval<T, Policies>& y)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x, y))
|
||||
return I::empty();
|
||||
BOOST_USING_STD_MAX();
|
||||
return I(max BOOST_PREVENT_MACRO_SUBSTITUTION(x.lower(), y.lower()), max BOOST_PREVENT_MACRO_SUBSTITUTION(x.upper(), y.upper()), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> max BOOST_PREVENT_MACRO_SUBSTITUTION (const interval<T, Policies>& x, const T& y)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x, y))
|
||||
return I::empty();
|
||||
BOOST_USING_STD_MAX();
|
||||
return I(max BOOST_PREVENT_MACRO_SUBSTITUTION(x.lower(), y), max BOOST_PREVENT_MACRO_SUBSTITUTION(x.upper(), y), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> max BOOST_PREVENT_MACRO_SUBSTITUTION (const T& x, const interval<T, Policies>& y)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x, y))
|
||||
return I::empty();
|
||||
BOOST_USING_STD_MAX();
|
||||
return I(max BOOST_PREVENT_MACRO_SUBSTITUTION(x, y.lower()), max BOOST_PREVENT_MACRO_SUBSTITUTION(x, y.upper()), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> min BOOST_PREVENT_MACRO_SUBSTITUTION (const interval<T, Policies>& x,
|
||||
const interval<T, Policies>& y)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x, y))
|
||||
return I::empty();
|
||||
BOOST_USING_STD_MIN();
|
||||
return I(min BOOST_PREVENT_MACRO_SUBSTITUTION(x.lower(), y.lower()), min BOOST_PREVENT_MACRO_SUBSTITUTION(x.upper(), y.upper()), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> min BOOST_PREVENT_MACRO_SUBSTITUTION (const interval<T, Policies>& x, const T& y)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x, y))
|
||||
return I::empty();
|
||||
BOOST_USING_STD_MIN();
|
||||
return I(min BOOST_PREVENT_MACRO_SUBSTITUTION(x.lower(), y), min BOOST_PREVENT_MACRO_SUBSTITUTION(x.upper(), y), true);
|
||||
}
|
||||
|
||||
template<class T, class Policies> inline
|
||||
interval<T, Policies> min BOOST_PREVENT_MACRO_SUBSTITUTION (const T& x, const interval<T, Policies>& y)
|
||||
{
|
||||
typedef interval<T, Policies> I;
|
||||
if (interval_lib::detail::test_input(x, y))
|
||||
return I::empty();
|
||||
BOOST_USING_STD_MIN();
|
||||
return I(min BOOST_PREVENT_MACRO_SUBSTITUTION(x, y.lower()), min BOOST_PREVENT_MACRO_SUBSTITUTION(x, y.upper()), true);
|
||||
}
|
||||
|
||||
} // namespace numeric
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_NUMERIC_INTERVAL_UTILITY_HPP
|
||||
@@ -0,0 +1,774 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Copyright Christopher Kormanyos 2014.
|
||||
// Copyright John Maddock 2014.
|
||||
// Copyright Paul Bristow 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)
|
||||
//
|
||||
|
||||
// Implement quadruple-precision I/O stream operations.
|
||||
|
||||
#ifndef _BOOST_CSTDFLOAT_IOSTREAM_2014_02_15_HPP_
|
||||
#define _BOOST_CSTDFLOAT_IOSTREAM_2014_02_15_HPP_
|
||||
|
||||
#include <boost/math/cstdfloat/cstdfloat_types.hpp>
|
||||
#include <boost/math/cstdfloat/cstdfloat_limits.hpp>
|
||||
#include <boost/math/cstdfloat/cstdfloat_cmath.hpp>
|
||||
|
||||
#if defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_CMATH)
|
||||
#error You can not use <boost/math/cstdfloat/cstdfloat_iostream.hpp> with BOOST_CSTDFLOAT_NO_LIBQUADMATH_CMATH defined.
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_CSTDFLOAT_HAS_INTERNAL_FLOAT128_T) && defined(BOOST_MATH_USE_FLOAT128) && !defined(BOOST_CSTDFLOAT_NO_LIBQUADMATH_SUPPORT)
|
||||
|
||||
#include <cstddef>
|
||||
#include <istream>
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/throw_exception.hpp>
|
||||
|
||||
// #if (0)
|
||||
#if defined(__GNUC__)
|
||||
|
||||
// Forward declarations of quadruple-precision string functions.
|
||||
extern "C" int quadmath_snprintf(char *str, size_t size, const char *format, ...) throw();
|
||||
extern "C" boost::math::cstdfloat::detail::float_internal128_t strtoflt128(const char*, char **) throw();
|
||||
|
||||
namespace std
|
||||
{
|
||||
template<typename char_type, class traits_type>
|
||||
inline std::basic_ostream<char_type, traits_type>& operator<<(std::basic_ostream<char_type, traits_type>& os, const boost::math::cstdfloat::detail::float_internal128_t& x)
|
||||
{
|
||||
std::basic_ostringstream<char_type, traits_type> ostr;
|
||||
ostr.flags(os.flags());
|
||||
ostr.imbue(os.getloc());
|
||||
ostr.precision(os.precision());
|
||||
|
||||
char my_buffer[64U];
|
||||
|
||||
const int my_prec = static_cast<int>(os.precision());
|
||||
const int my_digits = ((my_prec == 0) ? 36 : my_prec);
|
||||
|
||||
const std::ios_base::fmtflags my_flags = os.flags();
|
||||
|
||||
char my_format_string[8U];
|
||||
|
||||
std::size_t my_format_string_index = 0U;
|
||||
|
||||
my_format_string[my_format_string_index] = '%';
|
||||
++my_format_string_index;
|
||||
|
||||
if(my_flags & std::ios_base::showpos) { my_format_string[my_format_string_index] = '+'; ++my_format_string_index; }
|
||||
if(my_flags & std::ios_base::showpoint) { my_format_string[my_format_string_index] = '#'; ++my_format_string_index; }
|
||||
|
||||
my_format_string[my_format_string_index + 0U] = '.';
|
||||
my_format_string[my_format_string_index + 1U] = '*';
|
||||
my_format_string[my_format_string_index + 2U] = 'Q';
|
||||
|
||||
my_format_string_index += 3U;
|
||||
|
||||
char the_notation_char;
|
||||
|
||||
if (my_flags & std::ios_base::scientific) { the_notation_char = 'e'; }
|
||||
else if(my_flags & std::ios_base::fixed) { the_notation_char = 'f'; }
|
||||
else { the_notation_char = 'g'; }
|
||||
|
||||
my_format_string[my_format_string_index + 0U] = the_notation_char;
|
||||
my_format_string[my_format_string_index + 1U] = 0;
|
||||
|
||||
const int v = ::quadmath_snprintf(my_buffer,
|
||||
static_cast<int>(sizeof(my_buffer)),
|
||||
my_format_string,
|
||||
my_digits,
|
||||
x);
|
||||
|
||||
if(v < 0) { BOOST_THROW_EXCEPTION(std::runtime_error("Formatting of boost::float128_t failed internally in quadmath_snprintf().")); }
|
||||
|
||||
if(v >= static_cast<int>(sizeof(my_buffer) - 1U))
|
||||
{
|
||||
// Evidently there is a really long floating-point string here,
|
||||
// such as a small decimal representation in non-scientific notation.
|
||||
// So we have to use dynamic memory allocation for the output
|
||||
// string buffer.
|
||||
|
||||
char* my_buffer2 = static_cast<char*>(0U);
|
||||
|
||||
#ifndef BOOST_NO_EXCEPTIONS
|
||||
try
|
||||
{
|
||||
#endif
|
||||
my_buffer2 = new char[v + 3];
|
||||
#ifndef BOOST_NO_EXCEPTIONS
|
||||
}
|
||||
catch(const std::bad_alloc&)
|
||||
{
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error("Formatting of boost::float128_t failed while allocating memory."));
|
||||
}
|
||||
#endif
|
||||
const int v2 = ::quadmath_snprintf(my_buffer2,
|
||||
v + 3,
|
||||
my_format_string,
|
||||
my_digits,
|
||||
x);
|
||||
|
||||
if(v2 >= v + 3)
|
||||
{
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error("Formatting of boost::float128_t failed."));
|
||||
}
|
||||
|
||||
static_cast<void>(ostr << my_buffer2);
|
||||
|
||||
delete [] my_buffer2;
|
||||
}
|
||||
else
|
||||
{
|
||||
static_cast<void>(ostr << my_buffer);
|
||||
}
|
||||
|
||||
return (os << ostr.str());
|
||||
}
|
||||
|
||||
template<typename char_type, class traits_type>
|
||||
inline std::basic_istream<char_type, traits_type>& operator>>(std::basic_istream<char_type, traits_type>& is, boost::math::cstdfloat::detail::float_internal128_t& x)
|
||||
{
|
||||
std::string str;
|
||||
|
||||
static_cast<void>(is >> str);
|
||||
|
||||
char* p_end;
|
||||
|
||||
x = strtoflt128(str.c_str(), &p_end);
|
||||
|
||||
if(static_cast<std::ptrdiff_t>(p_end - str.c_str()) != static_cast<std::ptrdiff_t>(str.length()))
|
||||
{
|
||||
for(std::string::const_reverse_iterator it = str.rbegin(); it != str.rend(); ++it)
|
||||
{
|
||||
static_cast<void>(is.putback(*it));
|
||||
}
|
||||
|
||||
is.setstate(ios_base::failbit);
|
||||
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error("Unable to interpret input string as a boost::float128_t"));
|
||||
}
|
||||
|
||||
return is;
|
||||
}
|
||||
}
|
||||
|
||||
// #elif defined(__GNUC__)
|
||||
#elif defined(BOOST_INTEL)
|
||||
|
||||
// The section for I/O stream support for the ICC compiler is particularly
|
||||
// long, because these functions must be painstakingly synthesized from
|
||||
// manually-written routines (ICC does not support I/O stream operations
|
||||
// for its _Quad type).
|
||||
|
||||
// The following string-extraction routines are based on the methodology
|
||||
// used in Boost.Multiprecision by John Maddock and Christopher Kormanyos.
|
||||
// This methodology has been slightly modified here for boost::float128_t.
|
||||
|
||||
#include <cstring>
|
||||
#include <cctype>
|
||||
#include <boost/lexical_cast.hpp>
|
||||
|
||||
namespace boost { namespace math { namespace cstdfloat { namespace detail {
|
||||
|
||||
template<class string_type>
|
||||
void format_float_string(string_type& str,
|
||||
int my_exp,
|
||||
int digits,
|
||||
const std::ios_base::fmtflags f,
|
||||
const bool iszero)
|
||||
{
|
||||
typedef typename string_type::size_type size_type;
|
||||
|
||||
const bool scientific = ((f & std::ios_base::scientific) == std::ios_base::scientific);
|
||||
const bool fixed = ((f & std::ios_base::fixed) == std::ios_base::fixed);
|
||||
const bool showpoint = ((f & std::ios_base::showpoint) == std::ios_base::showpoint);
|
||||
const bool showpos = ((f & std::ios_base::showpos) == std::ios_base::showpos);
|
||||
|
||||
const bool b_neg = ((str.size() != 0U) && (str[0] == '-'));
|
||||
|
||||
if(b_neg)
|
||||
{
|
||||
str.erase(0, 1);
|
||||
}
|
||||
|
||||
if(digits == 0)
|
||||
{
|
||||
digits = static_cast<int>((std::max)(str.size(), size_type(16)));
|
||||
}
|
||||
|
||||
if(iszero || str.empty() || (str.find_first_not_of('0') == string_type::npos))
|
||||
{
|
||||
// We will be printing zero, even though the value might not
|
||||
// actually be zero (it just may have been rounded to zero).
|
||||
str = "0";
|
||||
|
||||
if(scientific || fixed)
|
||||
{
|
||||
str.append(1, '.');
|
||||
str.append(size_type(digits), '0');
|
||||
|
||||
if(scientific)
|
||||
{
|
||||
str.append("e+00");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(showpoint)
|
||||
{
|
||||
str.append(1, '.');
|
||||
if(digits > 1)
|
||||
{
|
||||
str.append(size_type(digits - 1), '0');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(b_neg)
|
||||
{
|
||||
str.insert(0U, 1U, '-');
|
||||
}
|
||||
else if(showpos)
|
||||
{
|
||||
str.insert(0U, 1U, '+');
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(!fixed && !scientific && !showpoint)
|
||||
{
|
||||
// Suppress trailing zeros.
|
||||
typename string_type::iterator pos = str.end();
|
||||
|
||||
while(pos != str.begin() && *--pos == '0') { ; }
|
||||
|
||||
if(pos != str.end())
|
||||
{
|
||||
++pos;
|
||||
}
|
||||
|
||||
str.erase(pos, str.end());
|
||||
|
||||
if(str.empty())
|
||||
{
|
||||
str = '0';
|
||||
}
|
||||
}
|
||||
else if(!fixed || (my_exp >= 0))
|
||||
{
|
||||
// Pad out the end with zero's if we need to.
|
||||
|
||||
int chars = static_cast<int>(str.size());
|
||||
chars = digits - chars;
|
||||
|
||||
if(scientific)
|
||||
{
|
||||
++chars;
|
||||
}
|
||||
|
||||
if(chars > 0)
|
||||
{
|
||||
str.append(static_cast<size_type>(chars), '0');
|
||||
}
|
||||
}
|
||||
|
||||
if(fixed || (!scientific && (my_exp >= -4) && (my_exp < digits)))
|
||||
{
|
||||
if((1 + my_exp) > static_cast<int>(str.size()))
|
||||
{
|
||||
// Just pad out the end with zeros.
|
||||
str.append(static_cast<size_type>((1 + my_exp) - static_cast<int>(str.size())), '0');
|
||||
|
||||
if(showpoint || fixed)
|
||||
{
|
||||
str.append(".");
|
||||
}
|
||||
}
|
||||
else if(my_exp + 1 < static_cast<int>(str.size()))
|
||||
{
|
||||
if(my_exp < 0)
|
||||
{
|
||||
str.insert(0U, static_cast<size_type>(-1 - my_exp), '0');
|
||||
str.insert(0U, "0.");
|
||||
}
|
||||
else
|
||||
{
|
||||
// Insert the decimal point:
|
||||
str.insert(static_cast<size_type>(my_exp + 1), 1, '.');
|
||||
}
|
||||
}
|
||||
else if(showpoint || fixed) // we have exactly the digits we require to left of the point
|
||||
{
|
||||
str += ".";
|
||||
}
|
||||
|
||||
if(fixed)
|
||||
{
|
||||
// We may need to add trailing zeros.
|
||||
int l = static_cast<int>(str.find('.') + 1U);
|
||||
l = digits - (static_cast<int>(str.size()) - l);
|
||||
|
||||
if(l > 0)
|
||||
{
|
||||
str.append(size_type(l), '0');
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Scientific format:
|
||||
if(showpoint || (str.size() > 1))
|
||||
{
|
||||
str.insert(1U, 1U, '.');
|
||||
}
|
||||
|
||||
str.append(1U, 'e');
|
||||
string_type e = boost::lexical_cast<string_type>(std::abs(my_exp));
|
||||
|
||||
if(e.size() < 2U)
|
||||
{
|
||||
e.insert(0U, 2U - e.size(), '0');
|
||||
}
|
||||
|
||||
if(my_exp < 0)
|
||||
{
|
||||
e.insert(0U, 1U, '-');
|
||||
}
|
||||
else
|
||||
{
|
||||
e.insert(0U, 1U, '+');
|
||||
}
|
||||
|
||||
str.append(e);
|
||||
}
|
||||
|
||||
if(b_neg)
|
||||
{
|
||||
str.insert(0U, 1U, '-');
|
||||
}
|
||||
else if(showpos)
|
||||
{
|
||||
str.insert(0U, 1U, '+');
|
||||
}
|
||||
}
|
||||
|
||||
template<class float_type, class type_a> inline void eval_convert_to(type_a* pa, const float_type& cb) { *pa = static_cast<type_a>(cb); }
|
||||
template<class float_type, class type_a> inline void eval_add (float_type& b, const type_a& a) { b += a; }
|
||||
template<class float_type, class type_a> inline void eval_subtract (float_type& b, const type_a& a) { b -= a; }
|
||||
template<class float_type, class type_a> inline void eval_multiply (float_type& b, const type_a& a) { b *= a; }
|
||||
template<class float_type> inline void eval_multiply (float_type& b, const float_type& cb, const float_type& cb2) { b = (cb * cb2); }
|
||||
template<class float_type, class type_a> inline void eval_divide (float_type& b, const type_a& a) { b /= a; }
|
||||
template<class float_type> inline void eval_log10 (float_type& b, const float_type& cb) { b = std::log10(cb); }
|
||||
template<class float_type> inline void eval_floor (float_type& b, const float_type& cb) { b = std::floor(cb); }
|
||||
|
||||
inline void round_string_up_at(std::string& s, int pos, int& expon)
|
||||
{
|
||||
// This subroutine rounds up a string representation of a
|
||||
// number at the given position pos.
|
||||
|
||||
if(pos < 0)
|
||||
{
|
||||
s.insert(0U, 1U, '1');
|
||||
s.erase(s.size() - 1U);
|
||||
++expon;
|
||||
}
|
||||
else if(s[pos] == '9')
|
||||
{
|
||||
s[pos] = '0';
|
||||
round_string_up_at(s, pos - 1, expon);
|
||||
}
|
||||
else
|
||||
{
|
||||
if((pos == 0) && (s[pos] == '0') && (s.size() == 1))
|
||||
{
|
||||
++expon;
|
||||
}
|
||||
|
||||
++s[pos];
|
||||
}
|
||||
}
|
||||
|
||||
template<class float_type>
|
||||
std::string convert_to_string(float_type& x,
|
||||
std::streamsize digits,
|
||||
const std::ios_base::fmtflags f)
|
||||
{
|
||||
const bool isneg = (x < 0);
|
||||
const bool iszero = ((!isneg) ? bool(+x < (std::numeric_limits<float_type>::min)())
|
||||
: bool(-x < (std::numeric_limits<float_type>::min)()));
|
||||
const bool isnan = (x != x);
|
||||
const bool isinf = ((!isneg) ? bool(+x > (std::numeric_limits<float_type>::max)())
|
||||
: bool(-x > (std::numeric_limits<float_type>::max)()));
|
||||
|
||||
int expon = 0;
|
||||
|
||||
if(digits <= 0) { digits = std::numeric_limits<float_type>::max_digits10; }
|
||||
|
||||
const int org_digits = static_cast<int>(digits);
|
||||
|
||||
std::string result;
|
||||
|
||||
if(iszero)
|
||||
{
|
||||
result = "0";
|
||||
}
|
||||
else if(isinf)
|
||||
{
|
||||
if(x < 0)
|
||||
{
|
||||
return "-inf";
|
||||
}
|
||||
else
|
||||
{
|
||||
return ((f & std::ios_base::showpos) == std::ios_base::showpos) ? "+inf" : "inf";
|
||||
}
|
||||
}
|
||||
else if(isnan)
|
||||
{
|
||||
return "nan";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Start by figuring out the base-10 exponent.
|
||||
if(isneg) { x = -x; }
|
||||
|
||||
float_type t;
|
||||
float_type ten = 10;
|
||||
|
||||
eval_log10(t, x);
|
||||
eval_floor(t, t);
|
||||
eval_convert_to(&expon, t);
|
||||
|
||||
if(-expon > std::numeric_limits<float_type>::max_exponent10 - 3)
|
||||
{
|
||||
int e = -expon / 2;
|
||||
|
||||
const float_type t2 = boost::math::cstdfloat::detail::pown(ten, e);
|
||||
|
||||
eval_multiply(t, t2, x);
|
||||
eval_multiply(t, t2);
|
||||
|
||||
if((expon & 1) != 0)
|
||||
{
|
||||
eval_multiply(t, ten);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
t = boost::math::cstdfloat::detail::pown(ten, -expon);
|
||||
eval_multiply(t, x);
|
||||
}
|
||||
|
||||
// Make sure that the value lies between [1, 10), and adjust if not.
|
||||
if(t < 1)
|
||||
{
|
||||
eval_multiply(t, 10);
|
||||
|
||||
--expon;
|
||||
}
|
||||
else if(t >= 10)
|
||||
{
|
||||
eval_divide(t, 10);
|
||||
|
||||
++expon;
|
||||
}
|
||||
|
||||
float_type digit;
|
||||
int cdigit;
|
||||
|
||||
// Adjust the number of digits required based on formatting options.
|
||||
if(((f & std::ios_base::fixed) == std::ios_base::fixed) && (expon != -1))
|
||||
{
|
||||
digits += (expon + 1);
|
||||
}
|
||||
|
||||
if((f & std::ios_base::scientific) == std::ios_base::scientific)
|
||||
{
|
||||
++digits;
|
||||
}
|
||||
|
||||
// Extract the base-10 digits one at a time.
|
||||
for(int i = 0; i < digits; ++i)
|
||||
{
|
||||
eval_floor(digit, t);
|
||||
eval_convert_to(&cdigit, digit);
|
||||
|
||||
result += static_cast<char>('0' + cdigit);
|
||||
|
||||
eval_subtract(t, digit);
|
||||
eval_multiply(t, ten);
|
||||
}
|
||||
|
||||
// Possibly round the result.
|
||||
if(digits >= 0)
|
||||
{
|
||||
eval_floor(digit, t);
|
||||
eval_convert_to(&cdigit, digit);
|
||||
eval_subtract(t, digit);
|
||||
|
||||
if((cdigit == 5) && (t == 0))
|
||||
{
|
||||
// Use simple bankers rounding.
|
||||
|
||||
if((static_cast<int>(*result.rbegin() - '0') & 1) != 0)
|
||||
{
|
||||
round_string_up_at(result, static_cast<int>(result.size() - 1U), expon);
|
||||
}
|
||||
}
|
||||
else if(cdigit >= 5)
|
||||
{
|
||||
round_string_up_at(result, static_cast<int>(result.size() - 1), expon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while((result.size() > static_cast<std::string::size_type>(digits)) && result.size())
|
||||
{
|
||||
// We may get here as a result of rounding.
|
||||
|
||||
if(result.size() > 1U)
|
||||
{
|
||||
result.erase(result.size() - 1U);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(expon > 0)
|
||||
{
|
||||
--expon; // so we put less padding in the result.
|
||||
}
|
||||
else
|
||||
{
|
||||
++expon;
|
||||
}
|
||||
|
||||
++digits;
|
||||
}
|
||||
}
|
||||
|
||||
if(isneg)
|
||||
{
|
||||
result.insert(0U, 1U, '-');
|
||||
}
|
||||
|
||||
format_float_string(result, expon, org_digits, f, iszero);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
template <class float_type>
|
||||
bool convert_from_string(float_type& value, const char* p)
|
||||
{
|
||||
value = 0;
|
||||
|
||||
if((p == static_cast<const char*>(0U)) || (*p == static_cast<char>(0)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
bool is_neg = false;
|
||||
bool is_neg_expon = false;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST int ten = 10;
|
||||
|
||||
int expon = 0;
|
||||
int digits_seen = 0;
|
||||
|
||||
BOOST_CONSTEXPR_OR_CONST int max_digits = std::numeric_limits<float_type>::max_digits10 + 1;
|
||||
|
||||
if(*p == static_cast<char>('+'))
|
||||
{
|
||||
++p;
|
||||
}
|
||||
else if(*p == static_cast<char>('-'))
|
||||
{
|
||||
is_neg = true;
|
||||
++p;
|
||||
}
|
||||
|
||||
const bool isnan = ((std::strcmp(p, "nan") == 0) || (std::strcmp(p, "NaN") == 0) || (std::strcmp(p, "NAN") == 0));
|
||||
|
||||
if(isnan)
|
||||
{
|
||||
eval_divide(value, 0);
|
||||
|
||||
if(is_neg)
|
||||
{
|
||||
value = -value;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
const bool isinf = ((std::strcmp(p, "inf") == 0) || (std::strcmp(p, "Inf") == 0) || (std::strcmp(p, "INF") == 0));
|
||||
|
||||
if(isinf)
|
||||
{
|
||||
value = 1;
|
||||
eval_divide(value, 0);
|
||||
|
||||
if(is_neg)
|
||||
{
|
||||
value = -value;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Grab all the leading digits before the decimal point.
|
||||
while(std::isdigit(*p))
|
||||
{
|
||||
eval_multiply(value, ten);
|
||||
eval_add(value, static_cast<int>(*p - '0'));
|
||||
++p;
|
||||
++digits_seen;
|
||||
}
|
||||
|
||||
if(*p == static_cast<char>('.'))
|
||||
{
|
||||
// Grab everything after the point, stop when we've seen
|
||||
// enough digits, even if there are actually more available.
|
||||
|
||||
++p;
|
||||
|
||||
while(std::isdigit(*p))
|
||||
{
|
||||
eval_multiply(value, ten);
|
||||
eval_add(value, static_cast<int>(*p - '0'));
|
||||
++p;
|
||||
--expon;
|
||||
|
||||
if(++digits_seen > max_digits)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
while(std::isdigit(*p))
|
||||
{
|
||||
++p;
|
||||
}
|
||||
}
|
||||
|
||||
// Parse the exponent.
|
||||
if((*p == static_cast<char>('e')) || (*p == static_cast<char>('E')))
|
||||
{
|
||||
++p;
|
||||
|
||||
if(*p == static_cast<char>('+'))
|
||||
{
|
||||
++p;
|
||||
}
|
||||
else if(*p == static_cast<char>('-'))
|
||||
{
|
||||
is_neg_expon = true;
|
||||
++p;
|
||||
}
|
||||
|
||||
int e2 = 0;
|
||||
|
||||
while(std::isdigit(*p))
|
||||
{
|
||||
e2 *= 10;
|
||||
e2 += (*p - '0');
|
||||
++p;
|
||||
}
|
||||
|
||||
if(is_neg_expon)
|
||||
{
|
||||
e2 = -e2;
|
||||
}
|
||||
|
||||
expon += e2;
|
||||
}
|
||||
|
||||
if(expon)
|
||||
{
|
||||
// Scale by 10^expon. Note that 10^expon can be outside the range
|
||||
// of our number type, even though the result is within range.
|
||||
// If that looks likely, then split the calculation in two parts.
|
||||
float_type t;
|
||||
t = ten;
|
||||
|
||||
if(expon > (std::numeric_limits<float_type>::min_exponent10 + 2))
|
||||
{
|
||||
t = boost::math::cstdfloat::detail::pown(t, expon);
|
||||
eval_multiply(value, t);
|
||||
}
|
||||
else
|
||||
{
|
||||
t = boost::math::cstdfloat::detail::pown(t, (expon + digits_seen + 1));
|
||||
eval_multiply(value, t);
|
||||
t = ten;
|
||||
t = boost::math::cstdfloat::detail::pown(t, (-digits_seen - 1));
|
||||
eval_multiply(value, t);
|
||||
}
|
||||
}
|
||||
|
||||
if(is_neg)
|
||||
{
|
||||
value = -value;
|
||||
}
|
||||
|
||||
return (*p == static_cast<char>(0));
|
||||
}
|
||||
} } } } // boost::math::cstdfloat::detail
|
||||
|
||||
namespace std
|
||||
{
|
||||
template<typename char_type, class traits_type>
|
||||
inline std::basic_ostream<char_type, traits_type>& operator<<(std::basic_ostream<char_type, traits_type>& os, const boost::math::cstdfloat::detail::float_internal128_t& x)
|
||||
{
|
||||
boost::math::cstdfloat::detail::float_internal128_t non_const_x = x;
|
||||
|
||||
const std::string str = boost::math::cstdfloat::detail::convert_to_string(non_const_x,
|
||||
os.precision(),
|
||||
os.flags());
|
||||
|
||||
std::basic_ostringstream<char_type, traits_type> ostr;
|
||||
ostr.flags(os.flags());
|
||||
ostr.imbue(os.getloc());
|
||||
ostr.precision(os.precision());
|
||||
|
||||
static_cast<void>(ostr << str);
|
||||
|
||||
return (os << ostr.str());
|
||||
}
|
||||
|
||||
template<typename char_type, class traits_type>
|
||||
inline std::basic_istream<char_type, traits_type>& operator>>(std::basic_istream<char_type, traits_type>& is, boost::math::cstdfloat::detail::float_internal128_t& x)
|
||||
{
|
||||
std::string str;
|
||||
|
||||
static_cast<void>(is >> str);
|
||||
|
||||
const bool conversion_is_ok = boost::math::cstdfloat::detail::convert_from_string(x, str.c_str());
|
||||
|
||||
if(false == conversion_is_ok)
|
||||
{
|
||||
for(std::string::const_reverse_iterator it = str.rbegin(); it != str.rend(); ++it)
|
||||
{
|
||||
static_cast<void>(is.putback(*it));
|
||||
}
|
||||
|
||||
is.setstate(ios_base::failbit);
|
||||
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error("Unable to interpret input string as a boost::float128_t"));
|
||||
}
|
||||
|
||||
return is;
|
||||
}
|
||||
}
|
||||
|
||||
#endif // Use __GNUC__ or BOOST_INTEL libquadmath
|
||||
|
||||
#endif // Not BOOST_CSTDFLOAT_NO_LIBQUADMATH_SUPPORT (i.e., the user would like to have libquadmath support)
|
||||
|
||||
#endif // _BOOST_CSTDFLOAT_IOSTREAM_2014_02_15_HPP_
|
||||
@@ -0,0 +1,77 @@
|
||||
/*==============================================================================
|
||||
Copyright (c) 2005-2010 Joel de Guzman
|
||||
Copyright (c) 2010 Thomas Heller
|
||||
|
||||
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_PHOENIX_CORE_DETAIL_FUNCTION_EQUAL_HPP
|
||||
#define BOOST_PHOENIX_CORE_DETAIL_FUNCTION_EQUAL_HPP
|
||||
|
||||
#include <boost/preprocessor/arithmetic/inc.hpp>
|
||||
#include <boost/preprocessor/repetition/repeat_from_to.hpp>
|
||||
|
||||
#if !defined(BOOST_PHOENIX_DONT_USE_PREPROCESSED_FILES)
|
||||
#include <boost/phoenix/core/detail/cpp03/preprocessed/function_equal.hpp>
|
||||
#else
|
||||
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/function_equal_" BOOST_PHOENIX_LIMIT_STR ".hpp")
|
||||
#endif
|
||||
/*==============================================================================
|
||||
Copyright (c) 2001-2010 Joel de Guzman
|
||||
Copyright (c) 2004 Daniel Wallin
|
||||
Copyright (c) 2010 Thomas Heller
|
||||
|
||||
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(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
#define BOOST_PHOENIX_FUNCTION_EQUAL_R(Z, N, DATA) \
|
||||
&& function_equal_()( \
|
||||
proto::child_c< N >(e1) \
|
||||
, proto::child_c< N >(e2) \
|
||||
) \
|
||||
/**/
|
||||
|
||||
#define BOOST_PHOENIX_FUNCTION_EQUAL(Z, N, DATA) \
|
||||
template <typename Expr1> \
|
||||
result_type \
|
||||
evaluate( \
|
||||
Expr1 const& e1 \
|
||||
, Expr1 const& e2 \
|
||||
, mpl::long_< N > \
|
||||
) const \
|
||||
{ \
|
||||
return \
|
||||
function_equal_()( \
|
||||
proto::child_c<0>(e1) \
|
||||
, proto::child_c<0>(e2) \
|
||||
) \
|
||||
BOOST_PP_REPEAT_FROM_TO( \
|
||||
1 \
|
||||
, N \
|
||||
, BOOST_PHOENIX_FUNCTION_EQUAL_R \
|
||||
, _ \
|
||||
); \
|
||||
} \
|
||||
/**/
|
||||
|
||||
BOOST_PP_REPEAT_FROM_TO(
|
||||
1
|
||||
, BOOST_PP_INC(BOOST_PROTO_MAX_ARITY)
|
||||
, BOOST_PHOENIX_FUNCTION_EQUAL
|
||||
, _
|
||||
)
|
||||
#undef BOOST_PHOENIX_FUNCTION_EQUAL_R
|
||||
#undef BOOST_PHOENIX_FUNCTION_EQUAL
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_PHOENIX_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,433 @@
|
||||
/*=============================================================================
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
BOOST_FUSION_BARRIER_BEGIN
|
||||
template <>
|
||||
struct as_set<1>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0;
|
||||
typedef set<T0> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
|
||||
return result(*i0);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<2>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1;
|
||||
typedef set<T0 , T1> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0);
|
||||
return result(*i0 , *i1);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<3>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2;
|
||||
typedef set<T0 , T1 , T2> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1);
|
||||
return result(*i0 , *i1 , *i2);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<4>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3;
|
||||
typedef set<T0 , T1 , T2 , T3> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2);
|
||||
return result(*i0 , *i1 , *i2 , *i3);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<5>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<6>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<7>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<8>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<9>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<10>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<11>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<12>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<13>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<14>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13; typedef typename fusion::result_of::next<I13>::type I14;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12; typedef typename fusion::result_of::value_of<I13>::type T13;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<15>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13; typedef typename fusion::result_of::next<I13>::type I14; typedef typename fusion::result_of::next<I14>::type I15;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12; typedef typename fusion::result_of::value_of<I13>::type T13; typedef typename fusion::result_of::value_of<I14>::type T14;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<16>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13; typedef typename fusion::result_of::next<I13>::type I14; typedef typename fusion::result_of::next<I14>::type I15; typedef typename fusion::result_of::next<I15>::type I16;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12; typedef typename fusion::result_of::value_of<I13>::type T13; typedef typename fusion::result_of::value_of<I14>::type T14; typedef typename fusion::result_of::value_of<I15>::type T15;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<17>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13; typedef typename fusion::result_of::next<I13>::type I14; typedef typename fusion::result_of::next<I14>::type I15; typedef typename fusion::result_of::next<I15>::type I16; typedef typename fusion::result_of::next<I16>::type I17;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12; typedef typename fusion::result_of::value_of<I13>::type T13; typedef typename fusion::result_of::value_of<I14>::type T14; typedef typename fusion::result_of::value_of<I15>::type T15; typedef typename fusion::result_of::value_of<I16>::type T16;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<18>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13; typedef typename fusion::result_of::next<I13>::type I14; typedef typename fusion::result_of::next<I14>::type I15; typedef typename fusion::result_of::next<I15>::type I16; typedef typename fusion::result_of::next<I16>::type I17; typedef typename fusion::result_of::next<I17>::type I18;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12; typedef typename fusion::result_of::value_of<I13>::type T13; typedef typename fusion::result_of::value_of<I14>::type T14; typedef typename fusion::result_of::value_of<I15>::type T15; typedef typename fusion::result_of::value_of<I16>::type T16; typedef typename fusion::result_of::value_of<I17>::type T17;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<19>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13; typedef typename fusion::result_of::next<I13>::type I14; typedef typename fusion::result_of::next<I14>::type I15; typedef typename fusion::result_of::next<I15>::type I16; typedef typename fusion::result_of::next<I16>::type I17; typedef typename fusion::result_of::next<I17>::type I18; typedef typename fusion::result_of::next<I18>::type I19;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12; typedef typename fusion::result_of::value_of<I13>::type T13; typedef typename fusion::result_of::value_of<I14>::type T14; typedef typename fusion::result_of::value_of<I15>::type T15; typedef typename fusion::result_of::value_of<I16>::type T16; typedef typename fusion::result_of::value_of<I17>::type T17; typedef typename fusion::result_of::value_of<I18>::type T18;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18);
|
||||
}
|
||||
};
|
||||
template <>
|
||||
struct as_set<20>
|
||||
{
|
||||
template <typename I0>
|
||||
struct apply
|
||||
{
|
||||
typedef typename fusion::result_of::next<I0>::type I1; typedef typename fusion::result_of::next<I1>::type I2; typedef typename fusion::result_of::next<I2>::type I3; typedef typename fusion::result_of::next<I3>::type I4; typedef typename fusion::result_of::next<I4>::type I5; typedef typename fusion::result_of::next<I5>::type I6; typedef typename fusion::result_of::next<I6>::type I7; typedef typename fusion::result_of::next<I7>::type I8; typedef typename fusion::result_of::next<I8>::type I9; typedef typename fusion::result_of::next<I9>::type I10; typedef typename fusion::result_of::next<I10>::type I11; typedef typename fusion::result_of::next<I11>::type I12; typedef typename fusion::result_of::next<I12>::type I13; typedef typename fusion::result_of::next<I13>::type I14; typedef typename fusion::result_of::next<I14>::type I15; typedef typename fusion::result_of::next<I15>::type I16; typedef typename fusion::result_of::next<I16>::type I17; typedef typename fusion::result_of::next<I17>::type I18; typedef typename fusion::result_of::next<I18>::type I19; typedef typename fusion::result_of::next<I19>::type I20;
|
||||
typedef typename fusion::result_of::value_of<I0>::type T0; typedef typename fusion::result_of::value_of<I1>::type T1; typedef typename fusion::result_of::value_of<I2>::type T2; typedef typename fusion::result_of::value_of<I3>::type T3; typedef typename fusion::result_of::value_of<I4>::type T4; typedef typename fusion::result_of::value_of<I5>::type T5; typedef typename fusion::result_of::value_of<I6>::type T6; typedef typename fusion::result_of::value_of<I7>::type T7; typedef typename fusion::result_of::value_of<I8>::type T8; typedef typename fusion::result_of::value_of<I9>::type T9; typedef typename fusion::result_of::value_of<I10>::type T10; typedef typename fusion::result_of::value_of<I11>::type T11; typedef typename fusion::result_of::value_of<I12>::type T12; typedef typename fusion::result_of::value_of<I13>::type T13; typedef typename fusion::result_of::value_of<I14>::type T14; typedef typename fusion::result_of::value_of<I15>::type T15; typedef typename fusion::result_of::value_of<I16>::type T16; typedef typename fusion::result_of::value_of<I17>::type T17; typedef typename fusion::result_of::value_of<I18>::type T18; typedef typename fusion::result_of::value_of<I19>::type T19;
|
||||
typedef set<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> type;
|
||||
};
|
||||
template <typename Iterator>
|
||||
BOOST_CXX14_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
static typename apply<Iterator>::type
|
||||
call(Iterator const& i0)
|
||||
{
|
||||
typedef apply<Iterator> gen;
|
||||
typedef typename gen::type result;
|
||||
typename gen::I1 i1 = fusion::next(i0); typename gen::I2 i2 = fusion::next(i1); typename gen::I3 i3 = fusion::next(i2); typename gen::I4 i4 = fusion::next(i3); typename gen::I5 i5 = fusion::next(i4); typename gen::I6 i6 = fusion::next(i5); typename gen::I7 i7 = fusion::next(i6); typename gen::I8 i8 = fusion::next(i7); typename gen::I9 i9 = fusion::next(i8); typename gen::I10 i10 = fusion::next(i9); typename gen::I11 i11 = fusion::next(i10); typename gen::I12 i12 = fusion::next(i11); typename gen::I13 i13 = fusion::next(i12); typename gen::I14 i14 = fusion::next(i13); typename gen::I15 i15 = fusion::next(i14); typename gen::I16 i16 = fusion::next(i15); typename gen::I17 i17 = fusion::next(i16); typename gen::I18 i18 = fusion::next(i17); typename gen::I19 i19 = fusion::next(i18);
|
||||
return result(*i0 , *i1 , *i2 , *i3 , *i4 , *i5 , *i6 , *i7 , *i8 , *i9 , *i10 , *i11 , *i12 , *i13 , *i14 , *i15 , *i16 , *i17 , *i18 , *i19);
|
||||
}
|
||||
};
|
||||
BOOST_FUSION_BARRIER_END
|
||||
}}}
|
||||
@@ -0,0 +1,241 @@
|
||||
// -----------------------------------------------------------
|
||||
//
|
||||
// Copyright (c) 2001-2002 Chuck Allison and Jeremy Siek
|
||||
// Copyright (c) 2003-2006, 2008 Gennaro Prota
|
||||
//
|
||||
// Copyright (c) 2014 Glen Joseph Fernandes
|
||||
// glenfe at live dot com
|
||||
//
|
||||
// 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_DETAIL_DYNAMIC_BITSET_HPP
|
||||
#define BOOST_DETAIL_DYNAMIC_BITSET_HPP
|
||||
|
||||
#include <memory>
|
||||
#include <cstddef>
|
||||
#include "boost/config.hpp"
|
||||
#include "boost/detail/workaround.hpp"
|
||||
|
||||
|
||||
namespace boost {
|
||||
|
||||
namespace detail {
|
||||
namespace dynamic_bitset_impl {
|
||||
|
||||
// Gives (read-)access to the object representation
|
||||
// of an object of type T (3.9p4). CANNOT be used
|
||||
// on a base sub-object
|
||||
//
|
||||
template <typename T>
|
||||
inline const unsigned char * object_representation (T* p)
|
||||
{
|
||||
return static_cast<const unsigned char *>(static_cast<const void *>(p));
|
||||
}
|
||||
|
||||
template<typename T, int amount, int width /* = default */>
|
||||
struct shifter
|
||||
{
|
||||
static void left_shift(T & v) {
|
||||
amount >= width ? (v = 0)
|
||||
: (v >>= BOOST_DYNAMIC_BITSET_WRAP_CONSTANT(amount));
|
||||
}
|
||||
};
|
||||
|
||||
// ------- count function implementation --------------
|
||||
|
||||
typedef unsigned char byte_type;
|
||||
|
||||
// These two entities
|
||||
//
|
||||
// enum mode { access_by_bytes, access_by_blocks };
|
||||
// template <mode> struct mode_to_type {};
|
||||
//
|
||||
// were removed, since the regression logs (as of 24 Aug 2008)
|
||||
// showed that several compilers had troubles with recognizing
|
||||
//
|
||||
// const mode m = access_by_bytes
|
||||
//
|
||||
// as a constant expression
|
||||
//
|
||||
// * So, we'll use bool, instead of enum *.
|
||||
//
|
||||
template <bool value>
|
||||
struct value_to_type
|
||||
{
|
||||
value_to_type() {}
|
||||
};
|
||||
const bool access_by_bytes = true;
|
||||
const bool access_by_blocks = false;
|
||||
|
||||
|
||||
// the table: wrapped in a class template, so
|
||||
// that it is only instantiated if/when needed
|
||||
//
|
||||
template <bool dummy_name = true>
|
||||
struct count_table { static const byte_type table[]; };
|
||||
|
||||
template <>
|
||||
struct count_table<false> { /* no table */ };
|
||||
|
||||
|
||||
const unsigned int table_width = 8;
|
||||
template <bool b>
|
||||
const byte_type count_table<b>::table[] =
|
||||
{
|
||||
// Automatically generated by GPTableGen.exe v.1.0
|
||||
//
|
||||
0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5,
|
||||
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||
1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||
2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7,
|
||||
3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8
|
||||
};
|
||||
|
||||
|
||||
// overload for access by bytes
|
||||
//
|
||||
|
||||
template <typename Iterator>
|
||||
inline std::size_t do_count(Iterator first, std::size_t length,
|
||||
int /*dummy param*/,
|
||||
value_to_type<access_by_bytes>* )
|
||||
{
|
||||
std::size_t num = 0;
|
||||
if (length)
|
||||
{
|
||||
const byte_type * p = object_representation(&*first);
|
||||
length *= sizeof(*first);
|
||||
|
||||
do {
|
||||
num += count_table<>::table[*p];
|
||||
++p;
|
||||
--length;
|
||||
|
||||
} while (length);
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
|
||||
// overload for access by blocks
|
||||
//
|
||||
template <typename Iterator, typename ValueType>
|
||||
inline std::size_t do_count(Iterator first, std::size_t length, ValueType,
|
||||
value_to_type<access_by_blocks>*)
|
||||
{
|
||||
std::size_t num = 0;
|
||||
while (length){
|
||||
|
||||
ValueType value = *first;
|
||||
while (value) {
|
||||
num += count_table<>::table[value & ((1u<<table_width) - 1)];
|
||||
value >>= table_width;
|
||||
}
|
||||
|
||||
++first;
|
||||
--length;
|
||||
}
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------
|
||||
|
||||
|
||||
// Some library implementations simply return a dummy
|
||||
// value such as
|
||||
//
|
||||
// size_type(-1) / sizeof(T)
|
||||
//
|
||||
// from vector<>::max_size. This tries to get more
|
||||
// meaningful info.
|
||||
//
|
||||
template <typename T>
|
||||
inline typename T::size_type vector_max_size_workaround(const T & v)
|
||||
BOOST_NOEXCEPT
|
||||
{
|
||||
typedef typename T::allocator_type allocator_type;
|
||||
|
||||
const allocator_type& alloc = v.get_allocator();
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_ALLOCATOR)
|
||||
typedef std::allocator_traits<allocator_type> allocator_traits;
|
||||
|
||||
const typename allocator_traits::size_type alloc_max =
|
||||
allocator_traits::max_size(alloc);
|
||||
#else
|
||||
const typename allocator_type::size_type alloc_max = alloc.max_size();
|
||||
#endif
|
||||
|
||||
const typename T::size_type container_max = v.max_size();
|
||||
|
||||
return alloc_max < container_max ? alloc_max : container_max;
|
||||
}
|
||||
|
||||
// for static_asserts
|
||||
template <typename T>
|
||||
struct allowed_block_type {
|
||||
enum { value = T(-1) > 0 }; // ensure T has no sign
|
||||
};
|
||||
|
||||
template <>
|
||||
struct allowed_block_type<bool> {
|
||||
enum { value = false };
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
struct is_numeric {
|
||||
enum { value = false };
|
||||
};
|
||||
|
||||
# define BOOST_dynamic_bitset_is_numeric(x) \
|
||||
template<> \
|
||||
struct is_numeric< x > { \
|
||||
enum { value = true }; \
|
||||
} /**/
|
||||
|
||||
BOOST_dynamic_bitset_is_numeric(bool);
|
||||
BOOST_dynamic_bitset_is_numeric(char);
|
||||
|
||||
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
||||
BOOST_dynamic_bitset_is_numeric(wchar_t);
|
||||
#endif
|
||||
|
||||
BOOST_dynamic_bitset_is_numeric(signed char);
|
||||
BOOST_dynamic_bitset_is_numeric(short int);
|
||||
BOOST_dynamic_bitset_is_numeric(int);
|
||||
BOOST_dynamic_bitset_is_numeric(long int);
|
||||
|
||||
BOOST_dynamic_bitset_is_numeric(unsigned char);
|
||||
BOOST_dynamic_bitset_is_numeric(unsigned short);
|
||||
BOOST_dynamic_bitset_is_numeric(unsigned int);
|
||||
BOOST_dynamic_bitset_is_numeric(unsigned long);
|
||||
|
||||
#if defined(BOOST_HAS_LONG_LONG)
|
||||
BOOST_dynamic_bitset_is_numeric(::boost::long_long_type);
|
||||
BOOST_dynamic_bitset_is_numeric(::boost::ulong_long_type);
|
||||
#endif
|
||||
|
||||
// intentionally omitted
|
||||
//BOOST_dynamic_bitset_is_numeric(float);
|
||||
//BOOST_dynamic_bitset_is_numeric(double);
|
||||
//BOOST_dynamic_bitset_is_numeric(long double);
|
||||
|
||||
#undef BOOST_dynamic_bitset_is_numeric
|
||||
|
||||
} // dynamic_bitset_impl
|
||||
} // namespace detail
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#endif // include guard
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
// Copyright Daniel Wallin, David Abrahams 2005. 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 DEFAULT_050329_HPP
|
||||
# define DEFAULT_050329_HPP
|
||||
|
||||
# include <boost/detail/workaround.hpp>
|
||||
|
||||
namespace boost { namespace parameter { namespace aux {
|
||||
|
||||
// A wrapper for the default value passed by the user when resolving
|
||||
// the value of the parameter with the given Keyword
|
||||
template <class Keyword, class Value>
|
||||
struct default_
|
||||
{
|
||||
default_(Value& x)
|
||||
: value(x)
|
||||
{}
|
||||
|
||||
Value& value;
|
||||
};
|
||||
|
||||
//
|
||||
// lazy_default --
|
||||
//
|
||||
// A wrapper for the default value computation function passed by
|
||||
// the user when resolving the value of the parameter with the
|
||||
// given keyword
|
||||
//
|
||||
# if BOOST_WORKAROUND(__EDG_VERSION__, <= 300)
|
||||
// These compilers need a little extra help with overload
|
||||
// resolution; we have empty_arg_list's operator[] accept a base
|
||||
// class to make that overload less preferable.
|
||||
template <class KW, class DefaultComputer>
|
||||
struct lazy_default_base
|
||||
{
|
||||
lazy_default_base(DefaultComputer const& x)
|
||||
: compute_default(x)
|
||||
{}
|
||||
DefaultComputer const& compute_default;
|
||||
};
|
||||
|
||||
template <class KW, class DefaultComputer>
|
||||
struct lazy_default
|
||||
: lazy_default_base<KW,DefaultComputer>
|
||||
{
|
||||
lazy_default(DefaultComputer const & x)
|
||||
: lazy_default_base<KW,DefaultComputer>(x)
|
||||
{}
|
||||
};
|
||||
# define BOOST_PARAMETER_lazy_default_fallback lazy_default_base
|
||||
# else
|
||||
template <class KW, class DefaultComputer>
|
||||
struct lazy_default
|
||||
{
|
||||
lazy_default(const DefaultComputer& x)
|
||||
: compute_default(x)
|
||||
{}
|
||||
DefaultComputer const& compute_default;
|
||||
};
|
||||
# define BOOST_PARAMETER_lazy_default_fallback lazy_default
|
||||
# endif
|
||||
|
||||
}}} // namespace boost::parameter::aux
|
||||
|
||||
#endif // DEFAULT_050329_HPP
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
Copyright Rene Rivera 2008-2013
|
||||
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_LIBRARY_STD__PREFIX_H
|
||||
#define BOOST_PREDEF_LIBRARY_STD__PREFIX_H
|
||||
|
||||
/*
|
||||
We need to include an STD header to gives us the context
|
||||
of which library we are using. The "smallest" code-wise header
|
||||
seems to be <exception>. Boost uses <utility> but as far
|
||||
as I can tell (RR) it's not a stand-alone header in most
|
||||
implementations. Using <exception> also has the benefit of
|
||||
being available in EC++, so we get a chance to make this work
|
||||
for embedded users. And since it's not a header impacted by TR1
|
||||
there's no magic needed for inclusion in the face of the
|
||||
Boost.TR1 library.
|
||||
*/
|
||||
#include <boost/predef/detail/_exception.h>
|
||||
|
||||
#endif
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,48 @@
|
||||
#include "SplashScreen.hpp"
|
||||
|
||||
#include <QPixmap>
|
||||
#include <QVBoxLayout>
|
||||
#include <QCheckBox>
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include "revision_utils.hpp"
|
||||
#include "pimpl_impl.hpp"
|
||||
|
||||
#include "moc_SplashScreen.cpp"
|
||||
|
||||
class SplashScreen::impl
|
||||
{
|
||||
public:
|
||||
impl ()
|
||||
: checkbox_ {"Do not show this again"}
|
||||
{
|
||||
main_layout_.addStretch ();
|
||||
main_layout_.addWidget (&checkbox_, 0, Qt::AlignRight);
|
||||
}
|
||||
|
||||
QVBoxLayout main_layout_;
|
||||
QCheckBox checkbox_;
|
||||
};
|
||||
|
||||
SplashScreen::SplashScreen ()
|
||||
: QSplashScreen {QPixmap {":/splash.png"}, Qt::WindowStaysOnTopHint}
|
||||
{
|
||||
setLayout (&m_->main_layout_);
|
||||
showMessage ("<h2>" + QString {"WSJT-X v" +
|
||||
QCoreApplication::applicationVersion() + " " +
|
||||
revision ()}.simplified () + "</h2>"
|
||||
"V1.8 has many new features.<br /><br />"
|
||||
"The release notes have more details.<br /><br />"
|
||||
"Send issue reports to wsjtgroup@yahoogroups.com, and be sure to save .wav<br />"
|
||||
"files where appropriate.<br /><br />"
|
||||
"<b>Open the Help menu and select Release Notes for more details.</b><br />"
|
||||
"<img src=\":/icon_128x128.png\" />"
|
||||
"<img src=\":/gpl-v3-logo.svg\" height=\"80\" />", Qt::AlignCenter);
|
||||
connect (&m_->checkbox_, &QCheckBox::stateChanged, [this] (int s) {
|
||||
if (Qt::Checked == s) Q_EMIT disabled ();
|
||||
});
|
||||
}
|
||||
|
||||
SplashScreen::~SplashScreen ()
|
||||
{
|
||||
}
|
||||
@@ -0,0 +1,658 @@
|
||||
#include "FrequencyList.hpp"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <utility>
|
||||
#include <limits>
|
||||
|
||||
#include <QMetaType>
|
||||
#include <QAbstractTableModel>
|
||||
#include <QString>
|
||||
#include <QList>
|
||||
#include <QListIterator>
|
||||
#include <QVector>
|
||||
#include <QStringList>
|
||||
#include <QMimeData>
|
||||
#include <QDataStream>
|
||||
#include <QByteArray>
|
||||
#include <QDebug>
|
||||
#include <QDebugStateSaver>
|
||||
|
||||
#include "Radio.hpp"
|
||||
#include "Bands.hpp"
|
||||
#include "pimpl_impl.hpp"
|
||||
|
||||
#include "moc_FrequencyList.cpp"
|
||||
|
||||
namespace
|
||||
{
|
||||
FrequencyList::FrequencyItems const default_frequency_list =
|
||||
{
|
||||
{136000, Modes::WSPR},
|
||||
{136130, Modes::JT65},
|
||||
{474200, Modes::JT65},
|
||||
{474200, Modes::JT9},
|
||||
{474200, Modes::WSPR},
|
||||
{660000, Modes::FreqCal},
|
||||
{880000, Modes::FreqCal},
|
||||
{1210000, Modes::FreqCal},
|
||||
{1836600, Modes::WSPR},
|
||||
{1838000, Modes::JT65},
|
||||
{1840000, Modes::JT9},
|
||||
{2500000, Modes::FreqCal},
|
||||
{3330000, Modes::FreqCal},
|
||||
{3576000, Modes::JT65},
|
||||
{3578000, Modes::JT9},
|
||||
{3592600, Modes::WSPR},
|
||||
{5357000, Modes::JT65},
|
||||
{5000000, Modes::FreqCal},
|
||||
{7038600, Modes::WSPR},
|
||||
{7076000, Modes::JT65},
|
||||
{7078000, Modes::JT9},
|
||||
{7850000, Modes::FreqCal},
|
||||
{10000000, Modes::FreqCal},
|
||||
{10138000, Modes::JT65},
|
||||
{10138700, Modes::WSPR},
|
||||
{10140000, Modes::JT9},
|
||||
{14095600, Modes::WSPR},
|
||||
{14076000, Modes::JT65},
|
||||
{14078000, Modes::JT9},
|
||||
{14670000, Modes::FreqCal},
|
||||
{15000000, Modes::FreqCal},
|
||||
{18102000, Modes::JT65},
|
||||
{18104000, Modes::JT9},
|
||||
{18104600, Modes::WSPR},
|
||||
{20000000, Modes::FreqCal},
|
||||
{21076000, Modes::JT65},
|
||||
{21078000, Modes::JT9},
|
||||
{21094600, Modes::WSPR},
|
||||
{24917000, Modes::JT65},
|
||||
{24919000, Modes::JT9},
|
||||
{24924600, Modes::WSPR},
|
||||
{28076000, Modes::JT65},
|
||||
{28078000, Modes::JT9},
|
||||
{28124600, Modes::WSPR},
|
||||
{50000000, Modes::Echo},
|
||||
{50276000, Modes::JT65},
|
||||
{50280000, Modes::MSK144},
|
||||
{50293000, Modes::WSPR},
|
||||
{70091000, Modes::JT65},
|
||||
{70091000, Modes::WSPR},
|
||||
{144000000, Modes::Echo},
|
||||
{144120000, Modes::JT65},
|
||||
{144120000, Modes::Echo},
|
||||
{144140000, Modes::MSK144},
|
||||
{144489000, Modes::WSPR},
|
||||
{222065000, Modes::JT65},
|
||||
{222065000, Modes::Echo},
|
||||
{432065000, Modes::Echo},
|
||||
{432065000, Modes::JT65},
|
||||
{432300000, Modes::WSPR},
|
||||
{902065000, Modes::JT65},
|
||||
{1296065000, Modes::Echo},
|
||||
{1296065000, Modes::JT65},
|
||||
{1296500000, Modes::WSPR},
|
||||
{2301000000, Modes::Echo},
|
||||
{2301065000, Modes::JT4},
|
||||
{2301065000, Modes::JT65},
|
||||
{2304065000, Modes::Echo},
|
||||
{2304065000, Modes::JT4},
|
||||
{2304065000, Modes::JT65},
|
||||
{2320065000, Modes::Echo},
|
||||
{2320065000, Modes::JT4},
|
||||
{2320065000, Modes::JT65},
|
||||
{3400065000, Modes::Echo},
|
||||
{3400065000, Modes::JT4},
|
||||
{3400065000, Modes::JT65},
|
||||
{3456065000, Modes::JT4},
|
||||
{3456065000, Modes::JT65},
|
||||
{5760065000, Modes::Echo},
|
||||
{5760065000, Modes::JT4},
|
||||
{5760065000, Modes::JT65},
|
||||
{10368100000, Modes::Echo},
|
||||
{10368100000, Modes::JT4},
|
||||
{10368100000, Modes::JT65},
|
||||
{24048100000, Modes::Echo},
|
||||
{24048100000, Modes::JT4},
|
||||
{24048100000, Modes::JT65},
|
||||
};
|
||||
}
|
||||
|
||||
#if !defined (QT_NO_DEBUG_STREAM)
|
||||
QDebug operator << (QDebug debug, FrequencyList::Item const& item)
|
||||
{
|
||||
QDebugStateSaver saver {debug};
|
||||
debug.nospace () << "FrequencyItem("
|
||||
<< item.frequency_ << ", "
|
||||
<< item.mode_ << ')';
|
||||
return debug;
|
||||
}
|
||||
#endif
|
||||
|
||||
QDataStream& operator << (QDataStream& os, FrequencyList::Item const& item)
|
||||
{
|
||||
return os << item.frequency_
|
||||
<< item.mode_;
|
||||
}
|
||||
|
||||
QDataStream& operator >> (QDataStream& is, FrequencyList::Item& item)
|
||||
{
|
||||
return is >> item.frequency_
|
||||
>> item.mode_;
|
||||
}
|
||||
|
||||
class FrequencyList::impl final
|
||||
: public QAbstractTableModel
|
||||
{
|
||||
public:
|
||||
impl (Bands const * bands, QObject * parent)
|
||||
: QAbstractTableModel {parent}
|
||||
, bands_ {bands}
|
||||
, mode_filter_ {Modes::NULL_MODE}
|
||||
{
|
||||
}
|
||||
|
||||
FrequencyItems frequency_list (FrequencyItems);
|
||||
QModelIndex add (Item);
|
||||
|
||||
// Implement the QAbstractTableModel interface
|
||||
int rowCount (QModelIndex const& parent = QModelIndex {}) const override;
|
||||
int columnCount (QModelIndex const& parent = QModelIndex {}) const override;
|
||||
Qt::ItemFlags flags (QModelIndex const& = QModelIndex {}) const override;
|
||||
QVariant data (QModelIndex const&, int role = Qt::DisplayRole) const override;
|
||||
bool setData (QModelIndex const&, QVariant const& value, int role = Qt::EditRole) override;
|
||||
QVariant headerData (int section, Qt::Orientation, int = Qt::DisplayRole) const override;
|
||||
bool removeRows (int row, int count, QModelIndex const& parent = QModelIndex {}) override;
|
||||
bool insertRows (int row, int count, QModelIndex const& parent = QModelIndex {}) override;
|
||||
QStringList mimeTypes () const override;
|
||||
QMimeData * mimeData (QModelIndexList const&) const override;
|
||||
|
||||
static int constexpr num_cols {3};
|
||||
static auto constexpr mime_type = "application/wsjt.Frequencies";
|
||||
|
||||
Bands const * bands_;
|
||||
FrequencyItems frequency_list_;
|
||||
Mode mode_filter_;
|
||||
};
|
||||
|
||||
FrequencyList::FrequencyList (Bands const * bands, QObject * parent)
|
||||
: QSortFilterProxyModel {parent}
|
||||
, m_ {bands, parent}
|
||||
{
|
||||
setSourceModel (&*m_);
|
||||
setSortRole (SortRole);
|
||||
}
|
||||
|
||||
FrequencyList::~FrequencyList ()
|
||||
{
|
||||
}
|
||||
|
||||
auto FrequencyList::frequency_list (FrequencyItems frequency_list) -> FrequencyItems
|
||||
{
|
||||
return m_->frequency_list (frequency_list);
|
||||
}
|
||||
|
||||
auto FrequencyList::frequency_list () const -> FrequencyItems const&
|
||||
{
|
||||
return m_->frequency_list_;
|
||||
}
|
||||
|
||||
int FrequencyList::best_working_frequency (Frequency f) const
|
||||
{
|
||||
int result {-1};
|
||||
auto const& target_band = m_->bands_->find (f);
|
||||
if (!target_band.isEmpty ())
|
||||
{
|
||||
Radio::FrequencyDelta delta {std::numeric_limits<Radio::FrequencyDelta>::max ()};
|
||||
// find a frequency in the same band that is allowed
|
||||
for (int row = 0; row < rowCount (); ++row)
|
||||
{
|
||||
auto const& source_row = mapToSource (index (row, 0)).row ();
|
||||
auto const& candidate_frequency = m_->frequency_list_[source_row].frequency_;
|
||||
auto const& band = m_->bands_->find (candidate_frequency);
|
||||
if (band == target_band)
|
||||
{
|
||||
// take closest band match
|
||||
Radio::FrequencyDelta new_delta = f - candidate_frequency;
|
||||
if (std::abs (new_delta) < std::abs (delta))
|
||||
{
|
||||
delta = new_delta;
|
||||
result = row;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
int FrequencyList::best_working_frequency (QString const& target_band) const
|
||||
{
|
||||
int result {-1};
|
||||
if (!target_band.isEmpty ())
|
||||
{
|
||||
// find a frequency in the same band that is allowed
|
||||
for (int row = 0; row < rowCount (); ++row)
|
||||
{
|
||||
auto const& source_row = mapToSource (index (row, 0)).row ();
|
||||
auto const& band = m_->bands_->find (m_->frequency_list_[source_row].frequency_);
|
||||
if (band == target_band)
|
||||
{
|
||||
return row;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void FrequencyList::reset_to_defaults ()
|
||||
{
|
||||
m_->frequency_list (default_frequency_list);
|
||||
}
|
||||
|
||||
QModelIndex FrequencyList::add (Item f)
|
||||
{
|
||||
return mapFromSource (m_->add (f));
|
||||
}
|
||||
|
||||
bool FrequencyList::remove (Item f)
|
||||
{
|
||||
auto row = m_->frequency_list_.indexOf (f);
|
||||
|
||||
if (0 > row)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return m_->removeRow (row);
|
||||
}
|
||||
|
||||
namespace
|
||||
{
|
||||
bool row_is_higher (QModelIndex const& lhs, QModelIndex const& rhs)
|
||||
{
|
||||
return lhs.row () > rhs.row ();
|
||||
}
|
||||
}
|
||||
|
||||
bool FrequencyList::removeDisjointRows (QModelIndexList rows)
|
||||
{
|
||||
bool result {true};
|
||||
|
||||
// We must work with source model indexes because we don't want row
|
||||
// removes to invalidate model indexes we haven't yet processed. We
|
||||
// achieve that by processing them in decending row order.
|
||||
for (int r = 0; r < rows.size (); ++r)
|
||||
{
|
||||
rows[r] = mapToSource (rows[r]);
|
||||
}
|
||||
|
||||
// reverse sort by row
|
||||
qSort (rows.begin (), rows.end (), row_is_higher);
|
||||
Q_FOREACH (auto index, rows)
|
||||
{
|
||||
if (result && !m_->removeRow (index.row ()))
|
||||
{
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void FrequencyList::filter (Mode mode)
|
||||
{
|
||||
m_->mode_filter_ = mode;
|
||||
invalidateFilter ();
|
||||
}
|
||||
|
||||
bool FrequencyList::filterAcceptsRow (int source_row, QModelIndex const& /* parent */) const
|
||||
{
|
||||
bool result {true};
|
||||
if (m_->mode_filter_ != Modes::NULL_MODE)
|
||||
{
|
||||
auto const& item = m_->frequency_list_[source_row];
|
||||
// we pass NULL_MODE mode rows unless filtering for FreqCal mode
|
||||
result = (Modes::NULL_MODE == item.mode_ && m_->mode_filter_ != Modes::FreqCal)
|
||||
|| m_->mode_filter_ == item.mode_;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
auto FrequencyList::impl::frequency_list (FrequencyItems frequency_list) -> FrequencyItems
|
||||
{
|
||||
beginResetModel ();
|
||||
std::swap (frequency_list_, frequency_list);
|
||||
endResetModel ();
|
||||
return frequency_list;
|
||||
}
|
||||
|
||||
QModelIndex FrequencyList::impl::add (Item f)
|
||||
{
|
||||
// Any Frequency that isn't in the list may be added
|
||||
if (!frequency_list_.contains (f))
|
||||
{
|
||||
auto row = frequency_list_.size ();
|
||||
|
||||
beginInsertRows (QModelIndex {}, row, row);
|
||||
frequency_list_.append (f);
|
||||
endInsertRows ();
|
||||
|
||||
return index (row, 0);
|
||||
}
|
||||
return QModelIndex {};
|
||||
}
|
||||
|
||||
int FrequencyList::impl::rowCount (QModelIndex const& parent) const
|
||||
{
|
||||
return parent.isValid () ? 0 : frequency_list_.size ();
|
||||
}
|
||||
|
||||
int FrequencyList::impl::columnCount (QModelIndex const& parent) const
|
||||
{
|
||||
return parent.isValid () ? 0 : num_cols;
|
||||
}
|
||||
|
||||
Qt::ItemFlags FrequencyList::impl::flags (QModelIndex const& index) const
|
||||
{
|
||||
auto result = QAbstractTableModel::flags (index) | Qt::ItemIsDropEnabled;
|
||||
auto row = index.row ();
|
||||
auto column = index.column ();
|
||||
if (index.isValid ()
|
||||
&& row < frequency_list_.size ()
|
||||
&& column < num_cols)
|
||||
{
|
||||
if (frequency_mhz_column != column)
|
||||
{
|
||||
result |= Qt::ItemIsEditable | Qt::ItemIsDragEnabled;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QVariant FrequencyList::impl::data (QModelIndex const& index, int role) const
|
||||
{
|
||||
QVariant item;
|
||||
|
||||
auto const& row = index.row ();
|
||||
auto const& column = index.column ();
|
||||
|
||||
if (index.isValid ()
|
||||
&& row < frequency_list_.size ()
|
||||
&& column < num_cols)
|
||||
{
|
||||
auto const& frequency_item = frequency_list_.at (row);
|
||||
switch (column)
|
||||
{
|
||||
case mode_column:
|
||||
switch (role)
|
||||
{
|
||||
case SortRole:
|
||||
case Qt::DisplayRole:
|
||||
case Qt::EditRole:
|
||||
case Qt::AccessibleTextRole:
|
||||
item = Modes::name (frequency_item.mode_);
|
||||
break;
|
||||
|
||||
case Qt::ToolTipRole:
|
||||
case Qt::AccessibleDescriptionRole:
|
||||
item = tr ("Mode");
|
||||
break;
|
||||
|
||||
case Qt::TextAlignmentRole:
|
||||
item = Qt::AlignHCenter + Qt::AlignVCenter;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case frequency_column:
|
||||
switch (role)
|
||||
{
|
||||
case SortRole:
|
||||
case Qt::EditRole:
|
||||
case Qt::AccessibleTextRole:
|
||||
item = frequency_item.frequency_;
|
||||
break;
|
||||
|
||||
case Qt::DisplayRole:
|
||||
{
|
||||
auto const& band = bands_->find (frequency_item.frequency_);
|
||||
item = Radio::pretty_frequency_MHz_string (frequency_item.frequency_)
|
||||
+ " MHz (" + (band.isEmpty () ? "OOB" : band) + ')';
|
||||
}
|
||||
break;
|
||||
|
||||
case Qt::ToolTipRole:
|
||||
case Qt::AccessibleDescriptionRole:
|
||||
item = tr ("Frequency");
|
||||
break;
|
||||
|
||||
case Qt::TextAlignmentRole:
|
||||
item = Qt::AlignRight + Qt::AlignVCenter;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case frequency_mhz_column:
|
||||
switch (role)
|
||||
{
|
||||
case Qt::EditRole:
|
||||
case Qt::AccessibleTextRole:
|
||||
item = Radio::frequency_MHz_string (frequency_item.frequency_);
|
||||
break;
|
||||
|
||||
case Qt::DisplayRole:
|
||||
{
|
||||
auto const& band = bands_->find (frequency_item.frequency_);
|
||||
item = Radio::pretty_frequency_MHz_string (frequency_item.frequency_)
|
||||
+ " MHz (" + (band.isEmpty () ? "OOB" : band) + ')';
|
||||
}
|
||||
break;
|
||||
|
||||
case Qt::ToolTipRole:
|
||||
case Qt::AccessibleDescriptionRole:
|
||||
item = tr ("Frequency (MHz)");
|
||||
break;
|
||||
|
||||
case Qt::TextAlignmentRole:
|
||||
item = Qt::AlignRight + Qt::AlignVCenter;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
bool FrequencyList::impl::setData (QModelIndex const& model_index, QVariant const& value, int role)
|
||||
{
|
||||
bool changed {false};
|
||||
|
||||
auto const& row = model_index.row ();
|
||||
if (model_index.isValid ()
|
||||
&& Qt::EditRole == role
|
||||
&& row < frequency_list_.size ())
|
||||
{
|
||||
QVector<int> roles;
|
||||
roles << role;
|
||||
|
||||
auto& item = frequency_list_[row];
|
||||
switch (model_index.column ())
|
||||
{
|
||||
case mode_column:
|
||||
if (value.canConvert<Mode> ())
|
||||
{
|
||||
auto mode = Modes::value (value.toString ());
|
||||
if (mode != item.mode_)
|
||||
{
|
||||
item.mode_ = mode;
|
||||
Q_EMIT dataChanged (model_index, model_index, roles);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case frequency_column:
|
||||
if (value.canConvert<Frequency> ())
|
||||
{
|
||||
Radio::Frequency frequency {qvariant_cast <Radio::Frequency> (value)};
|
||||
if (frequency != item.frequency_)
|
||||
{
|
||||
item.frequency_ = frequency;
|
||||
// mark derived column (1) changed as well
|
||||
Q_EMIT dataChanged (index (model_index.row (), 1), model_index, roles);
|
||||
changed = true;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
QVariant FrequencyList::impl::headerData (int section, Qt::Orientation orientation, int role) const
|
||||
{
|
||||
QVariant header;
|
||||
if (Qt::DisplayRole == role
|
||||
&& Qt::Horizontal == orientation
|
||||
&& section < num_cols)
|
||||
{
|
||||
switch (section)
|
||||
{
|
||||
case mode_column: header = tr ("Mode"); break;
|
||||
case frequency_column: header = tr ("Frequency"); break;
|
||||
case frequency_mhz_column: header = tr ("Frequency (MHz)"); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
header = QAbstractTableModel::headerData (section, orientation, role);
|
||||
}
|
||||
return header;
|
||||
}
|
||||
|
||||
bool FrequencyList::impl::removeRows (int row, int count, QModelIndex const& parent)
|
||||
{
|
||||
if (0 < count && (row + count) <= rowCount (parent))
|
||||
{
|
||||
beginRemoveRows (parent, row, row + count - 1);
|
||||
for (auto r = 0; r < count; ++r)
|
||||
{
|
||||
frequency_list_.removeAt (row);
|
||||
}
|
||||
endRemoveRows ();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool FrequencyList::impl::insertRows (int row, int count, QModelIndex const& parent)
|
||||
{
|
||||
if (0 < count)
|
||||
{
|
||||
beginInsertRows (parent, row, row + count - 1);
|
||||
for (auto r = 0; r < count; ++r)
|
||||
{
|
||||
frequency_list_.insert (row, Item {0, Mode::NULL_MODE});
|
||||
}
|
||||
endInsertRows ();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
QStringList FrequencyList::impl::mimeTypes () const
|
||||
{
|
||||
QStringList types;
|
||||
types << mime_type;
|
||||
return types;
|
||||
}
|
||||
|
||||
QMimeData * FrequencyList::impl::mimeData (QModelIndexList const& items) const
|
||||
{
|
||||
QMimeData * mime_data = new QMimeData {};
|
||||
QByteArray encoded_data;
|
||||
QDataStream stream {&encoded_data, QIODevice::WriteOnly};
|
||||
|
||||
Q_FOREACH (auto const& item, items)
|
||||
{
|
||||
if (item.isValid () && frequency_column == item.column ())
|
||||
{
|
||||
stream << frequency_list_.at (item.row ());
|
||||
}
|
||||
}
|
||||
|
||||
mime_data->setData (mime_type, encoded_data);
|
||||
return mime_data;
|
||||
}
|
||||
|
||||
auto FrequencyList::const_iterator::operator * () const -> Item const&
|
||||
{
|
||||
return parent_->frequency_list ().at(parent_->mapToSource (parent_->index (row_, 0)).row ());
|
||||
}
|
||||
|
||||
auto FrequencyList::const_iterator::operator -> () const -> Item const *
|
||||
{
|
||||
return &parent_->frequency_list ().at(parent_->mapToSource (parent_->index (row_, 0)).row ());
|
||||
}
|
||||
|
||||
bool FrequencyList::const_iterator::operator != (const_iterator const& rhs) const
|
||||
{
|
||||
return parent_ != rhs.parent_ || row_ != rhs.row_;
|
||||
}
|
||||
|
||||
bool FrequencyList::const_iterator::operator == (const_iterator const& rhs) const
|
||||
{
|
||||
return parent_ == rhs.parent_ && row_ == rhs.row_;
|
||||
}
|
||||
|
||||
auto FrequencyList::const_iterator::operator ++ () -> const_iterator&
|
||||
{
|
||||
++row_;
|
||||
return *this;
|
||||
}
|
||||
|
||||
auto FrequencyList::begin () const -> const_iterator
|
||||
{
|
||||
return const_iterator (this, 0);
|
||||
}
|
||||
|
||||
auto FrequencyList::end () const -> const_iterator
|
||||
{
|
||||
return const_iterator (this, rowCount ());
|
||||
}
|
||||
|
||||
auto FrequencyList::find (Frequency f) const -> const_iterator
|
||||
{
|
||||
int row {0};
|
||||
for (; row < rowCount (); ++row)
|
||||
{
|
||||
if (m_->frequency_list_[mapToSource (index (row, 0)).row ()].frequency_ == f)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
return const_iterator (this, row);
|
||||
}
|
||||
|
||||
auto FrequencyList::filtered_bands () const -> BandSet
|
||||
{
|
||||
BandSet result;
|
||||
for (auto const& item : *this)
|
||||
{
|
||||
result << m_->bands_->find (item.frequency_);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
auto FrequencyList::all_bands (Mode mode) const -> BandSet
|
||||
{
|
||||
BandSet result;
|
||||
for (auto const& item : m_->frequency_list_)
|
||||
{
|
||||
if (mode == Modes::NULL_MODE || item.mode_ == mode)
|
||||
{
|
||||
result << m_->bands_->find (item.frequency_);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
@@ -0,0 +1,927 @@
|
||||
|
||||
// (C) Copyright Tobias Schwinger
|
||||
//
|
||||
// Use modification and distribution are subject to the boost Software License,
|
||||
// Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt).
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
// no include guards, this file is intended for multiple inclusion
|
||||
|
||||
// input: BOOST_FT_syntax type macro to use
|
||||
// input: BOOST_FT_cc empty or cc specifier
|
||||
// input: BOOST_FT_ell empty or "..."
|
||||
// input: BOOST_FT_cv empty or cv qualifiers
|
||||
// input: BOOST_FT_flags single decimal integer encoding the flags
|
||||
// output: BOOST_FT_n number of component types (arity+1)
|
||||
// output: BOOST_FT_arity current arity
|
||||
// output: BOOST_FT_type macro that expands to the type
|
||||
// output: BOOST_FT_tplargs(p) template arguments with given prefix
|
||||
// output: BOOST_FT_params(p) parameters with given prefix
|
||||
|
||||
# include <boost/function_types/detail/synthesize_impl/arity30_1.hpp>
|
||||
# define BOOST_FT_make_type(flags,cc,arity) BOOST_FT_make_type_impl(flags,cc,arity)
|
||||
# define BOOST_FT_make_type_impl(flags,cc,arity) make_type_ ## flags ## _ ## cc ## _ ## arity
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,31)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 32 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,31)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,32)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 33 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,32)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,33)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 34 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,33)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,34)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 35 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
typedef typename mpl::next< iter_33 > ::type iter_34;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,34)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
, typename mpl::deref< iter_34 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,35)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 36 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
typedef typename mpl::next< iter_33 > ::type iter_34;
|
||||
typedef typename mpl::next< iter_34 > ::type iter_35;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,35)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
, typename mpl::deref< iter_34 > ::type
|
||||
, typename mpl::deref< iter_35 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,36)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 37 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
typedef typename mpl::next< iter_33 > ::type iter_34;
|
||||
typedef typename mpl::next< iter_34 > ::type iter_35;
|
||||
typedef typename mpl::next< iter_35 > ::type iter_36;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,36)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
, typename mpl::deref< iter_34 > ::type
|
||||
, typename mpl::deref< iter_35 > ::type
|
||||
, typename mpl::deref< iter_36 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,37)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 38 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
typedef typename mpl::next< iter_33 > ::type iter_34;
|
||||
typedef typename mpl::next< iter_34 > ::type iter_35;
|
||||
typedef typename mpl::next< iter_35 > ::type iter_36;
|
||||
typedef typename mpl::next< iter_36 > ::type iter_37;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,37)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
, typename mpl::deref< iter_34 > ::type
|
||||
, typename mpl::deref< iter_35 > ::type
|
||||
, typename mpl::deref< iter_36 > ::type
|
||||
, typename mpl::deref< iter_37 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,38)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 39 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
typedef typename mpl::next< iter_33 > ::type iter_34;
|
||||
typedef typename mpl::next< iter_34 > ::type iter_35;
|
||||
typedef typename mpl::next< iter_35 > ::type iter_36;
|
||||
typedef typename mpl::next< iter_36 > ::type iter_37;
|
||||
typedef typename mpl::next< iter_37 > ::type iter_38;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,38)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
, typename mpl::deref< iter_34 > ::type
|
||||
, typename mpl::deref< iter_35 > ::type
|
||||
, typename mpl::deref< iter_36 > ::type
|
||||
, typename mpl::deref< iter_37 > ::type
|
||||
, typename mpl::deref< iter_38 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,39)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 40 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
typedef typename mpl::next< iter_33 > ::type iter_34;
|
||||
typedef typename mpl::next< iter_34 > ::type iter_35;
|
||||
typedef typename mpl::next< iter_35 > ::type iter_36;
|
||||
typedef typename mpl::next< iter_36 > ::type iter_37;
|
||||
typedef typename mpl::next< iter_37 > ::type iter_38;
|
||||
typedef typename mpl::next< iter_38 > ::type iter_39;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,39)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
, typename mpl::deref< iter_34 > ::type
|
||||
, typename mpl::deref< iter_35 > ::type
|
||||
, typename mpl::deref< iter_36 > ::type
|
||||
, typename mpl::deref< iter_37 > ::type
|
||||
, typename mpl::deref< iter_38 > ::type
|
||||
, typename mpl::deref< iter_39 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
template< typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 >
|
||||
struct BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,40)
|
||||
{
|
||||
typedef BOOST_FT_syntax(BOOST_FT_cc,type BOOST_PP_EMPTY) (T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 BOOST_FT_ell) BOOST_FT_cv ;
|
||||
};
|
||||
template< >
|
||||
struct synthesize_impl_o< BOOST_FT_flags, BOOST_FT_cc_id, 41 >
|
||||
{
|
||||
template<typename S> struct synthesize_impl_i
|
||||
{
|
||||
private:
|
||||
typedef typename mpl::begin<S> ::type iter_0;
|
||||
typedef typename mpl::next< iter_0 > ::type iter_1;
|
||||
typedef typename mpl::next< iter_1 > ::type iter_2;
|
||||
typedef typename mpl::next< iter_2 > ::type iter_3;
|
||||
typedef typename mpl::next< iter_3 > ::type iter_4;
|
||||
typedef typename mpl::next< iter_4 > ::type iter_5;
|
||||
typedef typename mpl::next< iter_5 > ::type iter_6;
|
||||
typedef typename mpl::next< iter_6 > ::type iter_7;
|
||||
typedef typename mpl::next< iter_7 > ::type iter_8;
|
||||
typedef typename mpl::next< iter_8 > ::type iter_9;
|
||||
typedef typename mpl::next< iter_9 > ::type iter_10;
|
||||
typedef typename mpl::next< iter_10 > ::type iter_11;
|
||||
typedef typename mpl::next< iter_11 > ::type iter_12;
|
||||
typedef typename mpl::next< iter_12 > ::type iter_13;
|
||||
typedef typename mpl::next< iter_13 > ::type iter_14;
|
||||
typedef typename mpl::next< iter_14 > ::type iter_15;
|
||||
typedef typename mpl::next< iter_15 > ::type iter_16;
|
||||
typedef typename mpl::next< iter_16 > ::type iter_17;
|
||||
typedef typename mpl::next< iter_17 > ::type iter_18;
|
||||
typedef typename mpl::next< iter_18 > ::type iter_19;
|
||||
typedef typename mpl::next< iter_19 > ::type iter_20;
|
||||
typedef typename mpl::next< iter_20 > ::type iter_21;
|
||||
typedef typename mpl::next< iter_21 > ::type iter_22;
|
||||
typedef typename mpl::next< iter_22 > ::type iter_23;
|
||||
typedef typename mpl::next< iter_23 > ::type iter_24;
|
||||
typedef typename mpl::next< iter_24 > ::type iter_25;
|
||||
typedef typename mpl::next< iter_25 > ::type iter_26;
|
||||
typedef typename mpl::next< iter_26 > ::type iter_27;
|
||||
typedef typename mpl::next< iter_27 > ::type iter_28;
|
||||
typedef typename mpl::next< iter_28 > ::type iter_29;
|
||||
typedef typename mpl::next< iter_29 > ::type iter_30;
|
||||
typedef typename mpl::next< iter_30 > ::type iter_31;
|
||||
typedef typename mpl::next< iter_31 > ::type iter_32;
|
||||
typedef typename mpl::next< iter_32 > ::type iter_33;
|
||||
typedef typename mpl::next< iter_33 > ::type iter_34;
|
||||
typedef typename mpl::next< iter_34 > ::type iter_35;
|
||||
typedef typename mpl::next< iter_35 > ::type iter_36;
|
||||
typedef typename mpl::next< iter_36 > ::type iter_37;
|
||||
typedef typename mpl::next< iter_37 > ::type iter_38;
|
||||
typedef typename mpl::next< iter_38 > ::type iter_39;
|
||||
typedef typename mpl::next< iter_39 > ::type iter_40;
|
||||
public:
|
||||
typedef typename detail::BOOST_FT_make_type(BOOST_FT_flags,BOOST_FT_cc_id,40)
|
||||
< typename mpl::deref< iter_0 > ::type
|
||||
, typename detail::cv_traits<
|
||||
typename mpl::deref< iter_1 > ::type > ::type
|
||||
, typename mpl::deref< iter_2 > ::type
|
||||
, typename mpl::deref< iter_3 > ::type
|
||||
, typename mpl::deref< iter_4 > ::type
|
||||
, typename mpl::deref< iter_5 > ::type
|
||||
, typename mpl::deref< iter_6 > ::type
|
||||
, typename mpl::deref< iter_7 > ::type
|
||||
, typename mpl::deref< iter_8 > ::type
|
||||
, typename mpl::deref< iter_9 > ::type
|
||||
, typename mpl::deref< iter_10 > ::type
|
||||
, typename mpl::deref< iter_11 > ::type
|
||||
, typename mpl::deref< iter_12 > ::type
|
||||
, typename mpl::deref< iter_13 > ::type
|
||||
, typename mpl::deref< iter_14 > ::type
|
||||
, typename mpl::deref< iter_15 > ::type
|
||||
, typename mpl::deref< iter_16 > ::type
|
||||
, typename mpl::deref< iter_17 > ::type
|
||||
, typename mpl::deref< iter_18 > ::type
|
||||
, typename mpl::deref< iter_19 > ::type
|
||||
, typename mpl::deref< iter_20 > ::type
|
||||
, typename mpl::deref< iter_21 > ::type
|
||||
, typename mpl::deref< iter_22 > ::type
|
||||
, typename mpl::deref< iter_23 > ::type
|
||||
, typename mpl::deref< iter_24 > ::type
|
||||
, typename mpl::deref< iter_25 > ::type
|
||||
, typename mpl::deref< iter_26 > ::type
|
||||
, typename mpl::deref< iter_27 > ::type
|
||||
, typename mpl::deref< iter_28 > ::type
|
||||
, typename mpl::deref< iter_29 > ::type
|
||||
, typename mpl::deref< iter_30 > ::type
|
||||
, typename mpl::deref< iter_31 > ::type
|
||||
, typename mpl::deref< iter_32 > ::type
|
||||
, typename mpl::deref< iter_33 > ::type
|
||||
, typename mpl::deref< iter_34 > ::type
|
||||
, typename mpl::deref< iter_35 > ::type
|
||||
, typename mpl::deref< iter_36 > ::type
|
||||
, typename mpl::deref< iter_37 > ::type
|
||||
, typename mpl::deref< iter_38 > ::type
|
||||
, typename mpl::deref< iter_39 > ::type
|
||||
, typename mpl::deref< iter_40 > ::type
|
||||
> ::type type;
|
||||
};
|
||||
};
|
||||
# undef BOOST_FT_make_type
|
||||
# undef BOOST_FT_make_type_impl
|
||||
|
||||
@@ -0,0 +1,364 @@
|
||||
/*=============================================================================
|
||||
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)
|
||||
|
||||
This is an auto-generated file. Do not edit!
|
||||
==============================================================================*/
|
||||
namespace boost { namespace fusion { namespace detail
|
||||
{
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48 , typename T49>
|
||||
struct vector_n_chooser
|
||||
{
|
||||
typedef vector50<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48 , T49> type;
|
||||
};
|
||||
template <>
|
||||
struct vector_n_chooser<void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector0<> type;
|
||||
};
|
||||
template <typename T0>
|
||||
struct vector_n_chooser<
|
||||
T0
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector1<T0> type;
|
||||
};
|
||||
template <typename T0 , typename T1>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector2<T0 , T1> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector3<T0 , T1 , T2> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector4<T0 , T1 , T2 , T3> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector5<T0 , T1 , T2 , T3 , T4> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector6<T0 , T1 , T2 , T3 , T4 , T5> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector7<T0 , T1 , T2 , T3 , T4 , T5 , T6> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector8<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector9<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector10<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector11<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector12<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector13<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector14<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector15<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector16<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector17<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector18<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector19<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector20<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector21<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector22<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector23<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector24<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector25<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector26<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector27<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector28<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector29<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector30<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector31<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector32<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector33<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector34<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector35<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector36<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector37<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector38<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector39<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector40<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector41<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector42<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42
|
||||
, void_ , void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector43<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43
|
||||
, void_ , void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector44<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44
|
||||
, void_ , void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector45<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45
|
||||
, void_ , void_ , void_ , void_>
|
||||
{
|
||||
typedef vector46<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46
|
||||
, void_ , void_ , void_>
|
||||
{
|
||||
typedef vector47<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47
|
||||
, void_ , void_>
|
||||
{
|
||||
typedef vector48<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47> type;
|
||||
};
|
||||
template <typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48>
|
||||
struct vector_n_chooser<
|
||||
T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48
|
||||
, void_>
|
||||
{
|
||||
typedef vector49<T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48> type;
|
||||
};
|
||||
}}}
|
||||
@@ -0,0 +1,651 @@
|
||||
// Boost token_functions.hpp ------------------------------------------------//
|
||||
|
||||
// Copyright John R. Bandela 2001.
|
||||
|
||||
// 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/tokenizer/ for documentation.
|
||||
|
||||
// Revision History:
|
||||
// 01 Oct 2004 Joaquin M Lopez Munoz
|
||||
// Workaround for a problem with string::assign in msvc-stlport
|
||||
// 06 Apr 2004 John Bandela
|
||||
// Fixed a bug involving using char_delimiter with a true input iterator
|
||||
// 28 Nov 2003 Robert Zeh and John Bandela
|
||||
// Converted into "fast" functions that avoid using += when
|
||||
// the supplied iterator isn't an input_iterator; based on
|
||||
// some work done at Archelon and a version that was checked into
|
||||
// the boost CVS for a short period of time.
|
||||
// 20 Feb 2002 John Maddock
|
||||
// Removed using namespace std declarations and added
|
||||
// workaround for BOOST_NO_STDC_NAMESPACE (the library
|
||||
// can be safely mixed with regex).
|
||||
// 06 Feb 2002 Jeremy Siek
|
||||
// Added char_separator.
|
||||
// 02 Feb 2002 Jeremy Siek
|
||||
// Removed tabs and a little cleanup.
|
||||
|
||||
|
||||
#ifndef BOOST_TOKEN_FUNCTIONS_JRB120303_HPP_
|
||||
#define BOOST_TOKEN_FUNCTIONS_JRB120303_HPP_
|
||||
|
||||
#include <vector>
|
||||
#include <stdexcept>
|
||||
#include <string>
|
||||
#include <cctype>
|
||||
#include <algorithm> // for find_if
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
#include <boost/throw_exception.hpp>
|
||||
#if !defined(BOOST_NO_CWCTYPE)
|
||||
#include <cwctype>
|
||||
#endif
|
||||
|
||||
//
|
||||
// the following must not be macros if we are to prefix them
|
||||
// with std:: (they shouldn't be macros anyway...)
|
||||
//
|
||||
#ifdef ispunct
|
||||
# undef ispunct
|
||||
#endif
|
||||
#ifdef iswpunct
|
||||
# undef iswpunct
|
||||
#endif
|
||||
#ifdef isspace
|
||||
# undef isspace
|
||||
#endif
|
||||
#ifdef iswspace
|
||||
# undef iswspace
|
||||
#endif
|
||||
//
|
||||
// fix namespace problems:
|
||||
//
|
||||
#ifdef BOOST_NO_STDC_NAMESPACE
|
||||
namespace std{
|
||||
using ::ispunct;
|
||||
using ::isspace;
|
||||
#if !defined(BOOST_NO_CWCTYPE)
|
||||
using ::iswpunct;
|
||||
using ::iswspace;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace boost{
|
||||
//===========================================================================
|
||||
// The escaped_list_separator class. Which is a model of TokenizerFunction
|
||||
// An escaped list is a super-set of what is commonly known as a comma
|
||||
// separated value (csv) list.It is separated into fields by a comma or
|
||||
// other character. If the delimiting character is inside quotes, then it is
|
||||
// counted as a regular character.To allow for embedded quotes in a field,
|
||||
// there can be escape sequences using the \ much like C.
|
||||
// The role of the comma, the quotation mark, and the escape
|
||||
// character (backslash \), can be assigned to other characters.
|
||||
|
||||
struct escaped_list_error : public std::runtime_error{
|
||||
escaped_list_error(const std::string& what_arg):std::runtime_error(what_arg) { }
|
||||
};
|
||||
|
||||
|
||||
// The out of the box GCC 2.95 on cygwin does not have a char_traits class.
|
||||
// MSVC does not like the following typename
|
||||
template <class Char,
|
||||
class Traits = BOOST_DEDUCED_TYPENAME std::basic_string<Char>::traits_type >
|
||||
class escaped_list_separator {
|
||||
|
||||
private:
|
||||
typedef std::basic_string<Char,Traits> string_type;
|
||||
struct char_eq {
|
||||
Char e_;
|
||||
char_eq(Char e):e_(e) { }
|
||||
bool operator()(Char c) {
|
||||
return Traits::eq(e_,c);
|
||||
}
|
||||
};
|
||||
string_type escape_;
|
||||
string_type c_;
|
||||
string_type quote_;
|
||||
bool last_;
|
||||
|
||||
bool is_escape(Char e) {
|
||||
char_eq f(e);
|
||||
return std::find_if(escape_.begin(),escape_.end(),f)!=escape_.end();
|
||||
}
|
||||
bool is_c(Char e) {
|
||||
char_eq f(e);
|
||||
return std::find_if(c_.begin(),c_.end(),f)!=c_.end();
|
||||
}
|
||||
bool is_quote(Char e) {
|
||||
char_eq f(e);
|
||||
return std::find_if(quote_.begin(),quote_.end(),f)!=quote_.end();
|
||||
}
|
||||
template <typename iterator, typename Token>
|
||||
void do_escape(iterator& next,iterator end,Token& tok) {
|
||||
if (++next == end)
|
||||
BOOST_THROW_EXCEPTION(escaped_list_error(std::string("cannot end with escape")));
|
||||
if (Traits::eq(*next,'n')) {
|
||||
tok+='\n';
|
||||
return;
|
||||
}
|
||||
else if (is_quote(*next)) {
|
||||
tok+=*next;
|
||||
return;
|
||||
}
|
||||
else if (is_c(*next)) {
|
||||
tok+=*next;
|
||||
return;
|
||||
}
|
||||
else if (is_escape(*next)) {
|
||||
tok+=*next;
|
||||
return;
|
||||
}
|
||||
else
|
||||
BOOST_THROW_EXCEPTION(escaped_list_error(std::string("unknown escape sequence")));
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
explicit escaped_list_separator(Char e = '\\',
|
||||
Char c = ',',Char q = '\"')
|
||||
: escape_(1,e), c_(1,c), quote_(1,q), last_(false) { }
|
||||
|
||||
escaped_list_separator(string_type e, string_type c, string_type q)
|
||||
: escape_(e), c_(c), quote_(q), last_(false) { }
|
||||
|
||||
void reset() {last_=false;}
|
||||
|
||||
template <typename InputIterator, typename Token>
|
||||
bool operator()(InputIterator& next,InputIterator end,Token& tok) {
|
||||
bool bInQuote = false;
|
||||
tok = Token();
|
||||
|
||||
if (next == end) {
|
||||
if (last_) {
|
||||
last_ = false;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
last_ = false;
|
||||
for (;next != end;++next) {
|
||||
if (is_escape(*next)) {
|
||||
do_escape(next,end,tok);
|
||||
}
|
||||
else if (is_c(*next)) {
|
||||
if (!bInQuote) {
|
||||
// If we are not in quote, then we are done
|
||||
++next;
|
||||
// The last character was a c, that means there is
|
||||
// 1 more blank field
|
||||
last_ = true;
|
||||
return true;
|
||||
}
|
||||
else tok+=*next;
|
||||
}
|
||||
else if (is_quote(*next)) {
|
||||
bInQuote=!bInQuote;
|
||||
}
|
||||
else {
|
||||
tok += *next;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
// The classes here are used by offset_separator and char_separator to implement
|
||||
// faster assigning of tokens using assign instead of +=
|
||||
|
||||
namespace tokenizer_detail {
|
||||
//===========================================================================
|
||||
// Tokenizer was broken for wide character separators, at least on Windows, since
|
||||
// CRT functions isspace etc only expect values in [0, 0xFF]. Debug build asserts
|
||||
// if higher values are passed in. The traits extension class should take care of this.
|
||||
// Assuming that the conditional will always get optimized out in the function
|
||||
// implementations, argument types are not a problem since both forms of character classifiers
|
||||
// expect an int.
|
||||
|
||||
#if !defined(BOOST_NO_CWCTYPE)
|
||||
template<typename traits, int N>
|
||||
struct traits_extension_details : public traits {
|
||||
typedef typename traits::char_type char_type;
|
||||
static bool isspace(char_type c)
|
||||
{
|
||||
return std::iswspace(c) != 0;
|
||||
}
|
||||
static bool ispunct(char_type c)
|
||||
{
|
||||
return std::iswpunct(c) != 0;
|
||||
}
|
||||
};
|
||||
|
||||
template<typename traits>
|
||||
struct traits_extension_details<traits, 1> : public traits {
|
||||
typedef typename traits::char_type char_type;
|
||||
static bool isspace(char_type c)
|
||||
{
|
||||
return std::isspace(c) != 0;
|
||||
}
|
||||
static bool ispunct(char_type c)
|
||||
{
|
||||
return std::ispunct(c) != 0;
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
// In case there is no cwctype header, we implement the checks manually.
|
||||
// We make use of the fact that the tested categories should fit in ASCII.
|
||||
template<typename traits>
|
||||
struct traits_extension : public traits {
|
||||
typedef typename traits::char_type char_type;
|
||||
static bool isspace(char_type c)
|
||||
{
|
||||
#if !defined(BOOST_NO_CWCTYPE)
|
||||
return traits_extension_details<traits, sizeof(char_type)>::isspace(c);
|
||||
#else
|
||||
return static_cast< unsigned >(c) <= 255 && std::isspace(c) != 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
static bool ispunct(char_type c)
|
||||
{
|
||||
#if !defined(BOOST_NO_CWCTYPE)
|
||||
return traits_extension_details<traits, sizeof(char_type)>::ispunct(c);
|
||||
#else
|
||||
return static_cast< unsigned >(c) <= 255 && std::ispunct(c) != 0;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
// The assign_or_plus_equal struct contains functions that implement
|
||||
// assign, +=, and clearing based on the iterator type. The
|
||||
// generic case does nothing for plus_equal and clearing, while
|
||||
// passing through the call for assign.
|
||||
//
|
||||
// When an input iterator is being used, the situation is reversed.
|
||||
// The assign method does nothing, plus_equal invokes operator +=,
|
||||
// and the clearing method sets the supplied token to the default
|
||||
// token constructor's result.
|
||||
//
|
||||
|
||||
template<class IteratorTag>
|
||||
struct assign_or_plus_equal {
|
||||
template<class Iterator, class Token>
|
||||
static void assign(Iterator b, Iterator e, Token &t) {
|
||||
t.assign(b, e);
|
||||
}
|
||||
|
||||
template<class Token, class Value>
|
||||
static void plus_equal(Token &, const Value &) { }
|
||||
|
||||
// If we are doing an assign, there is no need for the
|
||||
// the clear.
|
||||
//
|
||||
template<class Token>
|
||||
static void clear(Token &) { }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct assign_or_plus_equal<std::input_iterator_tag> {
|
||||
template<class Iterator, class Token>
|
||||
static void assign(Iterator , Iterator , Token &) { }
|
||||
template<class Token, class Value>
|
||||
static void plus_equal(Token &t, const Value &v) {
|
||||
t += v;
|
||||
}
|
||||
template<class Token>
|
||||
static void clear(Token &t) {
|
||||
t = Token();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<class Iterator>
|
||||
struct pointer_iterator_category{
|
||||
typedef std::random_access_iterator_tag type;
|
||||
};
|
||||
|
||||
|
||||
template<class Iterator>
|
||||
struct class_iterator_category{
|
||||
typedef typename Iterator::iterator_category type;
|
||||
};
|
||||
|
||||
|
||||
|
||||
// This portably gets the iterator_tag without partial template specialization
|
||||
template<class Iterator>
|
||||
struct get_iterator_category{
|
||||
typedef typename mpl::if_<is_pointer<Iterator>,
|
||||
pointer_iterator_category<Iterator>,
|
||||
class_iterator_category<Iterator>
|
||||
>::type cat;
|
||||
|
||||
typedef typename cat::type iterator_category;
|
||||
};
|
||||
|
||||
|
||||
} // namespace tokenizer_detail
|
||||
|
||||
|
||||
//===========================================================================
|
||||
// The offset_separator class, which is a model of TokenizerFunction.
|
||||
// Offset breaks a string into tokens based on a range of offsets
|
||||
|
||||
class offset_separator {
|
||||
private:
|
||||
|
||||
std::vector<int> offsets_;
|
||||
unsigned int current_offset_;
|
||||
bool wrap_offsets_;
|
||||
bool return_partial_last_;
|
||||
|
||||
public:
|
||||
template <typename Iter>
|
||||
offset_separator(Iter begin, Iter end, bool wrap_offsets = true,
|
||||
bool return_partial_last = true)
|
||||
: offsets_(begin,end), current_offset_(0),
|
||||
wrap_offsets_(wrap_offsets),
|
||||
return_partial_last_(return_partial_last) { }
|
||||
|
||||
offset_separator()
|
||||
: offsets_(1,1), current_offset_(),
|
||||
wrap_offsets_(true), return_partial_last_(true) { }
|
||||
|
||||
void reset() {
|
||||
current_offset_ = 0;
|
||||
}
|
||||
|
||||
template <typename InputIterator, typename Token>
|
||||
bool operator()(InputIterator& next, InputIterator end, Token& tok)
|
||||
{
|
||||
typedef tokenizer_detail::assign_or_plus_equal<
|
||||
BOOST_DEDUCED_TYPENAME tokenizer_detail::get_iterator_category<
|
||||
InputIterator
|
||||
>::iterator_category
|
||||
> assigner;
|
||||
|
||||
BOOST_ASSERT(!offsets_.empty());
|
||||
|
||||
assigner::clear(tok);
|
||||
InputIterator start(next);
|
||||
|
||||
if (next == end)
|
||||
return false;
|
||||
|
||||
if (current_offset_ == offsets_.size())
|
||||
{
|
||||
if (wrap_offsets_)
|
||||
current_offset_=0;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
int c = offsets_[current_offset_];
|
||||
int i = 0;
|
||||
for (; i < c; ++i) {
|
||||
if (next == end)break;
|
||||
assigner::plus_equal(tok,*next++);
|
||||
}
|
||||
assigner::assign(start,next,tok);
|
||||
|
||||
if (!return_partial_last_)
|
||||
if (i < (c-1) )
|
||||
return false;
|
||||
|
||||
++current_offset_;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
//===========================================================================
|
||||
// The char_separator class breaks a sequence of characters into
|
||||
// tokens based on the character delimiters (very much like bad old
|
||||
// strtok). A delimiter character can either be kept or dropped. A
|
||||
// kept delimiter shows up as an output token, whereas a dropped
|
||||
// delimiter does not.
|
||||
|
||||
// This class replaces the char_delimiters_separator class. The
|
||||
// constructor for the char_delimiters_separator class was too
|
||||
// confusing and needed to be deprecated. However, because of the
|
||||
// default arguments to the constructor, adding the new constructor
|
||||
// would cause ambiguity, so instead I deprecated the whole class.
|
||||
// The implementation of the class was also simplified considerably.
|
||||
|
||||
enum empty_token_policy { drop_empty_tokens, keep_empty_tokens };
|
||||
|
||||
// The out of the box GCC 2.95 on cygwin does not have a char_traits class.
|
||||
template <typename Char,
|
||||
typename Tr = BOOST_DEDUCED_TYPENAME std::basic_string<Char>::traits_type >
|
||||
class char_separator
|
||||
{
|
||||
typedef tokenizer_detail::traits_extension<Tr> Traits;
|
||||
typedef std::basic_string<Char,Tr> string_type;
|
||||
public:
|
||||
explicit
|
||||
char_separator(const Char* dropped_delims,
|
||||
const Char* kept_delims = 0,
|
||||
empty_token_policy empty_tokens = drop_empty_tokens)
|
||||
: m_dropped_delims(dropped_delims),
|
||||
m_use_ispunct(false),
|
||||
m_use_isspace(false),
|
||||
m_empty_tokens(empty_tokens),
|
||||
m_output_done(false)
|
||||
{
|
||||
// Borland workaround
|
||||
if (kept_delims)
|
||||
m_kept_delims = kept_delims;
|
||||
}
|
||||
|
||||
// use ispunct() for kept delimiters and isspace for dropped.
|
||||
explicit
|
||||
char_separator()
|
||||
: m_use_ispunct(true),
|
||||
m_use_isspace(true),
|
||||
m_empty_tokens(drop_empty_tokens) { }
|
||||
|
||||
void reset() { }
|
||||
|
||||
template <typename InputIterator, typename Token>
|
||||
bool operator()(InputIterator& next, InputIterator end, Token& tok)
|
||||
{
|
||||
typedef tokenizer_detail::assign_or_plus_equal<
|
||||
BOOST_DEDUCED_TYPENAME tokenizer_detail::get_iterator_category<
|
||||
InputIterator
|
||||
>::iterator_category
|
||||
> assigner;
|
||||
|
||||
assigner::clear(tok);
|
||||
|
||||
// skip past all dropped_delims
|
||||
if (m_empty_tokens == drop_empty_tokens)
|
||||
for (; next != end && is_dropped(*next); ++next)
|
||||
{ }
|
||||
|
||||
InputIterator start(next);
|
||||
|
||||
if (m_empty_tokens == drop_empty_tokens) {
|
||||
|
||||
if (next == end)
|
||||
return false;
|
||||
|
||||
|
||||
// if we are on a kept_delims move past it and stop
|
||||
if (is_kept(*next)) {
|
||||
assigner::plus_equal(tok,*next);
|
||||
++next;
|
||||
} else
|
||||
// append all the non delim characters
|
||||
for (; next != end && !is_dropped(*next) && !is_kept(*next); ++next)
|
||||
assigner::plus_equal(tok,*next);
|
||||
}
|
||||
else { // m_empty_tokens == keep_empty_tokens
|
||||
|
||||
// Handle empty token at the end
|
||||
if (next == end)
|
||||
{
|
||||
if (m_output_done == false)
|
||||
{
|
||||
m_output_done = true;
|
||||
assigner::assign(start,next,tok);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
if (is_kept(*next)) {
|
||||
if (m_output_done == false)
|
||||
m_output_done = true;
|
||||
else {
|
||||
assigner::plus_equal(tok,*next);
|
||||
++next;
|
||||
m_output_done = false;
|
||||
}
|
||||
}
|
||||
else if (m_output_done == false && is_dropped(*next)) {
|
||||
m_output_done = true;
|
||||
}
|
||||
else {
|
||||
if (is_dropped(*next))
|
||||
start=++next;
|
||||
for (; next != end && !is_dropped(*next) && !is_kept(*next); ++next)
|
||||
assigner::plus_equal(tok,*next);
|
||||
m_output_done = true;
|
||||
}
|
||||
}
|
||||
assigner::assign(start,next,tok);
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
string_type m_kept_delims;
|
||||
string_type m_dropped_delims;
|
||||
bool m_use_ispunct;
|
||||
bool m_use_isspace;
|
||||
empty_token_policy m_empty_tokens;
|
||||
bool m_output_done;
|
||||
|
||||
bool is_kept(Char E) const
|
||||
{
|
||||
if (m_kept_delims.length())
|
||||
return m_kept_delims.find(E) != string_type::npos;
|
||||
else if (m_use_ispunct) {
|
||||
return Traits::ispunct(E) != 0;
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
bool is_dropped(Char E) const
|
||||
{
|
||||
if (m_dropped_delims.length())
|
||||
return m_dropped_delims.find(E) != string_type::npos;
|
||||
else if (m_use_isspace) {
|
||||
return Traits::isspace(E) != 0;
|
||||
} else
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
//===========================================================================
|
||||
// The following class is DEPRECATED, use class char_separators instead.
|
||||
//
|
||||
// The char_delimiters_separator class, which is a model of
|
||||
// TokenizerFunction. char_delimiters_separator breaks a string
|
||||
// into tokens based on character delimiters. There are 2 types of
|
||||
// delimiters. returnable delimiters can be returned as
|
||||
// tokens. These are often punctuation. nonreturnable delimiters
|
||||
// cannot be returned as tokens. These are often whitespace
|
||||
|
||||
// The out of the box GCC 2.95 on cygwin does not have a char_traits class.
|
||||
template <class Char,
|
||||
class Tr = BOOST_DEDUCED_TYPENAME std::basic_string<Char>::traits_type >
|
||||
class char_delimiters_separator {
|
||||
private:
|
||||
|
||||
typedef tokenizer_detail::traits_extension<Tr> Traits;
|
||||
typedef std::basic_string<Char,Tr> string_type;
|
||||
string_type returnable_;
|
||||
string_type nonreturnable_;
|
||||
bool return_delims_;
|
||||
bool no_ispunct_;
|
||||
bool no_isspace_;
|
||||
|
||||
bool is_ret(Char E)const
|
||||
{
|
||||
if (returnable_.length())
|
||||
return returnable_.find(E) != string_type::npos;
|
||||
else{
|
||||
if (no_ispunct_) {return false;}
|
||||
else{
|
||||
int r = Traits::ispunct(E);
|
||||
return r != 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
bool is_nonret(Char E)const
|
||||
{
|
||||
if (nonreturnable_.length())
|
||||
return nonreturnable_.find(E) != string_type::npos;
|
||||
else{
|
||||
if (no_isspace_) {return false;}
|
||||
else{
|
||||
int r = Traits::isspace(E);
|
||||
return r != 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
explicit char_delimiters_separator(bool return_delims = false,
|
||||
const Char* returnable = 0,
|
||||
const Char* nonreturnable = 0)
|
||||
: returnable_(returnable ? returnable : string_type().c_str()),
|
||||
nonreturnable_(nonreturnable ? nonreturnable:string_type().c_str()),
|
||||
return_delims_(return_delims), no_ispunct_(returnable!=0),
|
||||
no_isspace_(nonreturnable!=0) { }
|
||||
|
||||
void reset() { }
|
||||
|
||||
public:
|
||||
|
||||
template <typename InputIterator, typename Token>
|
||||
bool operator()(InputIterator& next, InputIterator end,Token& tok) {
|
||||
tok = Token();
|
||||
|
||||
// skip past all nonreturnable delims
|
||||
// skip past the returnable only if we are not returning delims
|
||||
for (;next!=end && ( is_nonret(*next) || (is_ret(*next)
|
||||
&& !return_delims_ ) );++next) { }
|
||||
|
||||
if (next == end) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// if we are to return delims and we are one a returnable one
|
||||
// move past it and stop
|
||||
if (is_ret(*next) && return_delims_) {
|
||||
tok+=*next;
|
||||
++next;
|
||||
}
|
||||
else
|
||||
// append all the non delim characters
|
||||
for (;next!=end && !is_nonret(*next) && !is_ret(*next);++next)
|
||||
tok+=*next;
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} //namespace boost
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,60 @@
|
||||
// Boost.Units - A C++ library for zero-overhead dimensional analysis and
|
||||
// unit/quantity manipulation and conversion
|
||||
//
|
||||
// Copyright (C) 2003-2008 Matthias Christian Schabel
|
||||
// Copyright (C) 2007-2008 Steven Watanabe
|
||||
//
|
||||
// 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_UNITS_MAKE_SCALED_UNIT_HPP_INCLUDED
|
||||
#define BOOST_UNITS_MAKE_SCALED_UNIT_HPP_INCLUDED
|
||||
|
||||
#include <boost/units/units_fwd.hpp>
|
||||
#include <boost/units/heterogeneous_system.hpp>
|
||||
#include <boost/units/unit.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace units {
|
||||
|
||||
template<class Unit, class Scale>
|
||||
struct make_scaled_unit {
|
||||
typedef typename make_scaled_unit<typename reduce_unit<Unit>::type, Scale>::type type;
|
||||
};
|
||||
|
||||
template<class Dimension, class UnitList, class OldScale, class Scale>
|
||||
struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, Scale> {
|
||||
typedef unit<
|
||||
Dimension,
|
||||
heterogeneous_system<
|
||||
heterogeneous_system_impl<
|
||||
UnitList,
|
||||
Dimension,
|
||||
typename mpl::times<
|
||||
OldScale,
|
||||
list<scale_list_dim<Scale>, dimensionless_type>
|
||||
>::type
|
||||
>
|
||||
>
|
||||
> type;
|
||||
};
|
||||
|
||||
template<class Dimension, class UnitList, class OldScale, long Base>
|
||||
struct make_scaled_unit<unit<Dimension, heterogeneous_system<heterogeneous_system_impl<UnitList, Dimension, OldScale> > >, scale<Base, static_rational<0> > > {
|
||||
typedef unit<
|
||||
Dimension,
|
||||
heterogeneous_system<
|
||||
heterogeneous_system_impl<
|
||||
UnitList,
|
||||
Dimension,
|
||||
OldScale
|
||||
>
|
||||
>
|
||||
> type;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,429 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>LogQSO</class>
|
||||
<widget class="QDialog" name="LogQSO">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>374</width>
|
||||
<height>229</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_11">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Click OK to confirm the following QSO:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab1">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Call</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="call"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab2">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Start</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDateTimeEdit" name="start_date_time">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="displayFormat">
|
||||
<string>dd/MM/yyyy HH:mm:ss</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab2_3">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>End</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDateTimeEdit" name="end_date_time">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="displayFormat">
|
||||
<string>dd/MM/yyyy HH:mm:ss</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_4">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab4">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Mode</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="mode">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>70</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_6">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab5">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Band</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="band">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab6">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rpt Sent</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="sent">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_8">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab7">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Rpt Rcvd</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="rcvd">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>50</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_9">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab8">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Grid</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="grid">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>70</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_10">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab9">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Name</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="name">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_2">
|
||||
<property name="text">
|
||||
<string>Tx power</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="txPower"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbTxPower">
|
||||
<property name="text">
|
||||
<string>Retain</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="lab10">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>10</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Comments</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLineEdit" name="comments">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cbComments">
|
||||
<property name="text">
|
||||
<string>Retain</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDialogButtonBox" name="buttonBox">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="standardButtons">
|
||||
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<tabstops>
|
||||
<tabstop>call</tabstop>
|
||||
<tabstop>start_date_time</tabstop>
|
||||
<tabstop>end_date_time</tabstop>
|
||||
<tabstop>mode</tabstop>
|
||||
<tabstop>band</tabstop>
|
||||
<tabstop>sent</tabstop>
|
||||
<tabstop>rcvd</tabstop>
|
||||
<tabstop>grid</tabstop>
|
||||
<tabstop>name</tabstop>
|
||||
<tabstop>txPower</tabstop>
|
||||
<tabstop>cbTxPower</tabstop>
|
||||
<tabstop>comments</tabstop>
|
||||
<tabstop>cbComments</tabstop>
|
||||
</tabstops>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>accepted()</signal>
|
||||
<receiver>LogQSO</receiver>
|
||||
<slot>accept()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>248</x>
|
||||
<y>254</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>157</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>buttonBox</sender>
|
||||
<signal>rejected()</signal>
|
||||
<receiver>LogQSO</receiver>
|
||||
<slot>reject()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>316</x>
|
||||
<y>260</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>286</x>
|
||||
<y>274</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
</ui>
|
||||
@@ -0,0 +1,61 @@
|
||||
// Copyright (C) 2004 Arkadiy Vertleyb
|
||||
|
||||
// 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)
|
||||
|
||||
// boostinspect:nounnamed
|
||||
|
||||
#ifndef BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
|
||||
#define BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
|
||||
|
||||
#include <boost/mpl/deref.hpp>
|
||||
#include <boost/mpl/next.hpp>
|
||||
|
||||
#ifndef BOOST_TYPEOF_SUPPRESS_UNNAMED_NAMESPACE
|
||||
|
||||
# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace { namespace boost_typeof {
|
||||
# define BOOST_TYPEOF_END_ENCODE_NS }}
|
||||
# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost_typeof
|
||||
|
||||
#else
|
||||
|
||||
# define BOOST_TYPEOF_BEGIN_ENCODE_NS namespace boost { namespace type_of {
|
||||
# define BOOST_TYPEOF_END_ENCODE_NS }}
|
||||
# define BOOST_TYPEOF_ENCODE_NS_QUALIFIER boost::type_of
|
||||
|
||||
# define BOOST_TYPEOF_TEXT "unnamed namespace is off"
|
||||
# include <boost/typeof/message.hpp>
|
||||
|
||||
#endif
|
||||
|
||||
BOOST_TYPEOF_BEGIN_ENCODE_NS
|
||||
|
||||
template<class V, class Type_Not_Registered_With_Typeof_System>
|
||||
struct encode_type_impl;
|
||||
|
||||
template<class T, class Iter>
|
||||
struct decode_type_impl
|
||||
{
|
||||
typedef int type; // MSVC ETI workaround
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct decode_nested_template_helper_impl;
|
||||
|
||||
BOOST_TYPEOF_END_ENCODE_NS
|
||||
|
||||
namespace boost { namespace type_of {
|
||||
|
||||
template<class V, class T>
|
||||
struct encode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::encode_type_impl<V, T>
|
||||
{};
|
||||
|
||||
template<class Iter>
|
||||
struct decode_type : BOOST_TYPEOF_ENCODE_NS_QUALIFIER::decode_type_impl<
|
||||
typename Iter::type,
|
||||
typename Iter::next
|
||||
>
|
||||
{};
|
||||
}}
|
||||
|
||||
#endif//BOOST_TYPEOF_ENCODE_DECODE_HPP_INCLUDED
|
||||
@@ -0,0 +1,139 @@
|
||||
// time.hpp --------------------------------------------------------------//
|
||||
|
||||
// Copyright 2010 Vicente J. Botet Escriba
|
||||
// Copyright (c) Microsoft Corporation 2014
|
||||
// Copyright 2015 Andrey Semashev
|
||||
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// See http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
|
||||
#ifndef BOOST_DETAIL_WINAPI_TIME_HPP
|
||||
#define BOOST_DETAIL_WINAPI_TIME_HPP
|
||||
|
||||
#include <boost/detail/winapi/basic_types.hpp>
|
||||
#include <boost/predef/platform.h>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#if !defined( BOOST_USE_WINDOWS_H )
|
||||
extern "C" {
|
||||
struct _FILETIME;
|
||||
struct _SYSTEMTIME;
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::VOID_ WINAPI
|
||||
GetSystemTime(::_SYSTEMTIME* lpSystemTime);
|
||||
|
||||
#ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME // Windows CE does not define GetSystemTimeAsFileTime
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::VOID_ WINAPI
|
||||
GetSystemTimeAsFileTime(::_FILETIME* lpSystemTimeAsFileTime);
|
||||
#endif
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
|
||||
SystemTimeToFileTime(
|
||||
const ::_SYSTEMTIME* lpSystemTime,
|
||||
::_FILETIME* lpFileTime);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
|
||||
FileTimeToSystemTime(
|
||||
const ::_FILETIME* lpFileTime,
|
||||
::_SYSTEMTIME* lpSystemTime);
|
||||
|
||||
#if BOOST_PLAT_WINDOWS_DESKTOP
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
|
||||
FileTimeToLocalFileTime(
|
||||
const ::_FILETIME* lpFileTime,
|
||||
::_FILETIME* lpLocalFileTime);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::BOOL_ WINAPI
|
||||
LocalFileTimeToFileTime(
|
||||
const ::_FILETIME* lpLocalFileTime,
|
||||
::_FILETIME* lpFileTime);
|
||||
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::DWORD_ WINAPI
|
||||
GetTickCount(BOOST_DETAIL_WINAPI_VOID);
|
||||
#endif
|
||||
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
BOOST_SYMBOL_IMPORT boost::detail::winapi::ULONGLONG_ WINAPI
|
||||
GetTickCount64(BOOST_DETAIL_WINAPI_VOID);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
namespace detail {
|
||||
namespace winapi {
|
||||
|
||||
typedef struct BOOST_DETAIL_WINAPI_MAY_ALIAS _FILETIME {
|
||||
DWORD_ dwLowDateTime;
|
||||
DWORD_ dwHighDateTime;
|
||||
} FILETIME_, *PFILETIME_, *LPFILETIME_;
|
||||
|
||||
typedef struct BOOST_DETAIL_WINAPI_MAY_ALIAS _SYSTEMTIME {
|
||||
WORD_ wYear;
|
||||
WORD_ wMonth;
|
||||
WORD_ wDayOfWeek;
|
||||
WORD_ wDay;
|
||||
WORD_ wHour;
|
||||
WORD_ wMinute;
|
||||
WORD_ wSecond;
|
||||
WORD_ wMilliseconds;
|
||||
} SYSTEMTIME_, *PSYSTEMTIME_, *LPSYSTEMTIME_;
|
||||
|
||||
#if BOOST_PLAT_WINDOWS_DESKTOP
|
||||
using ::GetTickCount;
|
||||
#endif
|
||||
#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
|
||||
using ::GetTickCount64;
|
||||
#endif
|
||||
|
||||
BOOST_FORCEINLINE VOID_ GetSystemTime(LPSYSTEMTIME_ lpSystemTime)
|
||||
{
|
||||
::GetSystemTime(reinterpret_cast< ::_SYSTEMTIME* >(lpSystemTime));
|
||||
}
|
||||
|
||||
#if defined( BOOST_HAS_GETSYSTEMTIMEASFILETIME )
|
||||
BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(LPFILETIME_ lpSystemTimeAsFileTime)
|
||||
{
|
||||
::GetSystemTimeAsFileTime(reinterpret_cast< ::_FILETIME* >(lpSystemTimeAsFileTime));
|
||||
}
|
||||
#else
|
||||
// Windows CE does not define GetSystemTimeAsFileTime
|
||||
BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(FILETIME_* lpFileTime)
|
||||
{
|
||||
boost::detail::winapi::SYSTEMTIME_ st;
|
||||
boost::detail::winapi::GetSystemTime(&st);
|
||||
boost::detail::winapi::SystemTimeToFileTime(&st, lpFileTime);
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOST_FORCEINLINE BOOL_ SystemTimeToFileTime(const SYSTEMTIME_* lpSystemTime, FILETIME_* lpFileTime)
|
||||
{
|
||||
return ::SystemTimeToFileTime(reinterpret_cast< const ::_SYSTEMTIME* >(lpSystemTime), reinterpret_cast< ::_FILETIME* >(lpFileTime));
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE BOOL_ FileTimeToSystemTime(const FILETIME_* lpFileTime, SYSTEMTIME_* lpSystemTime)
|
||||
{
|
||||
return ::FileTimeToSystemTime(reinterpret_cast< const ::_FILETIME* >(lpFileTime), reinterpret_cast< ::_SYSTEMTIME* >(lpSystemTime));
|
||||
}
|
||||
|
||||
#if BOOST_PLAT_WINDOWS_DESKTOP
|
||||
BOOST_FORCEINLINE BOOL_ FileTimeToLocalFileTime(const FILETIME_* lpFileTime, FILETIME_* lpLocalFileTime)
|
||||
{
|
||||
return ::FileTimeToLocalFileTime(reinterpret_cast< const ::_FILETIME* >(lpFileTime), reinterpret_cast< ::_FILETIME* >(lpLocalFileTime));
|
||||
}
|
||||
|
||||
BOOST_FORCEINLINE BOOL_ LocalFileTimeToFileTime(const FILETIME_* lpLocalFileTime, FILETIME_* lpFileTime)
|
||||
{
|
||||
return ::LocalFileTimeToFileTime(reinterpret_cast< const ::_FILETIME* >(lpLocalFileTime), reinterpret_cast< ::_FILETIME* >(lpFileTime));
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif // BOOST_DETAIL_WINAPI_TIME_HPP
|
||||
@@ -0,0 +1,117 @@
|
||||
// Boost.Range library
|
||||
//
|
||||
// Copyright Neil Groves 2010. 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_DETAIL_ANY_ITERATOR_BUFFER_HPP_INCLUDED
|
||||
#define BOOST_RANGE_DETAIL_ANY_ITERATOR_BUFFER_HPP_INCLUDED
|
||||
|
||||
#include <boost/array.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/noncopyable.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
template<std::size_t StackBufferSize>
|
||||
class any_iterator_buffer
|
||||
: noncopyable
|
||||
{
|
||||
BOOST_STATIC_ASSERT(( StackBufferSize > 0 ));
|
||||
public:
|
||||
any_iterator_buffer()
|
||||
: m_ptr()
|
||||
{
|
||||
}
|
||||
|
||||
~any_iterator_buffer()
|
||||
{
|
||||
delete [] m_ptr;
|
||||
}
|
||||
|
||||
void* allocate(std::size_t bytes)
|
||||
{
|
||||
BOOST_ASSERT( !m_ptr );
|
||||
if (bytes <= StackBufferSize)
|
||||
return m_buffer.data();
|
||||
|
||||
m_ptr = new char[bytes];
|
||||
return m_ptr;
|
||||
}
|
||||
|
||||
void deallocate()
|
||||
{
|
||||
delete [] m_ptr;
|
||||
m_ptr = 0;
|
||||
}
|
||||
|
||||
private:
|
||||
// Rationale:
|
||||
// Do not use inheritance from noncopyable because this causes
|
||||
// the concepts to erroneous detect the derived any_iterator
|
||||
// as noncopyable.
|
||||
any_iterator_buffer(const any_iterator_buffer&);
|
||||
void operator=(const any_iterator_buffer&);
|
||||
|
||||
char* m_ptr;
|
||||
boost::array<char, StackBufferSize> m_buffer;
|
||||
};
|
||||
|
||||
class any_iterator_heap_only_buffer
|
||||
: noncopyable
|
||||
{
|
||||
public:
|
||||
any_iterator_heap_only_buffer()
|
||||
: m_ptr()
|
||||
{
|
||||
}
|
||||
|
||||
~any_iterator_heap_only_buffer()
|
||||
{
|
||||
delete [] m_ptr;
|
||||
}
|
||||
|
||||
void* allocate(std::size_t bytes)
|
||||
{
|
||||
BOOST_ASSERT( !m_ptr );
|
||||
m_ptr = new char[bytes];
|
||||
return m_ptr;
|
||||
}
|
||||
|
||||
void deallocate()
|
||||
{
|
||||
delete [] m_ptr;
|
||||
m_ptr = 0;
|
||||
}
|
||||
|
||||
private:
|
||||
char* m_ptr;
|
||||
};
|
||||
|
||||
template<std::size_t StackBufferSize>
|
||||
class any_iterator_stack_only_buffer
|
||||
{
|
||||
BOOST_STATIC_ASSERT(( StackBufferSize > 0 ));
|
||||
public:
|
||||
void* allocate(std::size_t bytes)
|
||||
{
|
||||
BOOST_ASSERT( bytes <= m_buffer.size() );
|
||||
return m_buffer.data();
|
||||
}
|
||||
|
||||
void deallocate()
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
boost::array<char, StackBufferSize> m_buffer;
|
||||
};
|
||||
|
||||
typedef any_iterator_buffer<64> any_iterator_default_buffer;
|
||||
} // namespace boost
|
||||
|
||||
#endif // include guard
|
||||
@@ -0,0 +1,65 @@
|
||||
/*=============================================================================
|
||||
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_PRIOR_05042005_1144)
|
||||
#define FUSION_PRIOR_05042005_1144
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/support/tag_of.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
// Special tags:
|
||||
struct iterator_facade_tag; // iterator facade tag
|
||||
struct boost_array_iterator_tag; // boost::array iterator tag
|
||||
struct mpl_iterator_tag; // mpl sequence iterator tag
|
||||
struct std_pair_iterator_tag; // std::pair iterator tag
|
||||
|
||||
namespace extension
|
||||
{
|
||||
template <typename Tag>
|
||||
struct prior_impl
|
||||
{
|
||||
template <typename Iterator>
|
||||
struct apply {};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct prior_impl<iterator_facade_tag>
|
||||
{
|
||||
template <typename Iterator>
|
||||
struct apply : Iterator::template prior<Iterator> {};
|
||||
};
|
||||
|
||||
template <>
|
||||
struct prior_impl<boost_array_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct prior_impl<mpl_iterator_tag>;
|
||||
|
||||
template <>
|
||||
struct prior_impl<std_pair_iterator_tag>;
|
||||
}
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template <typename Iterator>
|
||||
struct prior
|
||||
: extension::prior_impl<typename detail::tag_of<Iterator>::type>::
|
||||
template apply<Iterator>
|
||||
{};
|
||||
}
|
||||
|
||||
template <typename Iterator>
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline typename result_of::prior<Iterator>::type const
|
||||
prior(Iterator const& i)
|
||||
{
|
||||
return result_of::prior<Iterator>::call(i);
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,112 @@
|
||||
// -----------------------------------------------------------
|
||||
// integer_log2.hpp
|
||||
//
|
||||
// Gives the integer part of the logarithm, in base 2, of a
|
||||
// given number. Behavior is undefined if the argument is <= 0.
|
||||
//
|
||||
// Copyright (c) 2003-2004, 2008 Gennaro Prota
|
||||
//
|
||||
// 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_INTEGER_INTEGER_LOG2_HPP
|
||||
#define BOOST_INTEGER_INTEGER_LOG2_HPP
|
||||
|
||||
#include <assert.h>
|
||||
#ifdef __BORLANDC__
|
||||
#include <climits>
|
||||
#endif
|
||||
#include <boost/limits.hpp>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
|
||||
namespace boost {
|
||||
namespace detail {
|
||||
|
||||
template <typename T>
|
||||
int integer_log2_impl(T x, int n) {
|
||||
|
||||
int result = 0;
|
||||
|
||||
while (x != 1) {
|
||||
|
||||
const T t = static_cast<T>(x >> n);
|
||||
if (t) {
|
||||
result += n;
|
||||
x = t;
|
||||
}
|
||||
n /= 2;
|
||||
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// helper to find the maximum power of two
|
||||
// less than p (more involved than necessary,
|
||||
// to avoid PTS)
|
||||
//
|
||||
template <int p, int n>
|
||||
struct max_pow2_less {
|
||||
|
||||
enum { c = 2*n < p };
|
||||
|
||||
BOOST_STATIC_CONSTANT(int, value =
|
||||
c ? (max_pow2_less< c*p, 2*c*n>::value) : n);
|
||||
|
||||
};
|
||||
|
||||
template <>
|
||||
struct max_pow2_less<0, 0> {
|
||||
|
||||
BOOST_STATIC_CONSTANT(int, value = 0);
|
||||
};
|
||||
|
||||
// this template is here just for Borland :(
|
||||
// we could simply rely on numeric_limits but sometimes
|
||||
// Borland tries to use numeric_limits<const T>, because
|
||||
// of its usual const-related problems in argument deduction
|
||||
// - gps
|
||||
template <typename T>
|
||||
struct width {
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
BOOST_STATIC_CONSTANT(int, value = sizeof(T) * CHAR_BIT);
|
||||
#else
|
||||
BOOST_STATIC_CONSTANT(int, value = (std::numeric_limits<T>::digits));
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
} // detail
|
||||
|
||||
|
||||
// ---------
|
||||
// integer_log2
|
||||
// ---------------
|
||||
//
|
||||
template <typename T>
|
||||
int integer_log2(T x) {
|
||||
|
||||
assert(x > 0);
|
||||
|
||||
const int n = detail::max_pow2_less<
|
||||
detail::width<T> :: value, 4
|
||||
> :: value;
|
||||
|
||||
return detail::integer_log2_impl(x, n);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
#endif // include guard
|
||||
@@ -0,0 +1,94 @@
|
||||
|
||||
// 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 "less_equal.hpp" header
|
||||
// -- DO NOT modify by hand!
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<
|
||||
typename Tag1
|
||||
, typename Tag2
|
||||
>
|
||||
struct less_equal_impl
|
||||
: if_c<
|
||||
( BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag1)
|
||||
> BOOST_MPL_AUX_NESTED_VALUE_WKND(int, Tag2)
|
||||
)
|
||||
|
||||
, aux::cast2nd_impl< less_equal_impl< Tag1,Tag1 >,Tag1, Tag2 >
|
||||
, aux::cast1st_impl< less_equal_impl< Tag2,Tag2 >,Tag1, Tag2 >
|
||||
>::type
|
||||
{
|
||||
};
|
||||
|
||||
/// for Digital Mars C++/compilers with no CTPS/TTP support
|
||||
template<> struct less_equal_impl< na,na >
|
||||
{
|
||||
template< typename U1, typename U2 > struct apply
|
||||
{
|
||||
typedef apply type;
|
||||
BOOST_STATIC_CONSTANT(int, value = 0);
|
||||
};
|
||||
};
|
||||
|
||||
template< typename Tag > struct less_equal_impl< na,Tag >
|
||||
{
|
||||
template< typename U1, typename U2 > struct apply
|
||||
{
|
||||
typedef apply type;
|
||||
BOOST_STATIC_CONSTANT(int, value = 0);
|
||||
};
|
||||
};
|
||||
|
||||
template< typename Tag > struct less_equal_impl< Tag,na >
|
||||
{
|
||||
template< typename U1, typename U2 > struct apply
|
||||
{
|
||||
typedef apply type;
|
||||
BOOST_STATIC_CONSTANT(int, value = 0);
|
||||
};
|
||||
};
|
||||
|
||||
template< typename T > struct less_equal_tag
|
||||
{
|
||||
typedef typename T::tag type;
|
||||
};
|
||||
|
||||
template<
|
||||
typename BOOST_MPL_AUX_NA_PARAM(N1)
|
||||
, typename BOOST_MPL_AUX_NA_PARAM(N2)
|
||||
>
|
||||
struct less_equal
|
||||
|
||||
: less_equal_impl<
|
||||
typename less_equal_tag<N1>::type
|
||||
, typename less_equal_tag<N2>::type
|
||||
>::template apply< N1,N2 >::type
|
||||
{
|
||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(2, less_equal, (N1, N2))
|
||||
|
||||
};
|
||||
|
||||
BOOST_MPL_AUX_NA_SPEC2(2, 2, less_equal)
|
||||
|
||||
}}
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<>
|
||||
struct less_equal_impl< integral_c_tag,integral_c_tag >
|
||||
{
|
||||
template< typename N1, typename N2 > struct apply
|
||||
|
||||
: bool_< ( BOOST_MPL_AUX_VALUE_WKND(N1)::value <= BOOST_MPL_AUX_VALUE_WKND(N2)::value ) >
|
||||
{
|
||||
};
|
||||
};
|
||||
|
||||
}}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,163 @@
|
||||
// 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_STATS_DERIVED_HPP
|
||||
#define BOOST_STATS_DERIVED_HPP
|
||||
|
||||
// This file implements various common properties of distributions
|
||||
// that can be implemented in terms of other properties:
|
||||
// variance OR standard deviation (see note below),
|
||||
// hazard, cumulative hazard (chf), coefficient_of_variation.
|
||||
//
|
||||
// Note that while both variance and standard_deviation are provided
|
||||
// here, each distribution MUST SPECIALIZE AT LEAST ONE OF THESE
|
||||
// otherwise these two versions will just call each other over and over
|
||||
// until stack space runs out ...
|
||||
|
||||
// Of course there may be more efficient means of implementing these
|
||||
// that are specific to a particular distribution, but these generic
|
||||
// versions give these properties "for free" with most distributions.
|
||||
//
|
||||
// In order to make use of this header, it must be included AT THE END
|
||||
// of the distribution header, AFTER the distribution and its core
|
||||
// property accessors have been defined: this is so that compilers
|
||||
// that implement 2-phase lookup and early-type-checking of templates
|
||||
// can find the definitions refered to herein.
|
||||
//
|
||||
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4723) // potential divide by 0
|
||||
// Suppressing spurious warning in coefficient_of_variation
|
||||
#endif
|
||||
|
||||
namespace boost{ namespace math{
|
||||
|
||||
template <class Distribution>
|
||||
typename Distribution::value_type variance(const Distribution& dist);
|
||||
|
||||
template <class Distribution>
|
||||
inline typename Distribution::value_type standard_deviation(const Distribution& dist)
|
||||
{
|
||||
BOOST_MATH_STD_USING // ADL of sqrt.
|
||||
return sqrt(variance(dist));
|
||||
}
|
||||
|
||||
template <class Distribution>
|
||||
inline typename Distribution::value_type variance(const Distribution& dist)
|
||||
{
|
||||
typename Distribution::value_type result = standard_deviation(dist);
|
||||
return result * result;
|
||||
}
|
||||
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type hazard(const Distribution& dist, const RealType& x)
|
||||
{ // hazard function
|
||||
// http://www.itl.nist.gov/div898/handbook/eda/section3/eda362.htm#HAZ
|
||||
typedef typename Distribution::value_type value_type;
|
||||
typedef typename Distribution::policy_type policy_type;
|
||||
value_type p = cdf(complement(dist, x));
|
||||
value_type d = pdf(dist, x);
|
||||
if(d > p * tools::max_value<value_type>())
|
||||
return policies::raise_overflow_error<value_type>(
|
||||
"boost::math::hazard(const Distribution&, %1%)", 0, policy_type());
|
||||
if(d == 0)
|
||||
{
|
||||
// This protects against 0/0, but is it the right thing to do?
|
||||
return 0;
|
||||
}
|
||||
return d / p;
|
||||
}
|
||||
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type chf(const Distribution& dist, const RealType& x)
|
||||
{ // cumulative hazard function.
|
||||
// http://www.itl.nist.gov/div898/handbook/eda/section3/eda362.htm#HAZ
|
||||
BOOST_MATH_STD_USING
|
||||
return -log(cdf(complement(dist, x)));
|
||||
}
|
||||
|
||||
template <class Distribution>
|
||||
inline typename Distribution::value_type coefficient_of_variation(const Distribution& dist)
|
||||
{
|
||||
typedef typename Distribution::value_type value_type;
|
||||
typedef typename Distribution::policy_type policy_type;
|
||||
|
||||
using std::abs;
|
||||
|
||||
value_type m = mean(dist);
|
||||
value_type d = standard_deviation(dist);
|
||||
if((abs(m) < 1) && (d > abs(m) * tools::max_value<value_type>()))
|
||||
{ // Checks too that m is not zero,
|
||||
return policies::raise_overflow_error<value_type>("boost::math::coefficient_of_variation(const Distribution&, %1%)", 0, policy_type());
|
||||
}
|
||||
return d / m; // so MSVC warning on zerodivide is spurious, and suppressed.
|
||||
}
|
||||
//
|
||||
// Next follow overloads of some of the standard accessors with mixed
|
||||
// argument types. We just use a typecast to forward on to the "real"
|
||||
// implementation with all arguments of the same type:
|
||||
//
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type pdf(const Distribution& dist, const RealType& x)
|
||||
{
|
||||
typedef typename Distribution::value_type value_type;
|
||||
return pdf(dist, static_cast<value_type>(x));
|
||||
}
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type cdf(const Distribution& dist, const RealType& x)
|
||||
{
|
||||
typedef typename Distribution::value_type value_type;
|
||||
return cdf(dist, static_cast<value_type>(x));
|
||||
}
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type quantile(const Distribution& dist, const RealType& x)
|
||||
{
|
||||
typedef typename Distribution::value_type value_type;
|
||||
return quantile(dist, static_cast<value_type>(x));
|
||||
}
|
||||
/*
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type chf(const Distribution& dist, const RealType& x)
|
||||
{
|
||||
typedef typename Distribution::value_type value_type;
|
||||
return chf(dist, static_cast<value_type>(x));
|
||||
}
|
||||
*/
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type cdf(const complemented2_type<Distribution, RealType>& c)
|
||||
{
|
||||
typedef typename Distribution::value_type value_type;
|
||||
return cdf(complement(c.dist, static_cast<value_type>(c.param)));
|
||||
}
|
||||
|
||||
template <class Distribution, class RealType>
|
||||
inline typename Distribution::value_type quantile(const complemented2_type<Distribution, RealType>& c)
|
||||
{
|
||||
typedef typename Distribution::value_type value_type;
|
||||
return quantile(complement(c.dist, static_cast<value_type>(c.param)));
|
||||
}
|
||||
|
||||
template <class Dist>
|
||||
inline typename Dist::value_type median(const Dist& d)
|
||||
{ // median - default definition for those distributions for which a
|
||||
// simple closed form is not known,
|
||||
// and for which a domain_error and/or NaN generating function is NOT defined.
|
||||
typedef typename Dist::value_type value_type;
|
||||
return quantile(d, static_cast<value_type>(0.5f));
|
||||
}
|
||||
|
||||
} // namespace math
|
||||
} // namespace boost
|
||||
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
# pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#endif // BOOST_STATS_DERIVED_HPP
|
||||
@@ -0,0 +1,58 @@
|
||||
#ifndef MESSAGE_BOX_HPP__
|
||||
#define MESSAGE_BOX_HPP__
|
||||
|
||||
#include <QMessageBox>
|
||||
|
||||
// get rid of the nasty MS define
|
||||
#ifdef MessageBox
|
||||
#undef MessageBox
|
||||
#endif
|
||||
|
||||
//
|
||||
// MessageBox - wrap the Qt QMessageBox class to give a more platform
|
||||
// neutral and functional interface
|
||||
//
|
||||
class MessageBox
|
||||
: public QMessageBox
|
||||
{
|
||||
public:
|
||||
explicit MessageBox (QWidget * parent = nullptr);
|
||||
explicit MessageBox (Icon, QString const& text, StandardButtons = NoButton
|
||||
, QWidget * parent = nullptr
|
||||
, Qt::WindowFlags = Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
|
||||
|
||||
static void about_message (QWidget * parent, QString const& text);
|
||||
static void about_Qt_message (QWidget * parent);
|
||||
static StandardButton information_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Ok
|
||||
, StandardButton default_button = NoButton);
|
||||
static StandardButton query_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Yes | No
|
||||
, StandardButton default_button = NoButton);
|
||||
static StandardButton warning_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Ok
|
||||
, StandardButton default_button = NoButton);
|
||||
static StandardButton critical_message (QWidget * parent, QString const& text
|
||||
, QString const& informative = QString {}
|
||||
, QString const& detail = QString {}
|
||||
, StandardButtons buttons = Ok
|
||||
, StandardButton default_button = NoButton);
|
||||
private:
|
||||
// hide the parent static functions so that users use our versions
|
||||
// above that are correctly branded and have better platform
|
||||
// independence
|
||||
using QMessageBox::about;
|
||||
using QMessageBox::aboutQt;
|
||||
using QMessageBox::information;
|
||||
using QMessageBox::question;
|
||||
using QMessageBox::warning;
|
||||
using QMessageBox::critical;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,615 @@
|
||||
// -*- Mode: C++ -*-
|
||||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
#ifdef QT5
|
||||
#include <QtWidgets>
|
||||
#else
|
||||
#include <QtGui>
|
||||
#endif
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
#include <QDateTime>
|
||||
#include <QList>
|
||||
#include <QAudioDeviceInfo>
|
||||
#include <QScopedPointer>
|
||||
#include <QDir>
|
||||
#include <QProgressDialog>
|
||||
#include <QAbstractSocket>
|
||||
#include <QHostAddress>
|
||||
#include <QPointer>
|
||||
#include <QSet>
|
||||
#include <QVector>
|
||||
#include <QFuture>
|
||||
#include <QFutureWatcher>
|
||||
|
||||
#include "AudioDevice.hpp"
|
||||
#include "commons.h"
|
||||
#include "Radio.hpp"
|
||||
#include "Modes.hpp"
|
||||
#include "FrequencyList.hpp"
|
||||
#include "Configuration.hpp"
|
||||
#include "WSPRBandHopping.hpp"
|
||||
#include "Transceiver.hpp"
|
||||
#include "DisplayManual.hpp"
|
||||
#include "psk_reporter.h"
|
||||
#include "logbook/logbook.h"
|
||||
#include "decodedtext.h"
|
||||
#include "commons.h"
|
||||
#include "astro.h"
|
||||
#include "MessageBox.hpp"
|
||||
#include "NetworkAccessManager.hpp"
|
||||
|
||||
#define NUM_JT4_SYMBOLS 206 //(72+31)*2, embedded sync
|
||||
#define NUM_JT65_SYMBOLS 126 //63 data + 63 sync
|
||||
#define NUM_JT9_SYMBOLS 85 //69 data + 16 sync
|
||||
#define NUM_WSPR_SYMBOLS 162 //(50+31)*2, embedded sync
|
||||
#define NUM_WSPR_LF_SYMBOLS 412 //300 data + 109 sync + 3 ramp
|
||||
#define NUM_ISCAT_SYMBOLS 1291 //30*11025/256
|
||||
#define NUM_MSK144_SYMBOLS 144 //s8 + d48 + s8 + d80
|
||||
#define NUM_QRA64_SYMBOLS 84 //63 data + 21 sync
|
||||
#define NUM_CW_SYMBOLS 250
|
||||
#define TX_SAMPLE_RATE 48000
|
||||
#define N_WIDGETS 24
|
||||
|
||||
extern int volatile itone[NUM_ISCAT_SYMBOLS]; //Audio tones for all Tx symbols
|
||||
extern int volatile icw[NUM_CW_SYMBOLS]; //Dits for CW ID
|
||||
|
||||
//--------------------------------------------------------------- MainWindow
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
class QSettings;
|
||||
class QLineEdit;
|
||||
class QFont;
|
||||
class QHostInfo;
|
||||
class EchoGraph;
|
||||
class FastGraph;
|
||||
class WideGraph;
|
||||
class LogQSO;
|
||||
class Transceiver;
|
||||
class MessageAveraging;
|
||||
class MessageClient;
|
||||
class QTime;
|
||||
class WSPRBandHopping;
|
||||
class HelpTextWindow;
|
||||
class WSPRNet;
|
||||
class SoundOutput;
|
||||
class Modulator;
|
||||
class SoundInput;
|
||||
class Detector;
|
||||
class SampleDownloader;
|
||||
class MultiSettings;
|
||||
class PhaseEqualizationDialog;
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
using Frequency = Radio::Frequency;
|
||||
using FrequencyDelta = Radio::FrequencyDelta;
|
||||
using Mode = Modes::Mode;
|
||||
|
||||
explicit MainWindow(QDir const& temp_directory, bool multiple, MultiSettings *,
|
||||
QSharedMemory *shdmem, unsigned downSampleFactor,
|
||||
QSplashScreen *,
|
||||
QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
|
||||
public slots:
|
||||
void showSoundInError(const QString& errorMsg);
|
||||
void showSoundOutError(const QString& errorMsg);
|
||||
void showStatusMessage(const QString& statusMsg);
|
||||
void dataSink(qint64 frames);
|
||||
void fastSink(qint64 frames);
|
||||
void diskDat();
|
||||
void freezeDecode(int n);
|
||||
void guiUpdate();
|
||||
void doubleClickOnCall(bool shift, bool ctrl);
|
||||
void doubleClickOnCall2(bool shift, bool ctrl);
|
||||
void readFromStdout();
|
||||
void p1ReadFromStdout();
|
||||
void setXIT(int n, Frequency base = 0u);
|
||||
void setFreq4(int rxFreq, int txFreq);
|
||||
void msgAvgDecode2();
|
||||
void fastPick(int x0, int x1, int y);
|
||||
|
||||
protected:
|
||||
void keyPressEvent (QKeyEvent *) override;
|
||||
void closeEvent(QCloseEvent *) override;
|
||||
void childEvent(QChildEvent *) override;
|
||||
bool eventFilter(QObject *, QEvent *) override;
|
||||
|
||||
private slots:
|
||||
void on_tx1_editingFinished();
|
||||
void on_tx2_editingFinished();
|
||||
void on_tx3_editingFinished();
|
||||
void on_tx4_editingFinished();
|
||||
void on_tx5_currentTextChanged (QString const&);
|
||||
void on_tx6_editingFinished();
|
||||
void on_actionSettings_triggered();
|
||||
void on_monitorButton_clicked (bool);
|
||||
void on_actionAbout_triggered();
|
||||
void on_autoButton_clicked (bool);
|
||||
void on_stopTxButton_clicked();
|
||||
void on_stopButton_clicked();
|
||||
void on_actionRelease_Notes_triggered ();
|
||||
void on_actionOnline_User_Guide_triggered();
|
||||
void on_actionLocal_User_Guide_triggered();
|
||||
void on_actionWide_Waterfall_triggered();
|
||||
void on_actionOpen_triggered();
|
||||
void on_actionOpen_next_in_directory_triggered();
|
||||
void on_actionDecode_remaining_files_in_directory_triggered();
|
||||
void on_actionDelete_all_wav_files_in_SaveDir_triggered();
|
||||
void on_actionOpen_log_directory_triggered ();
|
||||
void on_actionNone_triggered();
|
||||
void on_actionSave_all_triggered();
|
||||
void on_actionKeyboard_shortcuts_triggered();
|
||||
void on_actionSpecial_mouse_commands_triggered();
|
||||
void on_DecodeButton_clicked (bool);
|
||||
void decode();
|
||||
void decodeBusy(bool b);
|
||||
void on_EraseButton_clicked();
|
||||
void on_txb1_clicked();
|
||||
void on_txFirstCheckBox_stateChanged(int arg1);
|
||||
void set_dateTimeQSO(int m_ntx);
|
||||
void set_ntx(int n);
|
||||
void on_txrb1_toggled(bool status);
|
||||
void on_txrb2_toggled(bool status);
|
||||
void on_txrb3_toggled(bool status);
|
||||
void on_txb2_clicked();
|
||||
void on_txb3_clicked();
|
||||
void on_txb4_clicked();
|
||||
void on_txb5_clicked();
|
||||
void on_txb6_clicked();
|
||||
void on_lookupButton_clicked();
|
||||
void on_addButton_clicked();
|
||||
void on_dxCallEntry_textChanged (QString const&);
|
||||
void on_dxGridEntry_textChanged (QString const&);
|
||||
void on_dxCallEntry_returnPressed ();
|
||||
void on_genStdMsgsPushButton_clicked();
|
||||
void on_logQSOButton_clicked();
|
||||
void on_actionJT9_triggered();
|
||||
void on_actionJT65_triggered();
|
||||
void on_actionJT9_JT65_triggered();
|
||||
void on_actionJT4_triggered();
|
||||
void on_TxFreqSpinBox_valueChanged(int arg1);
|
||||
void on_actionSave_decoded_triggered();
|
||||
void on_actionQuickDecode_toggled (bool);
|
||||
void on_actionMediumDecode_toggled (bool);
|
||||
void on_actionDeepestDecode_toggled (bool);
|
||||
void on_inGain_valueChanged(int n);
|
||||
void bumpFqso(int n);
|
||||
void on_actionErase_ALL_TXT_triggered();
|
||||
void on_actionErase_wsjtx_log_adi_triggered();
|
||||
void startTx2();
|
||||
void startP1();
|
||||
void stopTx();
|
||||
void stopTx2();
|
||||
void on_pbCallCQ_clicked();
|
||||
void on_pbAnswerCaller_clicked();
|
||||
void on_pbSendRRR_clicked();
|
||||
void on_pbAnswerCQ_clicked();
|
||||
void on_pbSendReport_clicked();
|
||||
void on_pbSend73_clicked();
|
||||
void on_rbGenMsg_clicked(bool checked);
|
||||
void on_rbFreeText_clicked(bool checked);
|
||||
void on_freeTextMsg_currentTextChanged (QString const&);
|
||||
void on_rptSpinBox_valueChanged(int n);
|
||||
void killFile();
|
||||
void on_tuneButton_clicked (bool);
|
||||
void on_pbR2T_clicked();
|
||||
void on_pbT2R_clicked();
|
||||
void acceptQSO2(QDateTime const&, QString const& call, QString const& grid
|
||||
, Frequency dial_freq, QString const& mode
|
||||
, QString const& rpt_sent, QString const& rpt_received
|
||||
, QString const& tx_power, QString const& comments
|
||||
, QString const& name, QDateTime const&);
|
||||
void on_bandComboBox_currentIndexChanged (int index);
|
||||
void on_bandComboBox_activated (int index);
|
||||
void on_readFreq_clicked();
|
||||
void on_pbTxMode_clicked();
|
||||
void on_RxFreqSpinBox_valueChanged(int n);
|
||||
void on_cbTxLock_clicked(bool checked);
|
||||
void on_outAttenuation_valueChanged (int);
|
||||
void rigOpen ();
|
||||
void handle_transceiver_update (Transceiver::TransceiverState const&);
|
||||
void handle_transceiver_failure (QString const& reason);
|
||||
void on_actionAstronomical_data_toggled (bool);
|
||||
void on_actionShort_list_of_add_on_prefixes_and_suffixes_triggered();
|
||||
void band_changed (Frequency);
|
||||
void monitor (bool);
|
||||
void stop_tuning ();
|
||||
void stopTuneATU();
|
||||
void auto_tx_mode(bool);
|
||||
void on_actionMessage_averaging_triggered();
|
||||
void on_actionInclude_averaging_toggled (bool);
|
||||
void on_actionInclude_correlation_toggled (bool);
|
||||
void on_actionEnable_AP_DXcall_toggled (bool);
|
||||
void VHF_features_enabled(bool b);
|
||||
void on_sbSubmode_valueChanged(int n);
|
||||
void on_cbShMsgs_toggled(bool b);
|
||||
void on_cbSWL_toggled(bool b);
|
||||
void on_cbTx6_toggled(bool b);
|
||||
void networkError (QString const&);
|
||||
void on_ClrAvgButton_clicked();
|
||||
void on_actionWSPR_triggered();
|
||||
void on_actionWSPR_LF_triggered();
|
||||
void on_syncSpinBox_valueChanged(int n);
|
||||
void on_TxPowerComboBox_currentIndexChanged(const QString &arg1);
|
||||
void on_sbTxPercent_valueChanged(int n);
|
||||
void on_cbUploadWSPR_Spots_toggled(bool b);
|
||||
void WSPR_config(bool b);
|
||||
void uploadSpots();
|
||||
void TxAgain();
|
||||
void uploadResponse(QString response);
|
||||
void on_WSPRfreqSpinBox_valueChanged(int n);
|
||||
void on_pbTxNext_clicked(bool b);
|
||||
void on_actionEcho_Graph_triggered();
|
||||
void on_actionEcho_triggered();
|
||||
void on_actionISCAT_triggered();
|
||||
void on_actionFast_Graph_triggered();
|
||||
void on_actionHide_Controls_toggled (bool chaecked);
|
||||
void fast_decode_done();
|
||||
void on_actionMeasure_reference_spectrum_triggered();
|
||||
void on_actionErase_reference_spectrum_triggered();
|
||||
void on_actionMeasure_phase_response_triggered();
|
||||
void on_sbTR_valueChanged (int);
|
||||
void on_sbFtol_valueChanged (int);
|
||||
void on_cbFast9_clicked(bool b);
|
||||
void on_sbCQTxFreq_valueChanged(int n);
|
||||
void on_cbCQTx_toggled(bool b);
|
||||
void on_actionMSK144_triggered();
|
||||
void on_actionQRA64_triggered();
|
||||
void on_actionFreqCal_triggered();
|
||||
void splash_done ();
|
||||
|
||||
private:
|
||||
Q_SIGNAL void initializeAudioOutputStream (QAudioDeviceInfo,
|
||||
unsigned channels, unsigned msBuffered) const;
|
||||
Q_SIGNAL void stopAudioOutputStream () const;
|
||||
Q_SIGNAL void startAudioInputStream (QAudioDeviceInfo const&,
|
||||
int framesPerBuffer, AudioDevice * sink,
|
||||
unsigned downSampleFactor, AudioDevice::Channel) const;
|
||||
Q_SIGNAL void suspendAudioInputStream () const;
|
||||
Q_SIGNAL void resumeAudioInputStream () const;
|
||||
Q_SIGNAL void startDetector (AudioDevice::Channel) const;
|
||||
Q_SIGNAL void FFTSize (unsigned) const;
|
||||
Q_SIGNAL void detectorClose () const;
|
||||
Q_SIGNAL void finished () const;
|
||||
Q_SIGNAL void transmitFrequency (double) const;
|
||||
Q_SIGNAL void endTransmitMessage (bool quick = false) const;
|
||||
Q_SIGNAL void tune (bool = true) const;
|
||||
Q_SIGNAL void sendMessage (unsigned symbolsLength, double framesPerSymbol,
|
||||
double frequency, double toneSpacing,
|
||||
SoundOutput *, AudioDevice::Channel = AudioDevice::Mono,
|
||||
bool synchronize = true, bool fastMode = false, double dBSNR = 99.,
|
||||
int TRperiod=60) const;
|
||||
Q_SIGNAL void outAttenuationChanged (qreal) const;
|
||||
Q_SIGNAL void toggleShorthand () const;
|
||||
|
||||
private:
|
||||
void astroUpdate ();
|
||||
void writeAllTxt(QString message);
|
||||
|
||||
NetworkAccessManager m_network_manager;
|
||||
bool m_valid;
|
||||
QSplashScreen * m_splash;
|
||||
QDir m_dataDir;
|
||||
QString m_revision;
|
||||
bool m_multiple;
|
||||
MultiSettings * m_multi_settings;
|
||||
QPushButton * m_configurations_button;
|
||||
QSettings * m_settings;
|
||||
QScopedPointer<Ui::MainWindow> ui;
|
||||
|
||||
// other windows
|
||||
Configuration m_config;
|
||||
WSPRBandHopping m_WSPR_band_hopping;
|
||||
bool m_WSPR_tx_next;
|
||||
MessageBox m_rigErrorMessageBox;
|
||||
QScopedPointer<SampleDownloader> m_sampleDownloader;
|
||||
QScopedPointer<PhaseEqualizationDialog> m_phaseEqualizationDialog;
|
||||
|
||||
QScopedPointer<WideGraph> m_wideGraph;
|
||||
QScopedPointer<EchoGraph> m_echoGraph;
|
||||
QScopedPointer<FastGraph> m_fastGraph;
|
||||
QScopedPointer<LogQSO> m_logDlg;
|
||||
QScopedPointer<Astro> m_astroWidget;
|
||||
QScopedPointer<HelpTextWindow> m_shortcuts;
|
||||
QScopedPointer<HelpTextWindow> m_prefixes;
|
||||
QScopedPointer<HelpTextWindow> m_mouseCmnds;
|
||||
QScopedPointer<MessageAveraging> m_msgAvgWidget;
|
||||
|
||||
Transceiver::TransceiverState m_rigState;
|
||||
Frequency m_lastDialFreq;
|
||||
QString m_lastBand;
|
||||
Frequency m_dialFreqRxWSPR; // best guess at WSPR QRG
|
||||
|
||||
Detector * m_detector;
|
||||
unsigned m_FFTSize;
|
||||
SoundInput * m_soundInput;
|
||||
Modulator * m_modulator;
|
||||
SoundOutput * m_soundOutput;
|
||||
QThread m_audioThread;
|
||||
|
||||
qint64 m_msErase;
|
||||
qint64 m_secBandChanged;
|
||||
qint64 m_freqMoon;
|
||||
Frequency m_freqNominal;
|
||||
Frequency m_freqTxNominal;
|
||||
Astro::Correction m_astroCorrection;
|
||||
|
||||
double m_s6;
|
||||
double m_tRemaining;
|
||||
|
||||
float m_DTtol;
|
||||
float m_t0;
|
||||
float m_t1;
|
||||
float m_t0Pick;
|
||||
float m_t1Pick;
|
||||
float m_fCPUmskrtd;
|
||||
|
||||
qint32 m_waterfallAvg;
|
||||
qint32 m_ntx;
|
||||
bool m_gen_message_is_cq;
|
||||
qint32 m_timeout;
|
||||
qint32 m_XIT;
|
||||
qint32 m_setftx;
|
||||
qint32 m_ndepth;
|
||||
qint32 m_sec0;
|
||||
qint32 m_RxLog;
|
||||
qint32 m_nutc0;
|
||||
qint32 m_ntr;
|
||||
qint32 m_tx;
|
||||
qint32 m_hsym;
|
||||
qint32 m_TRperiod;
|
||||
qint32 m_nsps;
|
||||
qint32 m_hsymStop;
|
||||
qint32 m_inGain;
|
||||
qint32 m_ncw;
|
||||
qint32 m_secID;
|
||||
qint32 m_idleMinutes;
|
||||
qint32 m_nSubMode;
|
||||
qint32 m_nclearave;
|
||||
qint32 m_minSync;
|
||||
qint32 m_dBm;
|
||||
qint32 m_pctx;
|
||||
qint32 m_nseq;
|
||||
qint32 m_nWSPRdecodes;
|
||||
qint32 m_k0;
|
||||
qint32 m_kdone;
|
||||
qint32 m_nPick;
|
||||
FrequencyList::const_iterator m_frequency_list_fcal_iter;
|
||||
qint32 m_nTx73;
|
||||
qint32 m_UTCdisk;
|
||||
qint32 m_wait;
|
||||
|
||||
bool m_btxok; //True if OK to transmit
|
||||
bool m_diskData;
|
||||
bool m_loopall;
|
||||
bool m_decoderBusy;
|
||||
bool m_txFirst;
|
||||
bool m_auto;
|
||||
bool m_restart;
|
||||
bool m_startAnother;
|
||||
bool m_saveDecoded;
|
||||
bool m_saveAll;
|
||||
bool m_widebandDecode;
|
||||
bool m_call3Modified;
|
||||
bool m_dataAvailable;
|
||||
bool m_bDecoded;
|
||||
bool m_noSuffix;
|
||||
bool m_blankLine;
|
||||
bool m_decodedText2;
|
||||
bool m_freeText;
|
||||
bool m_sentFirst73;
|
||||
int m_currentMessageType;
|
||||
QString m_currentMessage;
|
||||
int m_lastMessageType;
|
||||
QString m_lastMessageSent;
|
||||
bool m_lockTxFreq;
|
||||
bool m_bShMsgs;
|
||||
bool m_bSWL;
|
||||
bool m_uploadSpots;
|
||||
bool m_uploading;
|
||||
bool m_txNext;
|
||||
bool m_grid6;
|
||||
bool m_tuneup;
|
||||
bool m_bTxTime;
|
||||
bool m_rxDone;
|
||||
bool m_bSimplex; // not using split even if it is available
|
||||
bool m_bEchoTxOK;
|
||||
bool m_bTransmittedEcho;
|
||||
bool m_bEchoTxed;
|
||||
bool m_bFastMode;
|
||||
bool m_bFast9;
|
||||
bool m_bFastDecodeCalled;
|
||||
bool m_bDoubleClickAfterCQnnn;
|
||||
bool m_bRefSpec;
|
||||
bool m_bClearRefSpec;
|
||||
bool m_bTrain;
|
||||
bool m_bUseRef;
|
||||
bool m_bFastDone;
|
||||
bool m_bAltV;
|
||||
bool m_bNoMoreFiles;
|
||||
bool m_bQRAsyncWarned;
|
||||
bool m_bDoubleClicked;
|
||||
|
||||
int m_ihsym;
|
||||
int m_nzap;
|
||||
int m_npts8;
|
||||
float m_px;
|
||||
float m_pxmax;
|
||||
float m_df3;
|
||||
int m_iptt0;
|
||||
bool m_btxok0;
|
||||
int m_nsendingsh;
|
||||
double m_onAirFreq0;
|
||||
bool m_first_error;
|
||||
|
||||
char m_msg[100][80];
|
||||
|
||||
// labels in status bar
|
||||
QLabel tx_status_label;
|
||||
QLabel config_label;
|
||||
QLabel mode_label;
|
||||
QLabel last_tx_label;
|
||||
QLabel auto_tx_label;
|
||||
QLabel band_hopping_label;
|
||||
QProgressBar progressBar;
|
||||
QLabel watchdog_label;
|
||||
|
||||
QFuture<void> m_wav_future;
|
||||
QFutureWatcher<void> m_wav_future_watcher;
|
||||
QFutureWatcher<void> watcher3;
|
||||
QFutureWatcher<QString> m_saveWAVWatcher;
|
||||
|
||||
QProcess proc_jt9;
|
||||
QProcess p1;
|
||||
QProcess p3;
|
||||
|
||||
WSPRNet *wsprNet;
|
||||
|
||||
QTimer m_guiTimer;
|
||||
QTimer ptt1Timer; //StartTx delay
|
||||
QTimer ptt0Timer; //StopTx delay
|
||||
QTimer logQSOTimer;
|
||||
QTimer killFileTimer;
|
||||
QTimer tuneButtonTimer;
|
||||
QTimer uploadTimer;
|
||||
QTimer tuneATU_Timer;
|
||||
QTimer TxAgainTimer;
|
||||
QTimer minuteTimer;
|
||||
QTimer splashTimer;
|
||||
QTimer p1Timer;
|
||||
|
||||
QString m_path;
|
||||
QString m_baseCall;
|
||||
QString m_hisCall;
|
||||
QString m_hisGrid;
|
||||
QString m_appDir;
|
||||
QString m_palette;
|
||||
QString m_dateTime;
|
||||
QString m_mode;
|
||||
QString m_modeTx;
|
||||
QString m_fnameWE; // save path without extension
|
||||
QString m_rpt;
|
||||
QString m_rptSent;
|
||||
QString m_rptRcvd;
|
||||
QString m_qsoStart;
|
||||
QString m_qsoStop;
|
||||
QString m_cmnd;
|
||||
QString m_cmndP1;
|
||||
QString m_msgSent0;
|
||||
QString m_fileToSave;
|
||||
QString m_calls;
|
||||
|
||||
QSet<QString> m_pfx;
|
||||
QSet<QString> m_sfx;
|
||||
|
||||
QDateTime m_dateTimeQSOOn;
|
||||
QDateTime m_dateTimeQSOOff;
|
||||
QDateTime m_dateTimeDefault;
|
||||
|
||||
QSharedMemory *mem_jt9;
|
||||
LogBook m_logBook;
|
||||
DecodedText m_QSOText;
|
||||
unsigned m_msAudioOutputBuffered;
|
||||
unsigned m_framesAudioInputBuffered;
|
||||
unsigned m_downSampleFactor;
|
||||
QThread::Priority m_audioThreadPriority;
|
||||
bool m_bandEdited;
|
||||
bool m_splitMode;
|
||||
bool m_monitoring;
|
||||
bool m_transmitting;
|
||||
bool m_tune;
|
||||
bool m_tx_watchdog; // true when watchdog triggered
|
||||
bool m_block_pwr_tooltip;
|
||||
bool m_PwrBandSetOK;
|
||||
bool m_bVHFwarned;
|
||||
Frequency m_lastMonitoredFrequency;
|
||||
double m_toneSpacing;
|
||||
int m_firstDecode;
|
||||
QProgressDialog m_optimizingProgress;
|
||||
QTimer m_heartbeat;
|
||||
MessageClient * m_messageClient;
|
||||
PSK_Reporter *psk_Reporter;
|
||||
DisplayManual m_manual;
|
||||
QHash<QString, QVariant> m_pwrBandTxMemory; // Remembers power level by band
|
||||
QHash<QString, QVariant> m_pwrBandTuneMemory; // Remembers power level by band for tuning
|
||||
QByteArray m_geometryNoControls;
|
||||
QVector<double> m_phaseEqCoefficients;
|
||||
|
||||
//---------------------------------------------------- private functions
|
||||
void readSettings();
|
||||
void setDecodedTextFont (QFont const&);
|
||||
void writeSettings();
|
||||
void createStatusBar();
|
||||
void updateStatusBar();
|
||||
void genStdMsgs(QString rpt);
|
||||
void genCQMsg();
|
||||
void clearDX ();
|
||||
void lookup();
|
||||
void ba2msg(QByteArray ba, char* message);
|
||||
void msgtype(QString t, QLineEdit* tx);
|
||||
void stub();
|
||||
void statusChanged();
|
||||
void fixStop();
|
||||
bool shortList(QString callsign);
|
||||
void transmit (double snr = 99.);
|
||||
void rigFailure (QString const& reason);
|
||||
void pskSetLocal ();
|
||||
void pskPost(DecodedText decodedtext);
|
||||
void displayDialFrequency ();
|
||||
void transmitDisplay (bool);
|
||||
void processMessage(QString const& messages, qint32 position, bool ctrl);
|
||||
void replyToCQ (QTime, qint32 snr, float delta_time, quint32 delta_frequency, QString const& mode, QString const& message_text);
|
||||
void replayDecodes ();
|
||||
void postDecode (bool is_new, QString const& message);
|
||||
void postWSPRDecode (bool is_new, QStringList message_parts);
|
||||
void enable_DXCC_entity (bool on);
|
||||
void switch_mode (Mode);
|
||||
void WSPR_scheduling ();
|
||||
void freqCalStep();
|
||||
void setRig (Frequency = 0); // zero frequency means no change
|
||||
void WSPR_history(Frequency dialFreq, int ndecodes);
|
||||
QString WSPR_hhmm(int n);
|
||||
void fast_config(bool b);
|
||||
void CQTxFreq();
|
||||
QString save_wave_file (QString const& name
|
||||
, short const * data
|
||||
, int seconds
|
||||
, QString const& my_callsign
|
||||
, QString const& my_grid
|
||||
, QString const& mode
|
||||
, qint32 sub_mode
|
||||
, Frequency frequency
|
||||
, QString const& his_call
|
||||
, QString const& his_grid) const;
|
||||
void read_wav_file (QString const& fname);
|
||||
void decodeDone ();
|
||||
void subProcessFailed (QProcess *, int exit_code, QProcess::ExitStatus);
|
||||
void subProcessError (QProcess *, QProcess::ProcessError);
|
||||
void statusUpdate () const;
|
||||
void update_watchdog_label ();
|
||||
void on_the_minute ();
|
||||
void add_child_to_event_filter (QObject *);
|
||||
void remove_child_from_event_filter (QObject *);
|
||||
void setup_status_bar (bool vhf);
|
||||
void tx_watchdog (bool triggered);
|
||||
int nWidgets(QString t);
|
||||
void displayWidgets(int n);
|
||||
void vhfWarning();
|
||||
QChar current_submode () const; // returns QChar {0} if sub mode is
|
||||
// not appropriate
|
||||
};
|
||||
|
||||
extern int killbyname(const char* progName);
|
||||
extern void getDev(int* numDevices,char hostAPI_DeviceName[][50],
|
||||
int minChan[], int maxChan[],
|
||||
int minSpeed[], int maxSpeed[]);
|
||||
extern int next_tx_state(int pctx);
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
@@ -0,0 +1,45 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2013 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_MAKE_DEQUE_01272013_1401)
|
||||
#define FUSION_MAKE_DEQUE_01272013_1401
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/container/deque/deque.hpp>
|
||||
|
||||
#if !defined(BOOST_FUSION_HAS_VARIADIC_DEQUE)
|
||||
# include <boost/fusion/container/generation/detail/pp_make_deque.hpp>
|
||||
#else
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// C++11 variadic interface
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include <boost/fusion/support/detail/as_fusion_element.hpp>
|
||||
|
||||
namespace boost { namespace fusion
|
||||
{
|
||||
namespace result_of
|
||||
{
|
||||
template <typename ...T>
|
||||
struct make_deque
|
||||
{
|
||||
typedef deque<typename detail::as_fusion_element<T>::type...> type;
|
||||
};
|
||||
}
|
||||
|
||||
template <typename ...T>
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline deque<typename detail::as_fusion_element<T>::type...>
|
||||
make_deque(T const&... arg)
|
||||
{
|
||||
return deque<typename detail::as_fusion_element<T>::type...>(arg...);
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
// Status=review
|
||||
[[FIG_CONFIG_STATION]]
|
||||
image::settings-general.png[align="center",alt="Settings Window"]
|
||||
|
||||
Select the *General* tab on the *Settings* window. Under _Station
|
||||
Details_ enter your callsign, grid locator (preferably the 6-character
|
||||
locator) and IARU Region number. Region 1 is Europe, Africa, the
|
||||
Middle East, and Northern Asia; Region 2 the Americas; and Region 3
|
||||
Southern Asia and the Pacific. This information will be sufficient
|
||||
for initial tests.
|
||||
|
||||
Meanings of remaining options on the *General* tab should be
|
||||
self-explanatory after you have made some QSOs using _WSJT-X_. You
|
||||
may return to set these options to your preferences later.
|
||||
|
||||
NOTE: If you are using a callsign with an add-on prefix or
|
||||
suffix, or wish to work a station using such a call, be sure to read
|
||||
the section <<COMP-CALL,Compound Callsigns>>.
|
||||
|
||||
NOTE: Enabling VHF/UHF/Microwave features necessarily disables the
|
||||
wideband multi-decode capability of JT65. In most circumstances you
|
||||
should turn this feature off when operating at HF.
|
||||
Reference in New Issue
Block a user