Initial Commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#if !defined(BOOST_PROTO_DONT_USE_PREPROCESSED_FILES)
|
||||
|
||||
#include <boost/proto/detail/preprocessed/poly_function_traits.hpp>
|
||||
|
||||
#elif !defined(BOOST_PP_IS_ITERATING)
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 2, line: 0, output: "preprocessed/poly_function_traits.hpp")
|
||||
#endif
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// poly_function_traits.hpp
|
||||
// Contains specializations of poly_function_traits and as_mono_function
|
||||
//
|
||||
// Copyright 2008 Eric Niebler. 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_PROTO_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(preserve: 1)
|
||||
#endif
|
||||
|
||||
#define BOOST_PP_ITERATION_PARAMS_1 \
|
||||
(3, (1, BOOST_PROTO_MAX_ARITY, <boost/proto/detail/poly_function_traits.hpp>))
|
||||
#include BOOST_PP_ITERATE()
|
||||
|
||||
#if defined(__WAVE__) && defined(BOOST_PROTO_CREATE_PREPROCESSED_FILES)
|
||||
#pragma wave option(output: null)
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#define N BOOST_PP_ITERATION()
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
template<typename PolyFun BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
|
||||
struct poly_function_traits<PolyFun, PolyFun(BOOST_PP_ENUM_PARAMS(N, A)), mpl::size_t<sizeof(poly_function_t)> >
|
||||
{
|
||||
typedef typename PolyFun::template impl<BOOST_PP_ENUM_PARAMS(N, const A)> function_type;
|
||||
typedef typename function_type::result_type result_type;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
template<typename PolyFun BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
|
||||
struct as_mono_function_impl<PolyFun(BOOST_PP_ENUM_PARAMS(N, A)), true>
|
||||
{
|
||||
typedef typename PolyFun::template impl<BOOST_PP_ENUM_PARAMS(N, const A)> type;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
template<typename PolyFun BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
|
||||
struct as_mono_function_impl<PolyFun(BOOST_PP_ENUM_PARAMS(N, A)), false>
|
||||
{
|
||||
typedef PolyFun type;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
template<typename PolyFun BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
|
||||
struct as_mono_function<PolyFun(BOOST_PP_ENUM_PARAMS(N, A))>
|
||||
: as_mono_function_impl<PolyFun(BOOST_PP_ENUM_PARAMS(N, A)), is_poly_function<PolyFun>::value>
|
||||
{};
|
||||
|
||||
#undef N
|
||||
|
||||
#endif // BOOST_PROTO_DONT_USE_PREPROCESSED_FILES
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,158 @@
|
||||
#ifndef FREQUENCY_LIST_HPP__
|
||||
#define FREQUENCY_LIST_HPP__
|
||||
|
||||
#include "pimpl_h.hpp"
|
||||
|
||||
#include <QList>
|
||||
#include <QSortFilterProxyModel>
|
||||
|
||||
#include "Radio.hpp"
|
||||
#include "IARURegions.hpp"
|
||||
#include "Modes.hpp"
|
||||
|
||||
class Bands;
|
||||
|
||||
//
|
||||
// Class FrequencyList
|
||||
//
|
||||
// Encapsulates a collection of frequencies with associated modes.
|
||||
// The implementation is a table containing the list of IARU region,
|
||||
// Frequency and mode tuples which are editable. A third column is
|
||||
// modeled in the model which is an immutable double representation
|
||||
// of the corresponding Frequency item scaled to mega-Hertz.
|
||||
//
|
||||
// The list is ordered. A filter on IARU region and mode is
|
||||
// available and is set by the filter(Region, Mode) method. The
|
||||
// Region value IARURegions::ALL and the Mode value Modes::ALL may be
|
||||
// optionally given which passes all rows in the filtered column.
|
||||
//
|
||||
// Responsibilities
|
||||
//
|
||||
// Stores internally a list of unique region, frequency mode tuples.
|
||||
// Provides methods to add and delete list elements. Provides range
|
||||
// iterators for a filtered view of the underlying table.
|
||||
//
|
||||
// Collaborations
|
||||
//
|
||||
// Implements the QSortFilterProxyModel interface for a list of spot
|
||||
// frequencies.
|
||||
//
|
||||
class FrequencyList final
|
||||
: public QSortFilterProxyModel
|
||||
{
|
||||
Q_OBJECT;
|
||||
|
||||
public:
|
||||
using Region = IARURegions::Region;
|
||||
using Frequency = Radio::Frequency;
|
||||
using Mode = Modes::Mode;
|
||||
|
||||
struct Item
|
||||
{
|
||||
Frequency frequency_;
|
||||
Mode mode_;
|
||||
Region region_;
|
||||
};
|
||||
using FrequencyItems = QList<Item>;
|
||||
using BandSet = QSet<QString>;
|
||||
|
||||
enum Column {region_column, mode_column, frequency_column, frequency_mhz_column, SENTINAL};
|
||||
|
||||
// an iterator that meets the requirements of the C++ for range statement
|
||||
class const_iterator
|
||||
{
|
||||
public:
|
||||
const_iterator (FrequencyList const * parent, int row)
|
||||
: parent_ {parent}
|
||||
, row_ {row}
|
||||
{
|
||||
}
|
||||
|
||||
Item const& operator * () const;
|
||||
Item const * operator -> () const;
|
||||
bool operator != (const_iterator const&) const;
|
||||
bool operator == (const_iterator const&) const;
|
||||
const_iterator& operator ++ ();
|
||||
|
||||
private:
|
||||
FrequencyList const * parent_;
|
||||
int row_;
|
||||
};
|
||||
|
||||
explicit FrequencyList (Bands const *, QObject * parent = nullptr);
|
||||
~FrequencyList ();
|
||||
|
||||
// Load and store underlying items
|
||||
FrequencyItems frequency_list (FrequencyItems);
|
||||
FrequencyItems const& frequency_list () const;
|
||||
FrequencyItems frequency_list (QModelIndexList const&) const;
|
||||
void frequency_list_merge (FrequencyItems const&);
|
||||
|
||||
// Iterators for the sorted and filtered items
|
||||
//
|
||||
// Note that these iterators are on the final sorted and filtered
|
||||
// rows, if you need to access the underlying unfiltered and
|
||||
// unsorted frequencies then use the frequency_list() member to
|
||||
// access the underlying list of rows.
|
||||
const_iterator begin () const;
|
||||
const_iterator end () const;
|
||||
|
||||
// Find a row with a given frequency
|
||||
const_iterator find (Frequency) const;
|
||||
|
||||
// Bands of the frequencies
|
||||
BandSet all_bands (Region = IARURegions::ALL, Mode = Modes::ALL) const;
|
||||
BandSet filtered_bands () const;
|
||||
|
||||
// Find the row of the nearest best working frequency given a
|
||||
// frequency. Returns -1 if no suitable working frequency is found
|
||||
// in the list.
|
||||
int best_working_frequency (Frequency) const;
|
||||
|
||||
// Find the row of the nearest best working frequency given a band
|
||||
// name. Returns -1 if no suitable working frequency is found in the
|
||||
// list.
|
||||
int best_working_frequency (QString const& band) const;
|
||||
|
||||
// Set filter
|
||||
Q_SLOT void filter (Region, Mode);
|
||||
|
||||
// Reset
|
||||
Q_SLOT void reset_to_defaults ();
|
||||
|
||||
// Model API
|
||||
QModelIndex add (Item);
|
||||
bool remove (Item);
|
||||
bool removeDisjointRows (QModelIndexList);
|
||||
|
||||
// Proxy API
|
||||
bool filterAcceptsRow (int source_row, QModelIndex const& parent) const override;
|
||||
|
||||
// Custom roles.
|
||||
static int constexpr SortRole = Qt::UserRole;
|
||||
|
||||
private:
|
||||
class impl;
|
||||
pimpl<impl> m_;
|
||||
};
|
||||
|
||||
inline
|
||||
bool operator == (FrequencyList::Item const& lhs, FrequencyList::Item const& rhs)
|
||||
{
|
||||
return
|
||||
lhs.frequency_ == rhs.frequency_
|
||||
&& lhs.region_ == rhs.region_
|
||||
&& lhs.mode_ == rhs.mode_;
|
||||
}
|
||||
|
||||
QDataStream& operator << (QDataStream&, FrequencyList::Item const&);
|
||||
QDataStream& operator >> (QDataStream&, FrequencyList::Item&);
|
||||
|
||||
#if !defined (QT_NO_DEBUG_STREAM)
|
||||
QDebug operator << (QDebug, FrequencyList::Item const&);
|
||||
#endif
|
||||
|
||||
Q_DECLARE_METATYPE (FrequencyList::Item);
|
||||
Q_DECLARE_METATYPE (FrequencyList::FrequencyItems);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,47 @@
|
||||
subroutine getfc1w(c,fs,fa,fb,fc1,xsnr)
|
||||
|
||||
include 'wsprlf_params.f90'
|
||||
complex c(0:NZ-1) !Complex waveform
|
||||
complex c2(0:NFFT1-1) !Short spectra
|
||||
real s(-NH1+1:NH1) !Coarse spectrum
|
||||
nspec=NZ/NFFT1
|
||||
df1=fs/NFFT1
|
||||
s=0.
|
||||
do k=1,nspec
|
||||
ia=(k-1)*N2
|
||||
ib=ia+N2-1
|
||||
c2(0:N2-1)=c(ia:ib)
|
||||
c2(N2:)=0.
|
||||
call four2a(c2,NFFT1,1,-1,1)
|
||||
do i=0,NFFT1-1
|
||||
j=i
|
||||
if(j.gt.NH1) j=j-NFFT1
|
||||
s(j)=s(j) + real(c2(i))**2 + aimag(c2(i))**2
|
||||
enddo
|
||||
enddo
|
||||
! call smo121(s,NFFT1)
|
||||
smax=0.
|
||||
ipk=0
|
||||
fc1=0.
|
||||
ia=nint(fa/df1)
|
||||
ib=nint(fb/df1)
|
||||
do i=ia,ib
|
||||
f=i*df1
|
||||
if(s(i).gt.smax) then
|
||||
smax=s(i)
|
||||
ipk=i
|
||||
fc1=f
|
||||
endif
|
||||
! write(51,3001) f,s(i),db(s(i))
|
||||
! 3001 format(f10.3,e12.3,f10.3)
|
||||
enddo
|
||||
|
||||
! The following is for testing SNR calibration:
|
||||
sp3n=(s(ipk-1)+s(ipk)+s(ipk+1)) !Sig + 3*noise
|
||||
base=(sum(s)-sp3n)/(NFFT1-3.0) !Noise per bin
|
||||
psig=sp3n-3*base !Sig only
|
||||
pnoise=(2500.0/df1)*base !Noise in 2500 Hz
|
||||
xsnr=db(psig/pnoise)
|
||||
|
||||
return
|
||||
end subroutine getfc1w
|
||||
@@ -0,0 +1,162 @@
|
||||
// (C) Copyright Gennadiy Rozental 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/test for the library home page.
|
||||
//
|
||||
// File : $RCSfile$
|
||||
//
|
||||
// Version : $Revision$
|
||||
//
|
||||
// Description : wraps strstream and stringstream (depends with one is present)
|
||||
// to provide the unified interface
|
||||
// ***************************************************************************
|
||||
|
||||
#ifndef BOOST_TEST_UTILS_WRAP_STRINGSTREAM_HPP
|
||||
#define BOOST_TEST_UTILS_WRAP_STRINGSTREAM_HPP
|
||||
|
||||
// Boost.Test
|
||||
#include <boost/test/detail/config.hpp>
|
||||
|
||||
// STL
|
||||
#ifdef BOOST_NO_STRINGSTREAM
|
||||
#include <strstream> // for std::ostrstream
|
||||
#else
|
||||
#include <sstream> // for std::ostringstream
|
||||
#endif // BOOST_NO_STRINGSTREAM
|
||||
|
||||
#include <boost/test/detail/suppress_warnings.hpp>
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
namespace boost {
|
||||
|
||||
// ************************************************************************** //
|
||||
// ************** basic_wrap_stringstream ************** //
|
||||
// ************************************************************************** //
|
||||
|
||||
template<typename CharT>
|
||||
class basic_wrap_stringstream {
|
||||
public:
|
||||
#if defined(BOOST_CLASSIC_IOSTREAMS)
|
||||
typedef std::ostringstream wrapped_stream;
|
||||
#elif defined(BOOST_NO_STRINGSTREAM)
|
||||
typedef std::basic_ostrstream<CharT> wrapped_stream;
|
||||
#else
|
||||
typedef std::basic_ostringstream<CharT> wrapped_stream;
|
||||
#endif // BOOST_NO_STRINGSTREAM
|
||||
// Access methods
|
||||
basic_wrap_stringstream& ref();
|
||||
wrapped_stream& stream();
|
||||
std::basic_string<CharT> const& str();
|
||||
|
||||
private:
|
||||
// Data members
|
||||
wrapped_stream m_stream;
|
||||
std::basic_string<CharT> m_str;
|
||||
};
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
template <typename CharT, typename T>
|
||||
inline basic_wrap_stringstream<CharT>&
|
||||
operator<<( basic_wrap_stringstream<CharT>& targ, T const& t )
|
||||
{
|
||||
targ.stream() << t;
|
||||
return targ;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
template <typename CharT>
|
||||
inline typename basic_wrap_stringstream<CharT>::wrapped_stream&
|
||||
basic_wrap_stringstream<CharT>::stream()
|
||||
{
|
||||
return m_stream;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
template <typename CharT>
|
||||
inline basic_wrap_stringstream<CharT>&
|
||||
basic_wrap_stringstream<CharT>::ref()
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
template <typename CharT>
|
||||
inline std::basic_string<CharT> const&
|
||||
basic_wrap_stringstream<CharT>::str()
|
||||
{
|
||||
|
||||
#ifdef BOOST_NO_STRINGSTREAM
|
||||
m_str.assign( m_stream.str(), m_stream.pcount() );
|
||||
m_stream.freeze( false );
|
||||
#else
|
||||
m_str = m_stream.str();
|
||||
#endif
|
||||
|
||||
return m_str;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
template <typename CharT>
|
||||
inline basic_wrap_stringstream<CharT>&
|
||||
operator<<( basic_wrap_stringstream<CharT>& targ, basic_wrap_stringstream<CharT>& src )
|
||||
{
|
||||
targ << src.str();
|
||||
return targ;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
#if BOOST_TEST_USE_STD_LOCALE
|
||||
|
||||
template <typename CharT>
|
||||
inline basic_wrap_stringstream<CharT>&
|
||||
operator<<( basic_wrap_stringstream<CharT>& targ, std::ios_base& (BOOST_TEST_CALL_DECL *man)(std::ios_base&) )
|
||||
{
|
||||
targ.stream() << man;
|
||||
return targ;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
template<typename CharT,typename Elem,typename Tr>
|
||||
inline basic_wrap_stringstream<CharT>&
|
||||
operator<<( basic_wrap_stringstream<CharT>& targ, std::basic_ostream<Elem,Tr>& (BOOST_TEST_CALL_DECL *man)(std::basic_ostream<Elem, Tr>&) )
|
||||
{
|
||||
targ.stream() << man;
|
||||
return targ;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
template<typename CharT,typename Elem,typename Tr>
|
||||
inline basic_wrap_stringstream<CharT>&
|
||||
operator<<( basic_wrap_stringstream<CharT>& targ, std::basic_ios<Elem, Tr>& (BOOST_TEST_CALL_DECL *man)(std::basic_ios<Elem, Tr>&) )
|
||||
{
|
||||
targ.stream() << man;
|
||||
return targ;
|
||||
}
|
||||
|
||||
//____________________________________________________________________________//
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************** //
|
||||
// ************** wrap_stringstream ************** //
|
||||
// ************************************************************************** //
|
||||
|
||||
typedef basic_wrap_stringstream<char> wrap_stringstream;
|
||||
typedef basic_wrap_stringstream<wchar_t> wrap_wstringstream;
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#include <boost/test/detail/enable_warnings.hpp>
|
||||
|
||||
#endif // BOOST_TEST_UTILS_WRAP_STRINGSTREAM_HPP
|
||||
@@ -0,0 +1,118 @@
|
||||
#-------------------------------------------------
|
||||
#
|
||||
# Project created by QtCreator 2011-07-07T08:39:24
|
||||
#
|
||||
#-------------------------------------------------
|
||||
|
||||
QT += network multimedia
|
||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
||||
CONFIG += thread
|
||||
#CONFIG += console
|
||||
|
||||
TARGET = wsjtx
|
||||
VERSION = "Not for Release"
|
||||
TEMPLATE = app
|
||||
DEFINES = QT5
|
||||
QMAKE_CXXFLAGS += -std=c++11
|
||||
DEFINES += PROJECT_MANUAL="'\"http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/wsjtx-main.html\"'"
|
||||
|
||||
isEmpty (DESTDIR) {
|
||||
DESTDIR = ../wsjtx_exp_install
|
||||
}
|
||||
|
||||
isEmpty (HAMLIB_DIR) {
|
||||
HAMLIB_DIR = ../../hamlib3/mingw32
|
||||
}
|
||||
|
||||
isEmpty (FFTW3_DIR) {
|
||||
FFTW3_DIR = .
|
||||
}
|
||||
|
||||
F90 = gfortran
|
||||
gfortran.output = ${QMAKE_FILE_BASE}.o
|
||||
gfortran.commands = $$F90 -c -O2 -o ${QMAKE_FILE_OUT} ${QMAKE_FILE_NAME}
|
||||
gfortran.input = F90_SOURCES
|
||||
QMAKE_EXTRA_COMPILERS += gfortran
|
||||
|
||||
win32 {
|
||||
DEFINES += WIN32
|
||||
QT += axcontainer
|
||||
TYPELIBS = $$system(dumpcpp -getfile {4FE359C5-A58F-459D-BE95-CA559FB4F270})
|
||||
}
|
||||
|
||||
unix {
|
||||
DEFINES += UNIX
|
||||
}
|
||||
|
||||
#
|
||||
# Order matters here as the link is in this order so referrers need to be after referred
|
||||
#
|
||||
SOURCES += \
|
||||
logbook/adif.cpp \
|
||||
logbook/countrydat.cpp \
|
||||
logbook/countriesworked.cpp \
|
||||
logbook/logbook.cpp \
|
||||
astro.cpp Radio.cpp NetworkServerLookup.cpp revision_utils.cpp \
|
||||
Transceiver.cpp TransceiverBase.cpp TransceiverFactory.cpp \
|
||||
PollingTransceiver.cpp EmulateSplitTransceiver.cpp LettersSpinBox.cpp \
|
||||
HRDTransceiver.cpp DXLabSuiteCommanderTransceiver.cpp \
|
||||
HamlibTransceiver.cpp FrequencyLineEdit.cpp Bands.cpp \
|
||||
FrequencyList.cpp StationList.cpp ForeignKeyDelegate.cpp \
|
||||
FrequencyItemDelegate.cpp LiveFrequencyValidator.cpp \
|
||||
Configuration.cpp psk_reporter.cpp AudioDevice.cpp \
|
||||
Modulator.cpp Detector.cpp logqso.cpp displaytext.cpp \
|
||||
getfile.cpp soundout.cpp soundin.cpp meterwidget.cpp signalmeter.cpp \
|
||||
WFPalette.cpp plotter.cpp widegraph.cpp about.cpp WsprTxScheduler.cpp mainwindow.cpp \
|
||||
main.cpp decodedtext.cpp wsprnet.cpp messageaveraging.cpp \
|
||||
echoplot.cpp echograph.cpp fastgraph.cpp fastplot.cpp Modes.cpp \
|
||||
WSPRBandHopping.cpp MessageAggregator.cpp SampleDownloader.cpp qt_helpers.cpp\
|
||||
MultiSettings.cpp PhaseEqualizationDialog.cpp IARURegions.cpp MessageBox.cpp
|
||||
|
||||
HEADERS += qt_helpers.hpp \
|
||||
pimpl_h.hpp pimpl_impl.hpp \
|
||||
Radio.hpp NetworkServerLookup.hpp revision_utils.hpp \
|
||||
mainwindow.h plotter.h soundin.h soundout.h astro.h \
|
||||
about.h WFPalette.hpp widegraph.h getfile.h decodedtext.h \
|
||||
commons.h sleep.h displaytext.h logqso.h LettersSpinBox.hpp \
|
||||
Bands.hpp FrequencyList.hpp StationList.hpp ForeignKeyDelegate.hpp FrequencyItemDelegate.hpp LiveFrequencyValidator.hpp \
|
||||
FrequencyLineEdit.hpp AudioDevice.hpp Detector.hpp Modulator.hpp psk_reporter.h \
|
||||
Transceiver.hpp TransceiverBase.hpp TransceiverFactory.hpp PollingTransceiver.hpp \
|
||||
EmulateSplitTransceiver.hpp DXLabSuiteCommanderTransceiver.hpp HamlibTransceiver.hpp \
|
||||
Configuration.hpp wsprnet.h signalmeter.h meterwidget.h \
|
||||
logbook/logbook.h logbook/countrydat.h logbook/countriesworked.h logbook/adif.h \
|
||||
messageaveraging.h echoplot.h echograph.h fastgraph.h fastplot.h Modes.hpp WSPRBandHopping.hpp \
|
||||
WsprTxScheduler.h SampleDownloader.hpp MultiSettings.hpp PhaseEqualizationDialog.hpp \
|
||||
IARURegions.hpp MessageBox.hpp
|
||||
|
||||
INCLUDEPATH += qmake_only
|
||||
|
||||
win32 {
|
||||
SOURCES += killbyname.cpp OmniRigTransceiver.cpp
|
||||
HEADERS += OmniRigTransceiver.hpp
|
||||
}
|
||||
|
||||
FORMS += mainwindow.ui about.ui Configuration.ui widegraph.ui astro.ui \
|
||||
logqso.ui wf_palette_design_dialog.ui messageaveraging.ui echograph.ui \
|
||||
fastgraph.ui
|
||||
|
||||
RC_FILE = wsjtx.rc
|
||||
RESOURCES = wsjtx.qrc
|
||||
|
||||
unix {
|
||||
LIBS += -L lib -ljt9
|
||||
LIBS += -lhamlib
|
||||
LIBS += -lfftw3f $$system($$F90 -print-file-name=libgfortran.so)
|
||||
}
|
||||
|
||||
win32 {
|
||||
INCLUDEPATH += $${HAMLIB_DIR}/include
|
||||
INCLUDEPATH += C:\JTSDK\wsjtx_exp\build\Release
|
||||
INCLUDEPATH += C:\JTSDK\hamlib3\include
|
||||
INCLUDEPATH += C:\JTSDK\qt5\5.2.1\mingw48_32\include\QtSerialPort
|
||||
|
||||
LIBS += -L$${HAMLIB_DIR}/lib -lhamlib
|
||||
LIBS += -L./lib -lastro -ljt9
|
||||
LIBS += -L$${FFTW3_DIR} -lfftw3f-3
|
||||
LIBS += -lws2_32
|
||||
LIBS += $$system($$F90 -print-file-name=libgfortran.a)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
module jt65_mod
|
||||
|
||||
integer param(0:9)
|
||||
integer mrs(63)
|
||||
integer mrs2(63)
|
||||
integer mdat(126),mref(126,2),mdat2(126),mref2(126,2) !From prcom
|
||||
|
||||
real s1(-255:256,126)
|
||||
real s3a(64,63)
|
||||
real pr(126)
|
||||
real width
|
||||
|
||||
end module jt65_mod
|
||||
@@ -0,0 +1,129 @@
|
||||
// Copyright (C) 2005-2006 Douglas Gregor <doug.gregor -at- gmail.com>
|
||||
// Copyright (C) 2004 The Trustees of Indiana University
|
||||
|
||||
// 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)
|
||||
|
||||
// Authors: Douglas Gregor
|
||||
// Andrew Lumsdaine
|
||||
|
||||
// Message Passing Interface 1.1 -- Section 4.9.1. Reduce
|
||||
#ifndef BOOST_MPI_ALL_REDUCE_HPP
|
||||
#define BOOST_MPI_ALL_REDUCE_HPP
|
||||
|
||||
#include <vector>
|
||||
|
||||
#include <boost/mpi/inplace.hpp>
|
||||
|
||||
// All-reduce falls back to reduce() + broadcast() in some cases.
|
||||
#include <boost/mpi/collectives/broadcast.hpp>
|
||||
#include <boost/mpi/collectives/reduce.hpp>
|
||||
|
||||
namespace boost { namespace mpi {
|
||||
namespace detail {
|
||||
/**********************************************************************
|
||||
* Simple reduction with MPI_Allreduce *
|
||||
**********************************************************************/
|
||||
// We are reducing for a type that has an associated MPI
|
||||
// datatype and operation, so we'll use MPI_Allreduce directly.
|
||||
template<typename T, typename Op>
|
||||
void
|
||||
all_reduce_impl(const communicator& comm, const T* in_values, int n,
|
||||
T* out_values, Op /*op*/, mpl::true_ /*is_mpi_op*/,
|
||||
mpl::true_ /*is_mpi_datatype*/)
|
||||
{
|
||||
BOOST_MPI_CHECK_RESULT(MPI_Allreduce,
|
||||
(const_cast<T*>(in_values), out_values, n,
|
||||
boost::mpi::get_mpi_datatype<T>(*in_values),
|
||||
(is_mpi_op<Op, T>::op()), comm));
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* User-defined reduction with MPI_Allreduce *
|
||||
**********************************************************************/
|
||||
// We are reducing at the root for a type that has an associated MPI
|
||||
// datatype but with a custom operation. We'll use MPI_Reduce
|
||||
// directly, but we'll need to create an MPI_Op manually.
|
||||
template<typename T, typename Op>
|
||||
void
|
||||
all_reduce_impl(const communicator& comm, const T* in_values, int n,
|
||||
T* out_values, Op op, mpl::false_ /*is_mpi_op*/,
|
||||
mpl::true_ /*is_mpi_datatype*/)
|
||||
{
|
||||
user_op<Op, T> mpi_op(op);
|
||||
BOOST_MPI_CHECK_RESULT(MPI_Allreduce,
|
||||
(const_cast<T*>(in_values), out_values, n,
|
||||
boost::mpi::get_mpi_datatype<T>(*in_values),
|
||||
mpi_op.get_mpi_op(), comm));
|
||||
}
|
||||
|
||||
/**********************************************************************
|
||||
* User-defined, tree-based reduction for non-MPI data types *
|
||||
**********************************************************************/
|
||||
// We are reducing at the root for a type that has no associated MPI
|
||||
// datatype and operation, so we'll use a simple tree-based
|
||||
// algorithm.
|
||||
template<typename T, typename Op>
|
||||
void
|
||||
all_reduce_impl(const communicator& comm, const T* in_values, int n,
|
||||
T* out_values, Op op, mpl::false_ /*is_mpi_op*/,
|
||||
mpl::false_ /*is_mpi_datatype*/)
|
||||
{
|
||||
if (in_values == MPI_IN_PLACE) {
|
||||
// if in_values matches the in place tag, then the output
|
||||
// buffer actually contains the input data.
|
||||
// But we can just go back to the out of place
|
||||
// implementation in this case.
|
||||
// it's not clear how/if we can avoid the copy.
|
||||
std::vector<T> tmp_in( out_values, out_values + n);
|
||||
reduce(comm, &(tmp_in[0]), n, out_values, op, 0);
|
||||
} else {
|
||||
reduce(comm, in_values, n, out_values, op, 0);
|
||||
}
|
||||
broadcast(comm, out_values, n, 0);
|
||||
}
|
||||
} // end namespace detail
|
||||
|
||||
template<typename T, typename Op>
|
||||
inline void
|
||||
all_reduce(const communicator& comm, const T* in_values, int n, T* out_values,
|
||||
Op op)
|
||||
{
|
||||
detail::all_reduce_impl(comm, in_values, n, out_values, op,
|
||||
is_mpi_op<Op, T>(), is_mpi_datatype<T>());
|
||||
}
|
||||
|
||||
template<typename T, typename Op>
|
||||
inline void
|
||||
all_reduce(const communicator& comm, inplace_t<T*> inout_values, int n, Op op)
|
||||
{
|
||||
all_reduce(comm, static_cast<const T*>(MPI_IN_PLACE), n, inout_values.buffer, op);
|
||||
}
|
||||
|
||||
template<typename T, typename Op>
|
||||
inline void
|
||||
all_reduce(const communicator& comm, inplace_t<T> inout_values, Op op)
|
||||
{
|
||||
all_reduce(comm, static_cast<const T*>(MPI_IN_PLACE), 1, &(inout_values.buffer), op);
|
||||
}
|
||||
|
||||
template<typename T, typename Op>
|
||||
inline void
|
||||
all_reduce(const communicator& comm, const T& in_value, T& out_value, Op op)
|
||||
{
|
||||
detail::all_reduce_impl(comm, &in_value, 1, &out_value, op,
|
||||
is_mpi_op<Op, T>(), is_mpi_datatype<T>());
|
||||
}
|
||||
|
||||
template<typename T, typename Op>
|
||||
T all_reduce(const communicator& comm, const T& in_value, Op op)
|
||||
{
|
||||
T result;
|
||||
::boost::mpi::all_reduce(comm, in_value, result, op);
|
||||
return result;
|
||||
}
|
||||
|
||||
} } // end namespace boost::mpi
|
||||
|
||||
#endif // BOOST_MPI_ALL_REDUCE_HPP
|
||||
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 49 KiB |
@@ -0,0 +1,35 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2011 Joel de Guzman
|
||||
Copyright (c) 2006 Dan Marsden
|
||||
|
||||
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_JOIN_200601222109)
|
||||
#define FUSION_JOIN_200601222109
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/fusion/view/joint_view.hpp>
|
||||
|
||||
namespace boost { namespace fusion {
|
||||
|
||||
namespace result_of
|
||||
{
|
||||
template<typename LhSequence, typename RhSequence>
|
||||
struct join
|
||||
{
|
||||
typedef joint_view<LhSequence, RhSequence> type;
|
||||
};
|
||||
}
|
||||
|
||||
template<typename LhSequence, typename RhSequence>
|
||||
BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED
|
||||
inline typename result_of::join<LhSequence const, RhSequence const>::type
|
||||
join(LhSequence const& lhs, RhSequence const& rhs)
|
||||
{
|
||||
return typename result_of::join<LhSequence const, RhSequence const>::type(
|
||||
lhs, rhs);
|
||||
}
|
||||
}}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,26 @@
|
||||
|
||||
// (C) Copyright John Maddock 2005.
|
||||
// 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/libs/type_traits for most recent version including documentation.
|
||||
|
||||
|
||||
#ifndef BOOST_TT_HAS_VIRTUAL_DESTRUCTOR_HPP_INCLUDED
|
||||
#define BOOST_TT_HAS_VIRTUAL_DESTRUCTOR_HPP_INCLUDED
|
||||
|
||||
#include <boost/type_traits/intrinsics.hpp>
|
||||
#include <boost/type_traits/integral_constant.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
#ifdef BOOST_HAS_VIRTUAL_DESTRUCTOR
|
||||
template <class T> struct has_virtual_destructor : public integral_constant<bool, BOOST_HAS_VIRTUAL_DESTRUCTOR(T)>{};
|
||||
#else
|
||||
template <class T> struct has_virtual_destructor : public integral_constant<bool, false>{};
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
|
||||
@@ -0,0 +1,48 @@
|
||||
// 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_SI_SECOND_BASE_UNIT_HPP
|
||||
#define BOOST_UNITS_SI_SECOND_BASE_UNIT_HPP
|
||||
|
||||
#include <string>
|
||||
|
||||
#include <boost/units/config.hpp>
|
||||
#include <boost/units/base_unit.hpp>
|
||||
#include <boost/units/physical_dimensions/time.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
namespace units {
|
||||
|
||||
namespace si {
|
||||
|
||||
struct second_base_unit : public base_unit<second_base_unit, time_dimension, -7>
|
||||
{
|
||||
static std::string name() { return("second"); }
|
||||
static std::string symbol() { return("s"); }
|
||||
};
|
||||
|
||||
} // namespace si
|
||||
|
||||
} // namespace units
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#if BOOST_UNITS_HAS_BOOST_TYPEOF
|
||||
|
||||
#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
|
||||
|
||||
BOOST_TYPEOF_REGISTER_TYPE(boost::units::si::second_base_unit)
|
||||
|
||||
#endif
|
||||
|
||||
//#include <boost/units/base_units/detail/conversions.hpp>
|
||||
|
||||
#endif // BOOST_UNITS_SI_SECOND_BASE_UNIT_HPP
|
||||
@@ -0,0 +1,33 @@
|
||||
/*=============================================================================
|
||||
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_BACK_10022005_1620)
|
||||
#define FUSION_BACK_10022005_1620
|
||||
|
||||
#include <boost/fusion/support/config.hpp>
|
||||
#include <boost/mpl/back.hpp>
|
||||
#include <boost/fusion/sequence/intrinsic/end.hpp>
|
||||
#include <boost/fusion/iterator/prior.hpp>
|
||||
#include <boost/fusion/iterator/value_of.hpp>
|
||||
|
||||
namespace boost { namespace mpl
|
||||
{
|
||||
template <typename Tag>
|
||||
struct back_impl;
|
||||
|
||||
template <>
|
||||
struct back_impl<fusion::fusion_sequence_tag>
|
||||
{
|
||||
template <typename Sequence>
|
||||
struct apply :
|
||||
fusion::result_of::value_of<
|
||||
typename fusion::result_of::prior<
|
||||
typename fusion::result_of::end<Sequence>::type
|
||||
>::type> {};
|
||||
};
|
||||
}}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,32 @@
|
||||
// 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) 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_ILLUMINANCE_DERIVED_DIMENSION_HPP
|
||||
#define BOOST_UNITS_ILLUMINANCE_DERIVED_DIMENSION_HPP
|
||||
|
||||
#include <boost/units/derived_dimension.hpp>
|
||||
#include <boost/units/physical_dimensions/length.hpp>
|
||||
#include <boost/units/physical_dimensions/luminous_intensity.hpp>
|
||||
#include <boost/units/physical_dimensions/solid_angle.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
namespace units {
|
||||
|
||||
/// derived dimension for illuminance : L^-2 I QS
|
||||
typedef derived_dimension<length_base_dimension,-2,
|
||||
luminous_intensity_base_dimension,1,
|
||||
solid_angle_base_dimension,1>::type illuminance_dimension;
|
||||
|
||||
} // namespace units
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_UNITS_ILLUMINANCE_DERIVED_DIMENSION_HPP
|
||||
@@ -0,0 +1,246 @@
|
||||
/*=============================================================================
|
||||
Copyright (c) 2001-2003 Joel de Guzman
|
||||
Copyright (c) 2001-2003 Daniel Nuffer
|
||||
http://spirit.sourceforge.net/
|
||||
|
||||
Use, modification and distribution is subject to the Boost Software
|
||||
License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
http://www.boost.org/LICENSE_1_0.txt)
|
||||
=============================================================================*/
|
||||
#ifndef BOOST_SPIRIT_BASIC_CHSET_IPP
|
||||
#define BOOST_SPIRIT_BASIC_CHSET_IPP
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
#include <bitset>
|
||||
#include <boost/spirit/home/classic/utility/impl/chset/basic_chset.hpp>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
namespace boost { namespace spirit {
|
||||
|
||||
BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// basic_chset: character set implementation
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset<CharT>::basic_chset() {}
|
||||
|
||||
//////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset<CharT>::basic_chset(basic_chset const& arg_)
|
||||
: rr(arg_.rr) {}
|
||||
|
||||
//////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline bool
|
||||
basic_chset<CharT>::test(CharT v) const
|
||||
{ return rr.test(v); }
|
||||
|
||||
//////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset<CharT>::set(CharT from, CharT to)
|
||||
{ rr.set(utility::impl::range<CharT>(from, to)); }
|
||||
|
||||
//////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset<CharT>::set(CharT c)
|
||||
{ rr.set(utility::impl::range<CharT>(c, c)); }
|
||||
|
||||
//////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset<CharT>::clear(CharT from, CharT to)
|
||||
{ rr.clear(utility::impl::range<CharT>(from, to)); }
|
||||
|
||||
//////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset<CharT>::clear()
|
||||
{ rr.clear(); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset<CharT>::inverse()
|
||||
{
|
||||
basic_chset inv;
|
||||
inv.set(
|
||||
(std::numeric_limits<CharT>::min)(),
|
||||
(std::numeric_limits<CharT>::max)()
|
||||
);
|
||||
inv -= *this;
|
||||
swap(inv);
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset<CharT>::swap(basic_chset& x)
|
||||
{ rr.swap(x.rr); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset<CharT>&
|
||||
basic_chset<CharT>::operator|=(basic_chset<CharT> const& x)
|
||||
{
|
||||
typedef typename utility::impl::range_run<CharT>::const_iterator const_iterator;
|
||||
for (const_iterator iter = x.rr.begin(); iter != x.rr.end(); ++iter)
|
||||
rr.set(*iter);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset<CharT>&
|
||||
basic_chset<CharT>::operator&=(basic_chset<CharT> const& x)
|
||||
{
|
||||
basic_chset inv;
|
||||
inv.set(
|
||||
(std::numeric_limits<CharT>::min)(),
|
||||
(std::numeric_limits<CharT>::max)()
|
||||
);
|
||||
inv -= x;
|
||||
*this -= inv;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset<CharT>&
|
||||
basic_chset<CharT>::operator-=(basic_chset<CharT> const& x)
|
||||
{
|
||||
typedef typename utility::impl::range_run<CharT>::const_iterator const_iterator;
|
||||
for (const_iterator iter = x.rr.begin(); iter != x.rr.end(); ++iter)
|
||||
rr.clear(*iter);
|
||||
return *this;
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset<CharT>&
|
||||
basic_chset<CharT>::operator^=(basic_chset<CharT> const& x)
|
||||
{
|
||||
basic_chset bma = x;
|
||||
bma -= *this;
|
||||
*this -= x;
|
||||
*this |= bma;
|
||||
return *this;
|
||||
}
|
||||
|
||||
#if (CHAR_BIT == 8)
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// basic_chset: specializations for 8 bit chars using std::bitset
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset_8bit<CharT>::basic_chset_8bit() {}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset_8bit<CharT>::basic_chset_8bit(basic_chset_8bit const& arg_)
|
||||
: bset(arg_.bset) {}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline bool
|
||||
basic_chset_8bit<CharT>::test(CharT v) const
|
||||
{ return bset.test((unsigned char)v); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset_8bit<CharT>::set(CharT from, CharT to)
|
||||
{
|
||||
for (int i = from; i <= to; ++i)
|
||||
bset.set((unsigned char)i);
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset_8bit<CharT>::set(CharT c)
|
||||
{ bset.set((unsigned char)c); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset_8bit<CharT>::clear(CharT from, CharT to)
|
||||
{
|
||||
for (int i = from; i <= to; ++i)
|
||||
bset.reset((unsigned char)i);
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset_8bit<CharT>::clear(CharT c)
|
||||
{ bset.reset((unsigned char)c); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset_8bit<CharT>::clear()
|
||||
{ bset.reset(); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset_8bit<CharT>::inverse()
|
||||
{ bset.flip(); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline void
|
||||
basic_chset_8bit<CharT>::swap(basic_chset_8bit& x)
|
||||
{ std::swap(bset, x.bset); }
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset_8bit<CharT>&
|
||||
basic_chset_8bit<CharT>::operator|=(basic_chset_8bit const& x)
|
||||
{
|
||||
bset |= x.bset;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset_8bit<CharT>&
|
||||
basic_chset_8bit<CharT>::operator&=(basic_chset_8bit const& x)
|
||||
{
|
||||
bset &= x.bset;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset_8bit<CharT>&
|
||||
basic_chset_8bit<CharT>::operator-=(basic_chset_8bit const& x)
|
||||
{
|
||||
bset &= ~x.bset;
|
||||
return *this;
|
||||
}
|
||||
|
||||
/////////////////////////////////
|
||||
template <typename CharT>
|
||||
inline basic_chset_8bit<CharT>&
|
||||
basic_chset_8bit<CharT>::operator^=(basic_chset_8bit const& x)
|
||||
{
|
||||
bset ^= x.bset;
|
||||
return *this;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
BOOST_SPIRIT_CLASSIC_NAMESPACE_END
|
||||
|
||||
}} // namespace boost::spirit
|
||||
|
||||
#endif
|
||||
|
||||
@@ -0,0 +1,113 @@
|
||||
// (C) Copyright Christopher Jefferson 2011.
|
||||
// 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.
|
||||
|
||||
// config for libc++
|
||||
// Might need more in here later.
|
||||
|
||||
#if !defined(_LIBCPP_VERSION)
|
||||
# include <ciso646>
|
||||
# if !defined(_LIBCPP_VERSION)
|
||||
# error "This is not libc++!"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
|
||||
|
||||
#define BOOST_HAS_THREADS
|
||||
|
||||
#ifdef _LIBCPP_HAS_NO_VARIADICS
|
||||
# define BOOST_NO_CXX11_HDR_TUPLE
|
||||
#endif
|
||||
|
||||
// BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
|
||||
// allocator model. The C++11 allocator model requires a conforming
|
||||
// std::allocator_traits which is only possible with C++11 template
|
||||
// aliases since members rebind_alloc and rebind_traits require it.
|
||||
#if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
|
||||
# define BOOST_NO_CXX11_ALLOCATOR
|
||||
#endif
|
||||
|
||||
#if __cplusplus < 201103
|
||||
//
|
||||
// These two appear to be somewhat useable in C++03 mode, there may be others...
|
||||
//
|
||||
//# define BOOST_NO_CXX11_HDR_ARRAY
|
||||
//# define BOOST_NO_CXX11_HDR_FORWARD_LIST
|
||||
|
||||
# define BOOST_NO_CXX11_HDR_CODECVT
|
||||
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
|
||||
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
|
||||
# define BOOST_NO_CXX11_HDR_MUTEX
|
||||
# define BOOST_NO_CXX11_HDR_RANDOM
|
||||
# define BOOST_NO_CXX11_HDR_RATIO
|
||||
# define BOOST_NO_CXX11_HDR_REGEX
|
||||
# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
|
||||
# define BOOST_NO_CXX11_HDR_THREAD
|
||||
# define BOOST_NO_CXX11_HDR_TUPLE
|
||||
# define BOOST_NO_CXX11_HDR_TYPEINDEX
|
||||
# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
|
||||
# define BOOST_NO_CXX11_HDR_UNORDERED_SET
|
||||
# define BOOST_NO_CXX11_NUMERIC_LIMITS
|
||||
# define BOOST_NO_CXX11_ALLOCATOR
|
||||
# define BOOST_NO_CXX11_SMART_PTR
|
||||
# define BOOST_NO_CXX11_HDR_FUNCTIONAL
|
||||
# define BOOST_NO_CXX11_STD_ALIGN
|
||||
# define BOOST_NO_CXX11_ADDRESSOF
|
||||
# define BOOST_NO_CXX11_HDR_ATOMIC
|
||||
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
|
||||
# define BOOST_NO_CXX11_HDR_CHRONO
|
||||
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
||||
# define BOOST_NO_CXX11_HDR_FUTURE
|
||||
#elif _LIBCPP_VERSION < 3700
|
||||
//
|
||||
// These appear to be unusable/incomplete so far:
|
||||
//
|
||||
# define BOOST_NO_CXX11_HDR_ATOMIC
|
||||
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
|
||||
# define BOOST_NO_CXX11_HDR_CHRONO
|
||||
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
||||
# define BOOST_NO_CXX11_HDR_FUTURE
|
||||
#endif
|
||||
|
||||
|
||||
#if _LIBCPP_VERSION < 3700
|
||||
// libc++ uses a non-standard messages_base
|
||||
#define BOOST_NO_STD_MESSAGES
|
||||
#endif
|
||||
|
||||
// C++14 features
|
||||
#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX14_STD_EXCHANGE
|
||||
#endif
|
||||
|
||||
// C++17 features
|
||||
#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
#endif
|
||||
#if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX17_STD_APPLY
|
||||
#endif
|
||||
|
||||
#if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
|
||||
// This is a bit of a sledgehammer, because really it's just libc++abi that has no
|
||||
// support for thread_local, leading to linker errors such as
|
||||
// "undefined reference to `__cxa_thread_atexit'". It is fixed in the
|
||||
// most recent releases of libc++abi though...
|
||||
# define BOOST_NO_CXX11_THREAD_LOCAL
|
||||
#endif
|
||||
|
||||
#if defined(__has_include)
|
||||
#if !__has_include(<shared_mutex>)
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#elif __cplusplus <= 201103
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
#elif __cplusplus < 201402
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
// --- end ---
|
||||
@@ -0,0 +1,53 @@
|
||||
// Copyright Neil Groves 2009. 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_ALGORITHM_REPLACE_HPP_INCLUDED
|
||||
#define BOOST_RANGE_ALGORITHM_REPLACE_HPP_INCLUDED
|
||||
|
||||
#include <boost/concept_check.hpp>
|
||||
#include <boost/range/begin.hpp>
|
||||
#include <boost/range/end.hpp>
|
||||
#include <boost/range/concepts.hpp>
|
||||
#include <algorithm>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace range
|
||||
{
|
||||
|
||||
/// \brief template function replace
|
||||
///
|
||||
/// range-based version of the replace std algorithm
|
||||
///
|
||||
/// \pre ForwardRange is a model of the ForwardRangeConcept
|
||||
template< class ForwardRange, class Value >
|
||||
inline ForwardRange&
|
||||
replace(ForwardRange& rng, const Value& what,
|
||||
const Value& with_what)
|
||||
{
|
||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<ForwardRange> ));
|
||||
std::replace(boost::begin(rng), boost::end(rng), what, with_what);
|
||||
return rng;
|
||||
}
|
||||
|
||||
/// \overload
|
||||
template< class ForwardRange, class Value >
|
||||
inline const ForwardRange&
|
||||
replace(const ForwardRange& rng, const Value& what,
|
||||
const Value& with_what)
|
||||
{
|
||||
BOOST_RANGE_CONCEPT_ASSERT(( ForwardRangeConcept<const ForwardRange> ));
|
||||
std::replace(boost::begin(rng), boost::end(rng), what, with_what);
|
||||
return rng;
|
||||
}
|
||||
|
||||
} // namespace range
|
||||
using range::replace;
|
||||
} // namespace boost;
|
||||
|
||||
#endif // include guard
|
||||
@@ -0,0 +1,161 @@
|
||||
// Copyright (C) 2005, 2006 Douglas Gregor.
|
||||
|
||||
// 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)
|
||||
|
||||
// Message Passing Interface 1.1 -- Section 4.6. Scatter
|
||||
#ifndef BOOST_MPI_SCATTER_HPP
|
||||
#define BOOST_MPI_SCATTER_HPP
|
||||
|
||||
#include <boost/mpi/exception.hpp>
|
||||
#include <boost/mpi/datatype.hpp>
|
||||
#include <vector>
|
||||
#include <boost/mpi/packed_oarchive.hpp>
|
||||
#include <boost/mpi/packed_iarchive.hpp>
|
||||
#include <boost/mpi/detail/point_to_point.hpp>
|
||||
#include <boost/mpi/communicator.hpp>
|
||||
#include <boost/mpi/environment.hpp>
|
||||
#include <boost/assert.hpp>
|
||||
|
||||
namespace boost { namespace mpi {
|
||||
|
||||
namespace detail {
|
||||
// We're scattering from the root for a type that has an associated MPI
|
||||
// datatype, so we'll use MPI_Scatter to do all of the work.
|
||||
template<typename T>
|
||||
void
|
||||
scatter_impl(const communicator& comm, const T* in_values, T* out_values,
|
||||
int n, int root, mpl::true_)
|
||||
{
|
||||
MPI_Datatype type = get_mpi_datatype<T>(*in_values);
|
||||
BOOST_MPI_CHECK_RESULT(MPI_Scatter,
|
||||
(const_cast<T*>(in_values), n, type,
|
||||
out_values, n, type, root, comm));
|
||||
}
|
||||
|
||||
// We're scattering from a non-root for a type that has an associated MPI
|
||||
// datatype, so we'll use MPI_Scatter to do all of the work.
|
||||
template<typename T>
|
||||
void
|
||||
scatter_impl(const communicator& comm, T* out_values, int n, int root,
|
||||
mpl::true_)
|
||||
{
|
||||
MPI_Datatype type = get_mpi_datatype<T>(*out_values);
|
||||
BOOST_MPI_CHECK_RESULT(MPI_Scatter,
|
||||
(0, n, type,
|
||||
out_values, n, type,
|
||||
root, comm));
|
||||
}
|
||||
|
||||
// We're scattering from the root for a type that does not have an
|
||||
// associated MPI datatype, so we'll need to serialize
|
||||
// it. Unfortunately, this means that we cannot use MPI_Scatter, so
|
||||
// we'll just have the root send individual messages to the other
|
||||
// processes.
|
||||
template<typename T>
|
||||
void
|
||||
scatter_impl(const communicator& comm, const T* in_values, T* out_values,
|
||||
int n, int root, mpl::false_)
|
||||
{
|
||||
int tag = environment::collectives_tag();
|
||||
int size = comm.size();
|
||||
|
||||
for (int dest = 0; dest < size; ++dest) {
|
||||
if (dest == root) {
|
||||
// Our own values will never be transmitted: just copy them.
|
||||
std::copy(in_values + dest * n, in_values + (dest + 1) * n, out_values);
|
||||
} else {
|
||||
// Send archive
|
||||
packed_oarchive oa(comm);
|
||||
for (int i = 0; i < n; ++i)
|
||||
oa << in_values[dest * n + i];
|
||||
detail::packed_archive_send(comm, dest, tag, oa);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We're scattering to a non-root for a type that does not have an
|
||||
// associated MPI datatype, so we'll need to de-serialize
|
||||
// it. Unfortunately, this means that we cannot use MPI_Scatter, so
|
||||
// we'll just have all of the non-root nodes send individual
|
||||
// messages to the root.
|
||||
template<typename T>
|
||||
void
|
||||
scatter_impl(const communicator& comm, T* out_values, int n, int root,
|
||||
mpl::false_)
|
||||
{
|
||||
int tag = environment::collectives_tag();
|
||||
|
||||
packed_iarchive ia(comm);
|
||||
MPI_Status status;
|
||||
detail::packed_archive_recv(comm, root, tag, ia, status);
|
||||
for (int i = 0; i < n; ++i)
|
||||
ia >> out_values[i];
|
||||
}
|
||||
} // end namespace detail
|
||||
|
||||
template<typename T>
|
||||
void
|
||||
scatter(const communicator& comm, const T* in_values, T& out_value, int root)
|
||||
{
|
||||
if (comm.rank() == root)
|
||||
detail::scatter_impl(comm, in_values, &out_value, 1, root,
|
||||
is_mpi_datatype<T>());
|
||||
else
|
||||
detail::scatter_impl(comm, &out_value, 1, root, is_mpi_datatype<T>());
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void
|
||||
scatter(const communicator& comm, const std::vector<T>& in_values, T& out_value,
|
||||
int root)
|
||||
{
|
||||
if (comm.rank() == root)
|
||||
::boost::mpi::scatter<T>(comm, &in_values[0], out_value, root);
|
||||
else
|
||||
::boost::mpi::scatter<T>(comm, static_cast<const T*>(0), out_value,
|
||||
root);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void scatter(const communicator& comm, T& out_value, int root)
|
||||
{
|
||||
BOOST_ASSERT(comm.rank() != root);
|
||||
detail::scatter_impl(comm, &out_value, 1, root, is_mpi_datatype<T>());
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void
|
||||
scatter(const communicator& comm, const T* in_values, T* out_values, int n,
|
||||
int root)
|
||||
{
|
||||
if (comm.rank() == root)
|
||||
detail::scatter_impl(comm, in_values, out_values, n, root,
|
||||
is_mpi_datatype<T>());
|
||||
else
|
||||
detail::scatter_impl(comm, out_values, n, root, is_mpi_datatype<T>());
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void
|
||||
scatter(const communicator& comm, const std::vector<T>& in_values,
|
||||
T* out_values, int n, int root)
|
||||
{
|
||||
if (comm.rank() == root)
|
||||
::boost::mpi::scatter(comm, &in_values[0], out_values, n, root);
|
||||
else
|
||||
::boost::mpi::scatter(comm, static_cast<const T*>(0), out_values,
|
||||
n, root);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void scatter(const communicator& comm, T* out_values, int n, int root)
|
||||
{
|
||||
BOOST_ASSERT(comm.rank() != root);
|
||||
detail::scatter_impl(comm, out_values, n, root, is_mpi_datatype<T>());
|
||||
}
|
||||
|
||||
} } // end namespace boost::mpi
|
||||
|
||||
#endif // BOOST_MPI_SCATTER_HPP
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1,73 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 1998-2002
|
||||
* John Maddock
|
||||
*
|
||||
* 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)
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* LOCATION: see http://www.boost.org for most recent version.
|
||||
* FILE regex_fwd.cpp
|
||||
* VERSION see <boost/version.hpp>
|
||||
* DESCRIPTION: Forward declares boost::basic_regex<> and
|
||||
* associated typedefs.
|
||||
*/
|
||||
|
||||
#ifndef BOOST_REGEX_FWD_HPP_INCLUDED
|
||||
#define BOOST_REGEX_FWD_HPP_INCLUDED
|
||||
|
||||
#ifndef BOOST_REGEX_CONFIG_HPP
|
||||
#include <boost/regex/config.hpp>
|
||||
#endif
|
||||
|
||||
//
|
||||
// define BOOST_REGEX_NO_FWD if this
|
||||
// header doesn't work!
|
||||
//
|
||||
#ifdef BOOST_REGEX_NO_FWD
|
||||
# ifndef BOOST_RE_REGEX_HPP
|
||||
# include <boost/regex.hpp>
|
||||
# endif
|
||||
#else
|
||||
|
||||
namespace boost{
|
||||
|
||||
template <class charT>
|
||||
class cpp_regex_traits;
|
||||
template <class charT>
|
||||
struct c_regex_traits;
|
||||
template <class charT>
|
||||
class w32_regex_traits;
|
||||
|
||||
#ifdef BOOST_REGEX_USE_WIN32_LOCALE
|
||||
template <class charT, class implementationT = w32_regex_traits<charT> >
|
||||
struct regex_traits;
|
||||
#elif defined(BOOST_REGEX_USE_CPP_LOCALE)
|
||||
template <class charT, class implementationT = cpp_regex_traits<charT> >
|
||||
struct regex_traits;
|
||||
#else
|
||||
template <class charT, class implementationT = c_regex_traits<charT> >
|
||||
struct regex_traits;
|
||||
#endif
|
||||
|
||||
template <class charT, class traits = regex_traits<charT> >
|
||||
class basic_regex;
|
||||
|
||||
typedef basic_regex<char, regex_traits<char> > regex;
|
||||
#ifndef BOOST_NO_WREGEX
|
||||
typedef basic_regex<wchar_t, regex_traits<wchar_t> > wregex;
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#endif // BOOST_REGEX_NO_FWD
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
|
||||
#ifndef BOOST_MPL_MAP_AUX_KEY_TYPE_IMPL_HPP_INCLUDED
|
||||
#define BOOST_MPL_MAP_AUX_KEY_TYPE_IMPL_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2003-2004
|
||||
// Copyright David Abrahams 2003-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/key_type_fwd.hpp>
|
||||
#include <boost/mpl/pair.hpp>
|
||||
#include <boost/mpl/map/aux_/tag.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace mpl {
|
||||
|
||||
template<>
|
||||
struct key_type_impl< aux::map_tag >
|
||||
{
|
||||
template< typename Map, typename T > struct apply
|
||||
: first<T>
|
||||
{
|
||||
};
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_MAP_AUX_KEY_TYPE_IMPL_HPP_INCLUDED
|
||||
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
Copyright Rene Rivera 2008-2015
|
||||
Distributed under the Boost Software License, Version 1.0.
|
||||
(See accompanying file LICENSE_1_0.txt or copy at
|
||||
http://www.boost.org/LICENSE_1_0.txt)
|
||||
*/
|
||||
|
||||
#include <boost/predef/architecture/x86/32.h>
|
||||
#include <boost/predef/architecture/x86/64.h>
|
||||
|
||||
#ifndef BOOST_PREDEF_ARCHITECTURE_X86_H
|
||||
#define BOOST_PREDEF_ARCHITECTURE_X86_H
|
||||
|
||||
/*`
|
||||
[heading `BOOST_ARCH_X86`]
|
||||
|
||||
[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is
|
||||
a category to indicate that either `BOOST_ARCH_X86_32` or
|
||||
`BOOST_ARCH_X86_64` is detected.
|
||||
*/
|
||||
|
||||
#define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
|
||||
|
||||
#if BOOST_ARCH_X86_32 || BOOST_ARCH_X86_64
|
||||
# undef BOOST_ARCH_X86
|
||||
# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_AVAILABLE
|
||||
#endif
|
||||
|
||||
#if BOOST_ARCH_X86
|
||||
# define BOOST_ARCH_X86_AVAILABLE
|
||||
#endif
|
||||
|
||||
#define BOOST_ARCH_X86_NAME "Intel x86"
|
||||
|
||||
#endif
|
||||
|
||||
#include <boost/predef/detail/test.h>
|
||||
BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86,BOOST_ARCH_X86_NAME)
|
||||
Reference in New Issue
Block a user