mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-11-02 20:51:23 -07:00 
			
		
		
		
	Incomplete work for using Boost.Polygon to compute medial axis
This commit is contained in:
		
							parent
							
								
									11f065ca5e
								
							
						
					
					
						commit
						bf91f3096a
					
				
					 1650 changed files with 307148 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -46,7 +46,7 @@ sub bounding_box {
 | 
			
		|||
# this method only works for expolygons having only a contour or
 | 
			
		||||
# a contour and a hole, and not being thicker than the supplied 
 | 
			
		||||
# width. it returns a polyline or a polygon
 | 
			
		||||
sub medial_axis {
 | 
			
		||||
sub ___medial_axis {
 | 
			
		||||
    my ($self, $width) = @_;
 | 
			
		||||
    return $self->_medial_axis_voronoi($width);
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -223,7 +223,7 @@ sub make_perimeters {
 | 
			
		|||
    
 | 
			
		||||
    # process thin walls by collapsing slices to single passes
 | 
			
		||||
    if (@thin_walls) {
 | 
			
		||||
        my @p = map $_->medial_axis($pspacing), @thin_walls;
 | 
			
		||||
        my @p = map @{$_->medial_axis($pspacing)}, @thin_walls;
 | 
			
		||||
        my @paths = ();
 | 
			
		||||
        for my $p (@p) {
 | 
			
		||||
            next if $p->length <= $pspacing * 2;
 | 
			
		||||
| 
						 | 
				
			
			@ -284,7 +284,7 @@ sub _fill_gaps {
 | 
			
		|||
                $_->isa('Slic3r::Polygon')
 | 
			
		||||
                    ? Slic3r::ExtrusionLoop->new(polygon => $_, %path_args)->split_at_first_point  # we should keep these as loops
 | 
			
		||||
                    : Slic3r::ExtrusionPath->new(polyline => $_, %path_args),
 | 
			
		||||
            } map $_->medial_axis($flow->scaled_width), @this_width);
 | 
			
		||||
            } map @{$_->medial_axis($flow->scaled_width)}, @this_width);
 | 
			
		||||
        
 | 
			
		||||
            Slic3r::debugf "  %d gaps filled with extrusion width = %s\n", scalar @this_width, $width
 | 
			
		||||
                if @{ $self->thin_fills };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,12 +1,28 @@
 | 
			
		|||
#include "ExPolygon.hpp"
 | 
			
		||||
#include "Polygon.hpp"
 | 
			
		||||
#include "Line.hpp"
 | 
			
		||||
#include "ClipperUtils.hpp"
 | 
			
		||||
#include "boost/polygon/voronoi.hpp"
 | 
			
		||||
 | 
			
		||||
using boost::polygon::voronoi_builder;
 | 
			
		||||
using boost::polygon::voronoi_diagram;
 | 
			
		||||
 | 
			
		||||
namespace Slic3r {
 | 
			
		||||
 | 
			
		||||
ExPolygon::operator Points() const
 | 
			
		||||
{
 | 
			
		||||
    Points points;
 | 
			
		||||
    Polygons pp = *this;
 | 
			
		||||
    for (Polygons::const_iterator poly = pp.begin(); poly != pp.end(); ++poly) {
 | 
			
		||||
        for (Points::const_iterator point = poly->points.begin(); point != poly->points.end(); ++point)
 | 
			
		||||
            points.push_back(*point);
 | 
			
		||||
    }
 | 
			
		||||
    return points;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
ExPolygon::operator Polygons() const
 | 
			
		||||
{
 | 
			
		||||
    Polygons polygons(this->holes.size() + 1);
 | 
			
		||||
    Polygons polygons;
 | 
			
		||||
    polygons.push_back(this->contour);
 | 
			
		||||
    for (Polygons::const_iterator it = this->holes.begin(); it != this->holes.end(); ++it) {
 | 
			
		||||
        polygons.push_back(*it);
 | 
			
		||||
| 
						 | 
				
			
			@ -119,6 +135,42 @@ ExPolygon::simplify(double tolerance, ExPolygons &expolygons) const
 | 
			
		|||
    expolygons.insert(expolygons.end(), ep.begin(), ep.end());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
ExPolygon::medial_axis(Polylines* polylines) const
 | 
			
		||||
{
 | 
			
		||||
    // populate list of segments for the Voronoi diagram
 | 
			
		||||
    Lines lines;
 | 
			
		||||
    this->contour.lines(&lines);
 | 
			
		||||
    for (Polygons::const_iterator hole = this->holes.begin(); hole != this->holes.end(); ++hole)
 | 
			
		||||
        hole->lines(&lines);
 | 
			
		||||
    
 | 
			
		||||
    // compute the Voronoi diagram
 | 
			
		||||
    voronoi_diagram<double> vd;
 | 
			
		||||
    construct_voronoi(lines.begin(), lines.end(), &vd);
 | 
			
		||||
    
 | 
			
		||||
    // iterate through the diagram
 | 
			
		||||
    int result = 0;
 | 
			
		||||
    for (voronoi_diagram<double>::const_edge_iterator it = vd.edges().begin(); it != vd.edges().end(); ++it) {
 | 
			
		||||
        if (it->is_primary()) ++result;
 | 
			
		||||
        
 | 
			
		||||
        Polyline p;
 | 
			
		||||
        if (!it->is_finite()) {
 | 
			
		||||
            clip_infinite_edge(*it, &p.points);
 | 
			
		||||
        } else {
 | 
			
		||||
            p.points.push_back(Point( it->vertex0()->x(), it->vertex0()->y() ));
 | 
			
		||||
            p.points.push_back(Point( it->vertex1()->x(), it->vertex1()->y() ));
 | 
			
		||||
            if (it->is_curved()) {
 | 
			
		||||
                sample_curved_edge(*it, &p.points);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        polylines->push_back(p);
 | 
			
		||||
    }
 | 
			
		||||
    printf("medial axis result = %d\n", result);
 | 
			
		||||
    
 | 
			
		||||
    // clip segments to our expolygon area
 | 
			
		||||
    intersection(*polylines, *this, *polylines);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef SLIC3RXS
 | 
			
		||||
SV*
 | 
			
		||||
ExPolygon::to_AV() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,6 +14,7 @@ class ExPolygon
 | 
			
		|||
    public:
 | 
			
		||||
    Polygon contour;
 | 
			
		||||
    Polygons holes;
 | 
			
		||||
    operator Points() const;
 | 
			
		||||
    operator Polygons() const;
 | 
			
		||||
    void scale(double factor);
 | 
			
		||||
    void translate(double x, double y);
 | 
			
		||||
| 
						 | 
				
			
			@ -25,6 +26,7 @@ class ExPolygon
 | 
			
		|||
    Polygons simplify_p(double tolerance) const;
 | 
			
		||||
    ExPolygons simplify(double tolerance) const;
 | 
			
		||||
    void simplify(double tolerance, ExPolygons &expolygons) const;
 | 
			
		||||
    void medial_axis(Polylines* polylines) const;
 | 
			
		||||
    
 | 
			
		||||
    #ifdef SLIC3RXS
 | 
			
		||||
    void from_SV(SV* poly_sv);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,7 @@
 | 
			
		|||
 | 
			
		||||
#include <myinit.h>
 | 
			
		||||
#include "Point.hpp"
 | 
			
		||||
#include <boost/polygon/polygon.hpp>
 | 
			
		||||
 | 
			
		||||
namespace Slic3r {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -41,4 +42,21 @@ typedef std::vector<Line> Lines;
 | 
			
		|||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// start Boost
 | 
			
		||||
namespace boost { namespace polygon {
 | 
			
		||||
    template <>
 | 
			
		||||
    struct geometry_concept<Line> { typedef segment_concept type; };
 | 
			
		||||
 | 
			
		||||
    template <>
 | 
			
		||||
    struct segment_traits<Line> {
 | 
			
		||||
        typedef coord_t coordinate_type;
 | 
			
		||||
        typedef Point point_type;
 | 
			
		||||
    
 | 
			
		||||
        static inline point_type get(const Line& line, direction_1d dir) {
 | 
			
		||||
            return dir.to_int() ? line.b : line.a;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
} }
 | 
			
		||||
// end Boost
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,6 +4,7 @@
 | 
			
		|||
#include <myinit.h>
 | 
			
		||||
#include <vector>
 | 
			
		||||
#include <math.h>
 | 
			
		||||
#include <boost/polygon/polygon.hpp>
 | 
			
		||||
 | 
			
		||||
namespace Slic3r {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -77,4 +78,20 @@ class Pointf3 : public Pointf
 | 
			
		|||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// start Boost
 | 
			
		||||
namespace boost { namespace polygon {
 | 
			
		||||
    template <>
 | 
			
		||||
    struct geometry_concept<Point> { typedef point_concept type; };
 | 
			
		||||
   
 | 
			
		||||
    template <>
 | 
			
		||||
    struct point_traits<Point> {
 | 
			
		||||
        typedef coord_t coordinate_type;
 | 
			
		||||
    
 | 
			
		||||
        static inline coordinate_type get(const Point& point, orientation_2d orient) {
 | 
			
		||||
            return (orient == HORIZONTAL) ? point.x : point.y;
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
} }
 | 
			
		||||
// end Boost
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,14 +22,20 @@ Lines
 | 
			
		|||
Polygon::lines() const
 | 
			
		||||
{
 | 
			
		||||
    Lines lines;
 | 
			
		||||
    lines.reserve(this->points.size());
 | 
			
		||||
    for (Points::const_iterator it = this->points.begin(); it != this->points.end()-1; ++it) {
 | 
			
		||||
        lines.push_back(Line(*it, *(it + 1)));
 | 
			
		||||
    }
 | 
			
		||||
    lines.push_back(Line(this->points.back(), this->points.front()));
 | 
			
		||||
    this->lines(&lines);
 | 
			
		||||
    return lines;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void
 | 
			
		||||
Polygon::lines(Lines* lines) const
 | 
			
		||||
{
 | 
			
		||||
    lines->reserve(lines->size() + this->points.size());
 | 
			
		||||
    for (Points::const_iterator it = this->points.begin(); it != this->points.end()-1; ++it) {
 | 
			
		||||
        lines->push_back(Line(*it, *(it + 1)));
 | 
			
		||||
    }
 | 
			
		||||
    lines->push_back(Line(this->points.back(), this->points.front()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Polyline*
 | 
			
		||||
Polygon::split_at(const Point* point) const
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,7 @@ class Polygon : public MultiPoint {
 | 
			
		|||
    operator Polygons() const;
 | 
			
		||||
    Point* last_point() const;
 | 
			
		||||
    Lines lines() const;
 | 
			
		||||
    void lines(Lines* lines) const;
 | 
			
		||||
    Polyline* split_at(const Point* point) const;
 | 
			
		||||
    Polyline* split_at_index(int index) const;
 | 
			
		||||
    Polyline* split_at_first_point() const;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										181
									
								
								xs/src/boost/aligned_storage.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										181
									
								
								xs/src/boost/aligned_storage.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,181 @@
 | 
			
		|||
//-----------------------------------------------------------------------------
 | 
			
		||||
// boost aligned_storage.hpp header file
 | 
			
		||||
// See http://www.boost.org for updates, documentation, and revision history.
 | 
			
		||||
//-----------------------------------------------------------------------------
 | 
			
		||||
//
 | 
			
		||||
// Copyright (c) 2002-2003
 | 
			
		||||
// Eric Friedman, Itay Maman
 | 
			
		||||
//
 | 
			
		||||
// 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_ALIGNED_STORAGE_HPP
 | 
			
		||||
#define BOOST_ALIGNED_STORAGE_HPP
 | 
			
		||||
 | 
			
		||||
#include <cstddef> // for std::size_t
 | 
			
		||||
 | 
			
		||||
#include "boost/config.hpp"
 | 
			
		||||
#include "boost/detail/workaround.hpp"
 | 
			
		||||
#include "boost/type_traits/alignment_of.hpp"
 | 
			
		||||
#include "boost/type_traits/type_with_alignment.hpp"
 | 
			
		||||
#include "boost/type_traits/is_pod.hpp"
 | 
			
		||||
 | 
			
		||||
#include "boost/mpl/eval_if.hpp"
 | 
			
		||||
#include "boost/mpl/identity.hpp"
 | 
			
		||||
 | 
			
		||||
#include "boost/type_traits/detail/bool_trait_def.hpp"
 | 
			
		||||
 | 
			
		||||
namespace boost {
 | 
			
		||||
 | 
			
		||||
namespace detail { namespace aligned_storage {
 | 
			
		||||
 | 
			
		||||
BOOST_STATIC_CONSTANT(
 | 
			
		||||
      std::size_t
 | 
			
		||||
    , alignment_of_max_align = ::boost::alignment_of<max_align>::value
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// To be TR1 conforming this must be a POD type:
 | 
			
		||||
//
 | 
			
		||||
template <
 | 
			
		||||
      std::size_t size_
 | 
			
		||||
    , std::size_t alignment_
 | 
			
		||||
>
 | 
			
		||||
struct aligned_storage_imp
 | 
			
		||||
{
 | 
			
		||||
    union data_t
 | 
			
		||||
    {
 | 
			
		||||
        char buf[size_];
 | 
			
		||||
 | 
			
		||||
        typename mpl::eval_if_c<
 | 
			
		||||
              alignment_ == std::size_t(-1)
 | 
			
		||||
            , mpl::identity<detail::max_align>
 | 
			
		||||
            , type_with_alignment<alignment_>
 | 
			
		||||
            >::type align_;
 | 
			
		||||
    } data_;
 | 
			
		||||
    void* address() const { return const_cast<aligned_storage_imp*>(this); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template< std::size_t alignment_ >
 | 
			
		||||
struct aligned_storage_imp<0u,alignment_>
 | 
			
		||||
{
 | 
			
		||||
    /* intentionally empty */
 | 
			
		||||
    void* address() const { return 0; }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}} // namespace detail::aligned_storage
 | 
			
		||||
 | 
			
		||||
template <
 | 
			
		||||
      std::size_t size_
 | 
			
		||||
    , std::size_t alignment_ = std::size_t(-1)
 | 
			
		||||
>
 | 
			
		||||
class aligned_storage : 
 | 
			
		||||
#ifndef __BORLANDC__
 | 
			
		||||
   private 
 | 
			
		||||
#else
 | 
			
		||||
   public
 | 
			
		||||
#endif
 | 
			
		||||
   detail::aligned_storage::aligned_storage_imp<size_, alignment_> 
 | 
			
		||||
{
 | 
			
		||||
 
 | 
			
		||||
public: // constants
 | 
			
		||||
 | 
			
		||||
    typedef detail::aligned_storage::aligned_storage_imp<size_, alignment_> type;
 | 
			
		||||
 | 
			
		||||
    BOOST_STATIC_CONSTANT(
 | 
			
		||||
          std::size_t
 | 
			
		||||
        , size = size_
 | 
			
		||||
        );
 | 
			
		||||
    BOOST_STATIC_CONSTANT(
 | 
			
		||||
          std::size_t
 | 
			
		||||
        , alignment = (
 | 
			
		||||
              alignment_ == std::size_t(-1)
 | 
			
		||||
            ? ::boost::detail::aligned_storage::alignment_of_max_align
 | 
			
		||||
            : alignment_
 | 
			
		||||
            )
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__) &&\
 | 
			
		||||
    (__GNUC__ >  3) ||\
 | 
			
		||||
    (__GNUC__ == 3 && (__GNUC_MINOR__ >  2 ||\
 | 
			
		||||
                      (__GNUC_MINOR__ == 2 && __GNUC_PATCHLEVEL__ >=3)))
 | 
			
		||||
 | 
			
		||||
private: // noncopyable
 | 
			
		||||
 | 
			
		||||
    aligned_storage(const aligned_storage&);
 | 
			
		||||
    aligned_storage& operator=(const aligned_storage&);
 | 
			
		||||
 | 
			
		||||
#else // gcc less than 3.2.3
 | 
			
		||||
 | 
			
		||||
public: // _should_ be noncopyable, but GCC compiler emits error
 | 
			
		||||
 | 
			
		||||
    aligned_storage(const aligned_storage&);
 | 
			
		||||
    aligned_storage& operator=(const aligned_storage&);
 | 
			
		||||
 | 
			
		||||
#endif // gcc < 3.2.3 workaround
 | 
			
		||||
 | 
			
		||||
public: // structors
 | 
			
		||||
 | 
			
		||||
    aligned_storage()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    ~aligned_storage()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
public: // accessors
 | 
			
		||||
 | 
			
		||||
    void* address()
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<type*>(this)->address();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 | 
			
		||||
 | 
			
		||||
    const void* address() const
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<const type*>(this)->address();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#else // MSVC6
 | 
			
		||||
 | 
			
		||||
    const void* address() const;
 | 
			
		||||
 | 
			
		||||
#endif // MSVC6 workaround
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
 | 
			
		||||
 | 
			
		||||
// MSVC6 seems not to like inline functions with const void* returns, so we
 | 
			
		||||
// declare the following here:
 | 
			
		||||
 | 
			
		||||
template <std::size_t S, std::size_t A>
 | 
			
		||||
const void* aligned_storage<S,A>::address() const
 | 
			
		||||
{
 | 
			
		||||
    return const_cast< aligned_storage<S,A>* >(this)->address();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif // MSVC6 workaround
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 | 
			
		||||
//
 | 
			
		||||
// Make sure that is_pod recognises aligned_storage<>::type
 | 
			
		||||
// as a POD (Note that aligned_storage<> itself is not a POD):
 | 
			
		||||
//
 | 
			
		||||
template <std::size_t size_, std::size_t alignment_>
 | 
			
		||||
struct is_pod<boost::detail::aligned_storage::aligned_storage_imp<size_,alignment_> >
 | 
			
		||||
   BOOST_TT_AUX_BOOL_C_BASE(true)
 | 
			
		||||
{ 
 | 
			
		||||
    BOOST_TT_AUX_BOOL_TRAIT_VALUE_DECL(true)
 | 
			
		||||
}; 
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#include "boost/type_traits/detail/bool_trait_undef.hpp"
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_ALIGNED_STORAGE_HPP
 | 
			
		||||
							
								
								
									
										446
									
								
								xs/src/boost/array.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										446
									
								
								xs/src/boost/array.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,446 @@
 | 
			
		|||
/* The following code declares class array,
 | 
			
		||||
 * an STL container (as wrapper) for arrays of constant size.
 | 
			
		||||
 *
 | 
			
		||||
 * See
 | 
			
		||||
 *      http://www.boost.org/libs/array/
 | 
			
		||||
 * for documentation.
 | 
			
		||||
 *
 | 
			
		||||
 * The original author site is at: http://www.josuttis.com/
 | 
			
		||||
 *
 | 
			
		||||
 * (C) Copyright Nicolai M. Josuttis 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)
 | 
			
		||||
 *
 | 
			
		||||
 * 14 Apr 2012 - (mtc) Added support for boost::hash
 | 
			
		||||
 * 28 Dec 2010 - (mtc) Added cbegin and cend (and crbegin and crend) for C++Ox compatibility.
 | 
			
		||||
 * 10 Mar 2010 - (mtc) fill method added, matching resolution of the standard library working group.
 | 
			
		||||
 *      See <http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#776> or Trac issue #3168
 | 
			
		||||
 *      Eventually, we should remove "assign" which is now a synonym for "fill" (Marshall Clow)
 | 
			
		||||
 * 10 Mar 2010 - added workaround for SUNCC and !STLPort [trac #3893] (Marshall Clow)
 | 
			
		||||
 * 29 Jan 2004 - c_array() added, BOOST_NO_PRIVATE_IN_AGGREGATE removed (Nico Josuttis)
 | 
			
		||||
 * 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries.
 | 
			
		||||
 * 05 Aug 2001 - minor update (Nico Josuttis)
 | 
			
		||||
 * 20 Jan 2001 - STLport fix (Beman Dawes)
 | 
			
		||||
 * 29 Sep 2000 - Initial Revision (Nico Josuttis)
 | 
			
		||||
 *
 | 
			
		||||
 * Jan 29, 2004
 | 
			
		||||
 */
 | 
			
		||||
#ifndef BOOST_ARRAY_HPP
 | 
			
		||||
#define BOOST_ARRAY_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/detail/workaround.hpp>
 | 
			
		||||
 | 
			
		||||
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)  
 | 
			
		||||
# pragma warning(push)  
 | 
			
		||||
# pragma warning(disable:4996) // 'std::equal': Function call with parameters that may be unsafe
 | 
			
		||||
# pragma warning(disable:4510) // boost::array<T,N>' : default constructor could not be generated 
 | 
			
		||||
# pragma warning(disable:4610) // warning C4610: class 'boost::array<T,N>' can never be instantiated - user defined constructor required 
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <cstddef>
 | 
			
		||||
#include <stdexcept>
 | 
			
		||||
#include <boost/assert.hpp>
 | 
			
		||||
#include <boost/swap.hpp>
 | 
			
		||||
 | 
			
		||||
// Handles broken standard libraries better than <iterator>
 | 
			
		||||
#include <boost/detail/iterator.hpp>
 | 
			
		||||
#include <boost/throw_exception.hpp>
 | 
			
		||||
#include <boost/functional/hash_fwd.hpp>
 | 
			
		||||
#include <algorithm>
 | 
			
		||||
 | 
			
		||||
// FIXES for broken compilers
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace boost {
 | 
			
		||||
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    class array {
 | 
			
		||||
      public:
 | 
			
		||||
        T elems[N];    // fixed-size array of elements of type T
 | 
			
		||||
 | 
			
		||||
      public:
 | 
			
		||||
        // type definitions
 | 
			
		||||
        typedef T              value_type;
 | 
			
		||||
        typedef T*             iterator;
 | 
			
		||||
        typedef const T*       const_iterator;
 | 
			
		||||
        typedef T&             reference;
 | 
			
		||||
        typedef const T&       const_reference;
 | 
			
		||||
        typedef std::size_t    size_type;
 | 
			
		||||
        typedef std::ptrdiff_t difference_type;
 | 
			
		||||
 | 
			
		||||
        // iterator support
 | 
			
		||||
        iterator        begin()       { return elems; }
 | 
			
		||||
        const_iterator  begin() const { return elems; }
 | 
			
		||||
        const_iterator cbegin() const { return elems; }
 | 
			
		||||
        
 | 
			
		||||
        iterator        end()       { return elems+N; }
 | 
			
		||||
        const_iterator  end() const { return elems+N; }
 | 
			
		||||
        const_iterator cend() const { return elems+N; }
 | 
			
		||||
 | 
			
		||||
        // reverse iterator support
 | 
			
		||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
 | 
			
		||||
        typedef std::reverse_iterator<iterator> reverse_iterator;
 | 
			
		||||
        typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
 | 
			
		||||
#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
 | 
			
		||||
        // workaround for broken reverse_iterator in VC7
 | 
			
		||||
        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
 | 
			
		||||
                                      reference, iterator, reference> > reverse_iterator;
 | 
			
		||||
        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
 | 
			
		||||
                                      const_reference, iterator, reference> > const_reverse_iterator;
 | 
			
		||||
#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) 
 | 
			
		||||
        typedef std::reverse_iterator<iterator, std::random_access_iterator_tag, 
 | 
			
		||||
              value_type, reference, iterator, difference_type> reverse_iterator; 
 | 
			
		||||
        typedef std::reverse_iterator<const_iterator, std::random_access_iterator_tag,
 | 
			
		||||
              value_type, const_reference, const_iterator, difference_type> const_reverse_iterator;
 | 
			
		||||
#else
 | 
			
		||||
        // workaround for broken reverse_iterator implementations
 | 
			
		||||
        typedef std::reverse_iterator<iterator,T> reverse_iterator;
 | 
			
		||||
        typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        reverse_iterator rbegin() { return reverse_iterator(end()); }
 | 
			
		||||
        const_reverse_iterator rbegin() const {
 | 
			
		||||
            return const_reverse_iterator(end());
 | 
			
		||||
        }
 | 
			
		||||
        const_reverse_iterator crbegin() const {
 | 
			
		||||
            return const_reverse_iterator(end());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        reverse_iterator rend() { return reverse_iterator(begin()); }
 | 
			
		||||
        const_reverse_iterator rend() const {
 | 
			
		||||
            return const_reverse_iterator(begin());
 | 
			
		||||
        }
 | 
			
		||||
        const_reverse_iterator crend() const {
 | 
			
		||||
            return const_reverse_iterator(begin());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // operator[]
 | 
			
		||||
        reference operator[](size_type i) 
 | 
			
		||||
        { 
 | 
			
		||||
            BOOST_ASSERT_MSG( i < N, "out of range" );
 | 
			
		||||
            return elems[i];
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        const_reference operator[](size_type i) const 
 | 
			
		||||
        {     
 | 
			
		||||
            BOOST_ASSERT_MSG( i < N, "out of range" );
 | 
			
		||||
            return elems[i]; 
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // at() with range check
 | 
			
		||||
        reference at(size_type i) { rangecheck(i); return elems[i]; }
 | 
			
		||||
        const_reference at(size_type i) const { rangecheck(i); return elems[i]; }
 | 
			
		||||
    
 | 
			
		||||
        // front() and back()
 | 
			
		||||
        reference front() 
 | 
			
		||||
        { 
 | 
			
		||||
            return elems[0]; 
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        const_reference front() const 
 | 
			
		||||
        {
 | 
			
		||||
            return elems[0];
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        reference back() 
 | 
			
		||||
        { 
 | 
			
		||||
            return elems[N-1]; 
 | 
			
		||||
        }
 | 
			
		||||
        
 | 
			
		||||
        const_reference back() const 
 | 
			
		||||
        { 
 | 
			
		||||
            return elems[N-1]; 
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // size is constant
 | 
			
		||||
        static size_type size() { return N; }
 | 
			
		||||
        static bool empty() { return false; }
 | 
			
		||||
        static size_type max_size() { return N; }
 | 
			
		||||
        enum { static_size = N };
 | 
			
		||||
 | 
			
		||||
        // swap (note: linear complexity)
 | 
			
		||||
        void swap (array<T,N>& y) {
 | 
			
		||||
            for (size_type i = 0; i < N; ++i)
 | 
			
		||||
                boost::swap(elems[i],y.elems[i]);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // direct access to data (read-only)
 | 
			
		||||
        const T* data() const { return elems; }
 | 
			
		||||
        T* data() { return elems; }
 | 
			
		||||
 | 
			
		||||
        // use array as C array (direct read/write access to data)
 | 
			
		||||
        T* c_array() { return elems; }
 | 
			
		||||
 | 
			
		||||
        // assignment with type conversion
 | 
			
		||||
        template <typename T2>
 | 
			
		||||
        array<T,N>& operator= (const array<T2,N>& rhs) {
 | 
			
		||||
            std::copy(rhs.begin(),rhs.end(), begin());
 | 
			
		||||
            return *this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // assign one value to all elements
 | 
			
		||||
        void assign (const T& value) { fill ( value ); }    // A synonym for fill
 | 
			
		||||
        void fill   (const T& value)
 | 
			
		||||
        {
 | 
			
		||||
            std::fill_n(begin(),size(),value);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // check range (may be private because it is static)
 | 
			
		||||
        static void rangecheck (size_type i) {
 | 
			
		||||
            if (i >= size()) {
 | 
			
		||||
                std::out_of_range e("array<>: index out of range");
 | 
			
		||||
                boost::throw_exception(e);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
 | 
			
		||||
    template< class T >
 | 
			
		||||
    class array< T, 0 > {
 | 
			
		||||
 | 
			
		||||
      public:
 | 
			
		||||
        // type definitions
 | 
			
		||||
        typedef T              value_type;
 | 
			
		||||
        typedef T*             iterator;
 | 
			
		||||
        typedef const T*       const_iterator;
 | 
			
		||||
        typedef T&             reference;
 | 
			
		||||
        typedef const T&       const_reference;
 | 
			
		||||
        typedef std::size_t    size_type;
 | 
			
		||||
        typedef std::ptrdiff_t difference_type;
 | 
			
		||||
 | 
			
		||||
        // iterator support
 | 
			
		||||
        iterator        begin()       { return       iterator( reinterpret_cast<       T * >( this ) ); }
 | 
			
		||||
        const_iterator  begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
 | 
			
		||||
        const_iterator cbegin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
 | 
			
		||||
 | 
			
		||||
        iterator        end()       { return  begin(); }
 | 
			
		||||
        const_iterator  end() const { return  begin(); }
 | 
			
		||||
        const_iterator cend() const { return cbegin(); }
 | 
			
		||||
 | 
			
		||||
        // reverse iterator support
 | 
			
		||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
 | 
			
		||||
        typedef std::reverse_iterator<iterator> reverse_iterator;
 | 
			
		||||
        typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
 | 
			
		||||
#elif defined(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
 | 
			
		||||
        // workaround for broken reverse_iterator in VC7
 | 
			
		||||
        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
 | 
			
		||||
                                      reference, iterator, reference> > reverse_iterator;
 | 
			
		||||
        typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
 | 
			
		||||
                                      const_reference, iterator, reference> > const_reverse_iterator;
 | 
			
		||||
#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) 
 | 
			
		||||
        typedef std::reverse_iterator<iterator, std::random_access_iterator_tag, 
 | 
			
		||||
              value_type, reference, iterator, difference_type> reverse_iterator; 
 | 
			
		||||
        typedef std::reverse_iterator<const_iterator, std::random_access_iterator_tag,
 | 
			
		||||
              value_type, const_reference, const_iterator, difference_type> const_reverse_iterator;
 | 
			
		||||
#else
 | 
			
		||||
        // workaround for broken reverse_iterator implementations
 | 
			
		||||
        typedef std::reverse_iterator<iterator,T> reverse_iterator;
 | 
			
		||||
        typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        reverse_iterator rbegin() { return reverse_iterator(end()); }
 | 
			
		||||
        const_reverse_iterator rbegin() const {
 | 
			
		||||
            return const_reverse_iterator(end());
 | 
			
		||||
        }
 | 
			
		||||
        const_reverse_iterator crbegin() const {
 | 
			
		||||
            return const_reverse_iterator(end());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        reverse_iterator rend() { return reverse_iterator(begin()); }
 | 
			
		||||
        const_reverse_iterator rend() const {
 | 
			
		||||
            return const_reverse_iterator(begin());
 | 
			
		||||
        }
 | 
			
		||||
        const_reverse_iterator crend() const {
 | 
			
		||||
            return const_reverse_iterator(begin());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // operator[]
 | 
			
		||||
        reference operator[](size_type /*i*/)
 | 
			
		||||
        {
 | 
			
		||||
            return failed_rangecheck();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const_reference operator[](size_type /*i*/) const
 | 
			
		||||
        {
 | 
			
		||||
            return failed_rangecheck();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // at() with range check
 | 
			
		||||
        reference at(size_type /*i*/)               {   return failed_rangecheck(); }
 | 
			
		||||
        const_reference at(size_type /*i*/) const   {   return failed_rangecheck(); }
 | 
			
		||||
 | 
			
		||||
        // front() and back()
 | 
			
		||||
        reference front()
 | 
			
		||||
        {
 | 
			
		||||
            return failed_rangecheck();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const_reference front() const
 | 
			
		||||
        {
 | 
			
		||||
            return failed_rangecheck();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        reference back()
 | 
			
		||||
        {
 | 
			
		||||
            return failed_rangecheck();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        const_reference back() const
 | 
			
		||||
        {
 | 
			
		||||
            return failed_rangecheck();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // size is constant
 | 
			
		||||
        static size_type size() { return 0; }
 | 
			
		||||
        static bool empty() { return true; }
 | 
			
		||||
        static size_type max_size() { return 0; }
 | 
			
		||||
        enum { static_size = 0 };
 | 
			
		||||
 | 
			
		||||
        void swap (array<T,0>& /*y*/) {
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // direct access to data (read-only)
 | 
			
		||||
        const T* data() const { return 0; }
 | 
			
		||||
        T* data() { return 0; }
 | 
			
		||||
 | 
			
		||||
        // use array as C array (direct read/write access to data)
 | 
			
		||||
        T* c_array() { return 0; }
 | 
			
		||||
 | 
			
		||||
        // assignment with type conversion
 | 
			
		||||
        template <typename T2>
 | 
			
		||||
        array<T,0>& operator= (const array<T2,0>& ) {
 | 
			
		||||
            return *this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // assign one value to all elements
 | 
			
		||||
        void assign (const T& value) { fill ( value ); }
 | 
			
		||||
        void fill   (const T& ) {}
 | 
			
		||||
        
 | 
			
		||||
        // check range (may be private because it is static)
 | 
			
		||||
        static reference failed_rangecheck () {
 | 
			
		||||
                std::out_of_range e("attempt to access element of an empty array");
 | 
			
		||||
                boost::throw_exception(e);
 | 
			
		||||
#if defined(BOOST_NO_EXCEPTIONS) || (!defined(BOOST_MSVC) && !defined(__PATHSCALE__))
 | 
			
		||||
                //
 | 
			
		||||
                // We need to return something here to keep
 | 
			
		||||
                // some compilers happy: however we will never
 | 
			
		||||
                // actually get here....
 | 
			
		||||
                //
 | 
			
		||||
                static T placeholder;
 | 
			
		||||
                return placeholder;
 | 
			
		||||
#endif
 | 
			
		||||
            }
 | 
			
		||||
    };
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    // comparisons
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    bool operator== (const array<T,N>& x, const array<T,N>& y) {
 | 
			
		||||
        return std::equal(x.begin(), x.end(), y.begin());
 | 
			
		||||
    }
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    bool operator< (const array<T,N>& x, const array<T,N>& y) {
 | 
			
		||||
        return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
 | 
			
		||||
    }
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    bool operator!= (const array<T,N>& x, const array<T,N>& y) {
 | 
			
		||||
        return !(x==y);
 | 
			
		||||
    }
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    bool operator> (const array<T,N>& x, const array<T,N>& y) {
 | 
			
		||||
        return y<x;
 | 
			
		||||
    }
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    bool operator<= (const array<T,N>& x, const array<T,N>& y) {
 | 
			
		||||
        return !(y<x);
 | 
			
		||||
    }
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    bool operator>= (const array<T,N>& x, const array<T,N>& y) {
 | 
			
		||||
        return !(x<y);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // global swap()
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    inline void swap (array<T,N>& x, array<T,N>& y) {
 | 
			
		||||
        x.swap(y);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if defined(__SUNPRO_CC)
 | 
			
		||||
//  Trac ticket #4757; the Sun Solaris compiler can't handle
 | 
			
		||||
//  syntax like 'T(&get_c_array(boost::array<T,N>& arg))[N]'
 | 
			
		||||
//  
 | 
			
		||||
//  We can't just use this for all compilers, because the 
 | 
			
		||||
//      borland compilers can't handle this form. 
 | 
			
		||||
    namespace detail {
 | 
			
		||||
       template <typename T, std::size_t N> struct c_array
 | 
			
		||||
       {
 | 
			
		||||
           typedef T type[N];
 | 
			
		||||
       };
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
   // Specific for boost::array: simply returns its elems data member.
 | 
			
		||||
   template <typename T, std::size_t N>
 | 
			
		||||
   typename detail::c_array<T,N>::type& get_c_array(boost::array<T,N>& arg)
 | 
			
		||||
   {
 | 
			
		||||
       return arg.elems;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   // Specific for boost::array: simply returns its elems data member.
 | 
			
		||||
   template <typename T, std::size_t N>
 | 
			
		||||
   typename const detail::c_array<T,N>::type& get_c_array(const boost::array<T,N>& arg)
 | 
			
		||||
   {
 | 
			
		||||
       return arg.elems;
 | 
			
		||||
   }
 | 
			
		||||
#else
 | 
			
		||||
// Specific for boost::array: simply returns its elems data member.
 | 
			
		||||
    template <typename T, std::size_t N>
 | 
			
		||||
    T(&get_c_array(boost::array<T,N>& arg))[N]
 | 
			
		||||
    {
 | 
			
		||||
        return arg.elems;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    // Const version.
 | 
			
		||||
    template <typename T, std::size_t N>
 | 
			
		||||
    const T(&get_c_array(const boost::array<T,N>& arg))[N]
 | 
			
		||||
    {
 | 
			
		||||
        return arg.elems;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
    
 | 
			
		||||
#if 0
 | 
			
		||||
    // Overload for std::array, assuming that std::array will have
 | 
			
		||||
    // explicit conversion functions as discussed at the WG21 meeting
 | 
			
		||||
    // in Summit, March 2009.
 | 
			
		||||
    template <typename T, std::size_t N>
 | 
			
		||||
    T(&get_c_array(std::array<T,N>& arg))[N]
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<T(&)[N]>(arg);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    // Const version.
 | 
			
		||||
    template <typename T, std::size_t N>
 | 
			
		||||
    const T(&get_c_array(const std::array<T,N>& arg))[N]
 | 
			
		||||
    {
 | 
			
		||||
        return static_cast<T(&)[N]>(arg);
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    template<class T, std::size_t N>
 | 
			
		||||
    std::size_t hash_value(const array<T,N>& arr)
 | 
			
		||||
    {
 | 
			
		||||
        return boost::hash_range(arr.begin(), arr.end());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
} /* namespace boost */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)  
 | 
			
		||||
# pragma warning(pop)  
 | 
			
		||||
#endif 
 | 
			
		||||
 | 
			
		||||
#endif /*BOOST_ARRAY_HPP*/
 | 
			
		||||
							
								
								
									
										141
									
								
								xs/src/boost/assert.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										141
									
								
								xs/src/boost/assert.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,141 @@
 | 
			
		|||
//
 | 
			
		||||
//  boost/assert.hpp - BOOST_ASSERT(expr)
 | 
			
		||||
//                     BOOST_ASSERT_MSG(expr, msg)
 | 
			
		||||
//                     BOOST_VERIFY(expr)
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//  Copyright (c) 2007 Peter Dimov
 | 
			
		||||
//  Copyright (c) Beman Dawes 2011
 | 
			
		||||
//
 | 
			
		||||
// Distributed under the Boost Software License, Version 1.0. (See
 | 
			
		||||
// accompanying file LICENSE_1_0.txt or copy at
 | 
			
		||||
// http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
//
 | 
			
		||||
//  Note: There are no include guards. This is intentional.
 | 
			
		||||
//
 | 
			
		||||
//  See http://www.boost.org/libs/utility/assert.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Stop inspect complaining about use of 'assert':
 | 
			
		||||
//
 | 
			
		||||
// boostinspect:naassert_macro
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------//
 | 
			
		||||
//                                     BOOST_ASSERT                                     //
 | 
			
		||||
//--------------------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
#undef BOOST_ASSERT
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_DISABLE_ASSERTS)
 | 
			
		||||
 | 
			
		||||
# define BOOST_ASSERT(expr) ((void)0)
 | 
			
		||||
 | 
			
		||||
#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
 | 
			
		||||
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
#include <boost/current_function.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
  void assertion_failed(char const * expr,
 | 
			
		||||
                        char const * function, char const * file, long line); // user defined
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#define BOOST_ASSERT(expr) (BOOST_LIKELY(!!(expr)) \
 | 
			
		||||
  ? ((void)0) \
 | 
			
		||||
  : ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
 | 
			
		||||
# define BOOST_ASSERT(expr) assert(expr)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------//
 | 
			
		||||
//                                   BOOST_ASSERT_MSG                                   //
 | 
			
		||||
//--------------------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
# undef BOOST_ASSERT_MSG
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_DISABLE_ASSERTS) || defined(NDEBUG)
 | 
			
		||||
 | 
			
		||||
  #define BOOST_ASSERT_MSG(expr, msg) ((void)0)
 | 
			
		||||
 | 
			
		||||
#elif defined(BOOST_ENABLE_ASSERT_HANDLER)
 | 
			
		||||
 | 
			
		||||
  #include <boost/config.hpp>
 | 
			
		||||
  #include <boost/current_function.hpp>
 | 
			
		||||
 | 
			
		||||
  namespace boost
 | 
			
		||||
  {
 | 
			
		||||
    void assertion_failed_msg(char const * expr, char const * msg,
 | 
			
		||||
                              char const * function, char const * file, long line); // user defined
 | 
			
		||||
  } // namespace boost
 | 
			
		||||
 | 
			
		||||
  #define BOOST_ASSERT_MSG(expr, msg) (BOOST_LIKELY(!!(expr)) \
 | 
			
		||||
    ? ((void)0) \
 | 
			
		||||
    : ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
  #ifndef BOOST_ASSERT_HPP
 | 
			
		||||
    #define BOOST_ASSERT_HPP
 | 
			
		||||
    #include <cstdlib>
 | 
			
		||||
    #include <iostream>
 | 
			
		||||
    #include <boost/config.hpp>
 | 
			
		||||
    #include <boost/current_function.hpp>
 | 
			
		||||
 | 
			
		||||
    //  IDE's like Visual Studio perform better if output goes to std::cout or
 | 
			
		||||
    //  some other stream, so allow user to configure output stream:
 | 
			
		||||
    #ifndef BOOST_ASSERT_MSG_OSTREAM
 | 
			
		||||
    # define BOOST_ASSERT_MSG_OSTREAM std::cerr
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    namespace boost
 | 
			
		||||
    {
 | 
			
		||||
      namespace assertion
 | 
			
		||||
      {
 | 
			
		||||
        namespace detail
 | 
			
		||||
        {
 | 
			
		||||
          // Note: The template is needed to make the function non-inline and avoid linking errors
 | 
			
		||||
          template< typename CharT >
 | 
			
		||||
          BOOST_NOINLINE void assertion_failed_msg(CharT const * expr, char const * msg, char const * function,
 | 
			
		||||
            char const * file, long line)
 | 
			
		||||
          {
 | 
			
		||||
            BOOST_ASSERT_MSG_OSTREAM
 | 
			
		||||
              << "***** Internal Program Error - assertion (" << expr << ") failed in "
 | 
			
		||||
              << function << ":\n"
 | 
			
		||||
              << file << '(' << line << "): " << msg << std::endl;
 | 
			
		||||
#ifdef UNDER_CE
 | 
			
		||||
            // The Windows CE CRT library does not have abort() so use exit(-1) instead.
 | 
			
		||||
            std::exit(-1);
 | 
			
		||||
#else
 | 
			
		||||
            std::abort();
 | 
			
		||||
#endif
 | 
			
		||||
          }
 | 
			
		||||
        } // detail
 | 
			
		||||
      } // assertion
 | 
			
		||||
    } // detail
 | 
			
		||||
  #endif
 | 
			
		||||
 | 
			
		||||
  #define BOOST_ASSERT_MSG(expr, msg) (BOOST_LIKELY(!!(expr)) \
 | 
			
		||||
    ? ((void)0) \
 | 
			
		||||
    : ::boost::assertion::detail::assertion_failed_msg(#expr, msg, \
 | 
			
		||||
          BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//--------------------------------------------------------------------------------------//
 | 
			
		||||
//                                     BOOST_VERIFY                                     //
 | 
			
		||||
//--------------------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
#undef BOOST_VERIFY
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
 | 
			
		||||
 | 
			
		||||
# define BOOST_VERIFY(expr) ((void)(expr))
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
# define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										24
									
								
								xs/src/boost/bind.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								xs/src/boost/bind.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
#ifndef BOOST_BIND_HPP_INCLUDED
 | 
			
		||||
#define BOOST_BIND_HPP_INCLUDED
 | 
			
		||||
 | 
			
		||||
// MS compatible compilers support #pragma once
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 | 
			
		||||
# pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
//  bind.hpp - binds function objects to arguments
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2009 Peter Dimov
 | 
			
		||||
//
 | 
			
		||||
//  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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/bind.hpp>
 | 
			
		||||
 | 
			
		||||
#endif // #ifndef BOOST_BIND_HPP_INCLUDED
 | 
			
		||||
							
								
								
									
										62
									
								
								xs/src/boost/bind/arg.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								xs/src/boost/bind/arg.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,62 @@
 | 
			
		|||
#ifndef BOOST_BIND_ARG_HPP_INCLUDED
 | 
			
		||||
#define BOOST_BIND_ARG_HPP_INCLUDED
 | 
			
		||||
 | 
			
		||||
// MS compatible compilers support #pragma once
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 | 
			
		||||
# pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
//  bind/arg.hpp
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
#include <boost/is_placeholder.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
template< int I > struct arg
 | 
			
		||||
{
 | 
			
		||||
    arg()
 | 
			
		||||
    {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template< class T > arg( T const & /* t */ )
 | 
			
		||||
    {
 | 
			
		||||
        // static assert I == is_placeholder<T>::value
 | 
			
		||||
        typedef char T_must_be_placeholder[ I == is_placeholder<T>::value? 1: -1 ];
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template< int I > bool operator==( arg<I> const &, arg<I> const & )
 | 
			
		||||
{
 | 
			
		||||
    return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template< int I > struct is_placeholder< arg<I> >
 | 
			
		||||
{
 | 
			
		||||
    enum _vt { value = I };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template< int I > struct is_placeholder< arg<I> (*) () >
 | 
			
		||||
{
 | 
			
		||||
    enum _vt { value = I };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#endif // #ifndef BOOST_BIND_ARG_HPP_INCLUDED
 | 
			
		||||
							
								
								
									
										1751
									
								
								xs/src/boost/bind/bind.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1751
									
								
								xs/src/boost/bind/bind.hpp
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										117
									
								
								xs/src/boost/bind/bind_cc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								xs/src/boost/bind/bind_cc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,117 @@
 | 
			
		|||
//
 | 
			
		||||
//  bind/bind_cc.hpp - support for different calling conventions
 | 
			
		||||
//
 | 
			
		||||
//  Do not include this header directly.
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
template<class R>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (), _bi::list0>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) ())
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) ();
 | 
			
		||||
    typedef _bi::list0 list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type> (f, list_type());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class B1, class A1>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1), typename _bi::list_av_1<A1>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1), A1 a1)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1);
 | 
			
		||||
    typedef typename _bi::list_av_1<A1>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type> (f, list_type(a1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class B1, class B2, class A1, class A2>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2), typename _bi::list_av_2<A1, A2>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2), A1 a1, A2 a2)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2);
 | 
			
		||||
    typedef typename _bi::list_av_2<A1, A2>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type> (f, list_type(a1, a2));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R,
 | 
			
		||||
    class B1, class B2, class B3,
 | 
			
		||||
    class A1, class A2, class A3>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3), typename _bi::list_av_3<A1, A2, A3>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3), A1 a1, A2 a2, A3 a3)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3);
 | 
			
		||||
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R,
 | 
			
		||||
    class B1, class B2, class B3, class B4,
 | 
			
		||||
    class A1, class A2, class A3, class A4>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4), typename _bi::list_av_4<A1, A2, A3, A4>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4);
 | 
			
		||||
    typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5), typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5);
 | 
			
		||||
    typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6), typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6);
 | 
			
		||||
    typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7), typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7);
 | 
			
		||||
    typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8), typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8);
 | 
			
		||||
    typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8, class B9,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
 | 
			
		||||
    _bi::bind_t<R, BOOST_BIND_ST R (BOOST_BIND_CC *) (B1, B2, B3, B4, B5, B6, B7, B8, B9), typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
 | 
			
		||||
    BOOST_BIND(BOOST_BIND_ST R (BOOST_BIND_CC *f) (B1, B2, B3, B4, B5, B6, B7, B8, B9), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
 | 
			
		||||
{
 | 
			
		||||
    typedef BOOST_BIND_ST R (BOOST_BIND_CC *F) (B1, B2, B3, B4, B5, B6, B7, B8, B9);
 | 
			
		||||
    typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(f, list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										228
									
								
								xs/src/boost/bind/bind_mf2_cc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										228
									
								
								xs/src/boost/bind/bind_mf2_cc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,228 @@
 | 
			
		|||
//
 | 
			
		||||
//  bind/bind_mf2_cc.hpp - member functions, type<> syntax
 | 
			
		||||
//
 | 
			
		||||
//  Do not include this header directly.
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//  Copyright (c) 2008 Peter Dimov
 | 
			
		||||
//
 | 
			
		||||
//  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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
// 0
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class A1>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
 | 
			
		||||
    typedef typename _bi::list_av_1<A1>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class A1>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
 | 
			
		||||
    typedef typename _bi::list_av_1<A1>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 1
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1,
 | 
			
		||||
    class A1, class A2>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
 | 
			
		||||
    typedef typename _bi::list_av_2<A1, A2>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1,
 | 
			
		||||
    class A1, class A2>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
 | 
			
		||||
    typedef typename _bi::list_av_2<A1, A2>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 2
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2,
 | 
			
		||||
    class A1, class A2, class A3>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
 | 
			
		||||
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2,
 | 
			
		||||
    class A1, class A2, class A3>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
 | 
			
		||||
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3,
 | 
			
		||||
    class A1, class A2, class A3, class A4>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
 | 
			
		||||
    typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3,
 | 
			
		||||
    class A1, class A2, class A3, class A4>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
 | 
			
		||||
    typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 4
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
 | 
			
		||||
    typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
 | 
			
		||||
    typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 5
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
 | 
			
		||||
    typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
 | 
			
		||||
    typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 6
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
 | 
			
		||||
    typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
 | 
			
		||||
    typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 7
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
 | 
			
		||||
    typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
 | 
			
		||||
    typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 8
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
 | 
			
		||||
    typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class Rt2, class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
 | 
			
		||||
    _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
 | 
			
		||||
    BOOST_BIND(boost::type<Rt2>, R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
 | 
			
		||||
    typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
 | 
			
		||||
    return _bi::bind_t<Rt2, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										227
									
								
								xs/src/boost/bind/bind_mf_cc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										227
									
								
								xs/src/boost/bind/bind_mf_cc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,227 @@
 | 
			
		|||
//
 | 
			
		||||
//  bind/bind_mf_cc.hpp - support for different calling conventions
 | 
			
		||||
//
 | 
			
		||||
//  Do not include this header directly.
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
// 0
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class A1>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
 | 
			
		||||
    typedef typename _bi::list_av_1<A1>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class A1>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
 | 
			
		||||
    typedef typename _bi::list_av_1<A1>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 1
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1,
 | 
			
		||||
    class A1, class A2>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
 | 
			
		||||
    typedef typename _bi::list_av_2<A1, A2>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1,
 | 
			
		||||
    class A1, class A2>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
 | 
			
		||||
    typedef typename _bi::list_av_2<A1, A2>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 2
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2,
 | 
			
		||||
    class A1, class A2, class A3>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
 | 
			
		||||
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2,
 | 
			
		||||
    class A1, class A2, class A3>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
 | 
			
		||||
    typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 3
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3,
 | 
			
		||||
    class A1, class A2, class A3, class A4>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
 | 
			
		||||
    typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3,
 | 
			
		||||
    class A1, class A2, class A3, class A4>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
 | 
			
		||||
    typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 4
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
 | 
			
		||||
    typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
 | 
			
		||||
    typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 5
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
 | 
			
		||||
    typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
 | 
			
		||||
    typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 6
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
 | 
			
		||||
    typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
 | 
			
		||||
    typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 7
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
 | 
			
		||||
    typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
 | 
			
		||||
    typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 8
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
 | 
			
		||||
    typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T,
 | 
			
		||||
    class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
 | 
			
		||||
    class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
 | 
			
		||||
    _bi::bind_t<R, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
 | 
			
		||||
    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
 | 
			
		||||
{
 | 
			
		||||
    typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
 | 
			
		||||
    typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
 | 
			
		||||
    return _bi::bind_t<R, F, list_type>(F(f), list_type(a1, a2, a3, a4, a5, a6, a7, a8, a9));
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										345
									
								
								xs/src/boost/bind/bind_template.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										345
									
								
								xs/src/boost/bind/bind_template.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,345 @@
 | 
			
		|||
//
 | 
			
		||||
//  bind/bind_template.hpp
 | 
			
		||||
//
 | 
			
		||||
//  Do not include this header directly.
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001-2004 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
    typedef typename result_traits<R, F>::type result_type;
 | 
			
		||||
 | 
			
		||||
    result_type operator()()
 | 
			
		||||
    {
 | 
			
		||||
        list0 a;
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    result_type operator()() const
 | 
			
		||||
    {
 | 
			
		||||
        list0 a;
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1> result_type operator()(A1 & a1)
 | 
			
		||||
    {
 | 
			
		||||
        list1<A1 &> a(a1);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1> result_type operator()(A1 & a1) const
 | 
			
		||||
    {
 | 
			
		||||
        list1<A1 &> a(a1);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1> result_type operator()(A1 const & a1)
 | 
			
		||||
    {
 | 
			
		||||
        list1<A1 const &> a(a1);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1> result_type operator()(A1 const & a1) const
 | 
			
		||||
    {
 | 
			
		||||
        list1<A1 const &> a(a1);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2)
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 &, A2 &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 & a1, A2 & a2) const
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 &, A2 &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2)
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 const &, A2 &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 const & a1, A2 & a2) const
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 const &, A2 &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2)
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 &, A2 const &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 & a1, A2 const & a2) const
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 &, A2 const &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2)
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 const &, A2 const &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2> result_type operator()(A1 const & a1, A2 const & a2) const
 | 
			
		||||
    {
 | 
			
		||||
        list2<A1 const &, A2 const &> a(a1, a2);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3)
 | 
			
		||||
    {
 | 
			
		||||
        list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3> result_type operator()(A1 & a1, A2 & a2, A3 & a3) const
 | 
			
		||||
    {
 | 
			
		||||
        list3<A1 &, A2 &, A3 &> a(a1, a2, a3);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3)
 | 
			
		||||
    {
 | 
			
		||||
        list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3) const
 | 
			
		||||
    {
 | 
			
		||||
        list3<A1 const &, A2 const &, A3 const &> a(a1, a2, a3);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4)
 | 
			
		||||
    {
 | 
			
		||||
        list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4) const
 | 
			
		||||
    {
 | 
			
		||||
        list4<A1 &, A2 &, A3 &, A4 &> a(a1, a2, a3, a4);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4)
 | 
			
		||||
    {
 | 
			
		||||
        list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4) const
 | 
			
		||||
    {
 | 
			
		||||
        list4<A1 const &, A2 const &, A3 const &, A4 const &> a(a1, a2, a3, a4);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5)
 | 
			
		||||
    {
 | 
			
		||||
        list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5) const
 | 
			
		||||
    {
 | 
			
		||||
        list5<A1 &, A2 &, A3 &, A4 &, A5 &> a(a1, a2, a3, a4, a5);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5)
 | 
			
		||||
    {
 | 
			
		||||
        list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5) const
 | 
			
		||||
    {
 | 
			
		||||
        list5<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &> a(a1, a2, a3, a4, a5);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6)
 | 
			
		||||
    {
 | 
			
		||||
        list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6) const
 | 
			
		||||
    {
 | 
			
		||||
        list6<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &> a(a1, a2, a3, a4, a5, a6);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6)
 | 
			
		||||
    {
 | 
			
		||||
        list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6) const
 | 
			
		||||
    {
 | 
			
		||||
        list6<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &> a(a1, a2, a3, a4, a5, a6);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7)
 | 
			
		||||
    {
 | 
			
		||||
        list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7) const
 | 
			
		||||
    {
 | 
			
		||||
        list7<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &> a(a1, a2, a3, a4, a5, a6, a7);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7)
 | 
			
		||||
    {
 | 
			
		||||
        list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7) const
 | 
			
		||||
    {
 | 
			
		||||
        list7<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &> a(a1, a2, a3, a4, a5, a6, a7);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8)
 | 
			
		||||
    {
 | 
			
		||||
        list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8) const
 | 
			
		||||
    {
 | 
			
		||||
        list8<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &> a(a1, a2, a3, a4, a5, a6, a7, a8);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8)
 | 
			
		||||
    {
 | 
			
		||||
        list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8) const
 | 
			
		||||
    {
 | 
			
		||||
        list8<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &> a(a1, a2, a3, a4, a5, a6, a7, a8);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9)
 | 
			
		||||
    {
 | 
			
		||||
        list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 & a1, A2 & a2, A3 & a3, A4 & a4, A5 & a5, A6 & a6, A7 & a7, A8 & a8, A9 & a9) const
 | 
			
		||||
    {
 | 
			
		||||
        list9<A1 &, A2 &, A3 &, A4 &, A5 &, A6 &, A7 &, A8 &, A9 &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING) \
 | 
			
		||||
 && !BOOST_WORKAROUND(__EDG_VERSION__, <= 238)
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9)
 | 
			
		||||
    {
 | 
			
		||||
        list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> result_type operator()(A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9) const
 | 
			
		||||
    {
 | 
			
		||||
        list9<A1 const &, A2 const &, A3 const &, A4 const &, A5 const &, A6 const &, A7 const &, A8 const &, A9 const &> a(a1, a2, a3, a4, a5, a6, a7, a8, a9);
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    template<class A> result_type eval(A & a)
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class A> result_type eval(A & a) const
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_BIND_RETURN l_(type<result_type>(), f_, a, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
#if !defined( BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ) && !defined( __BORLANDC__ )
 | 
			
		||||
 | 
			
		||||
        using boost::visit_each;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, f_, 0);
 | 
			
		||||
        l_.accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool compare(this_type const & rhs) const
 | 
			
		||||
    {
 | 
			
		||||
        return ref_compare(f_, rhs.f_, 0) && l_ == rhs.l_;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
 | 
			
		||||
    F f_;
 | 
			
		||||
    L l_;
 | 
			
		||||
							
								
								
									
										389
									
								
								xs/src/boost/bind/mem_fn.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										389
									
								
								xs/src/boost/bind/mem_fn.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,389 @@
 | 
			
		|||
#ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED
 | 
			
		||||
#define BOOST_BIND_MEM_FN_HPP_INCLUDED
 | 
			
		||||
 | 
			
		||||
// MS compatible compilers support #pragma once
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 | 
			
		||||
# pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
//  mem_fn.hpp - a generalization of std::mem_fun[_ref]
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//  Copyright (c) 2001 David Abrahams
 | 
			
		||||
//  Copyright (c) 2003-2005 Peter Dimov
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/mem_fn.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
#include <boost/get_pointer.hpp>
 | 
			
		||||
#include <boost/detail/workaround.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_NO_VOID_RETURNS)
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_CLASS_F , class F
 | 
			
		||||
#define BOOST_MEM_FN_TYPEDEF(X)
 | 
			
		||||
 | 
			
		||||
namespace _mfi // mem_fun_impl
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
template<class V> struct mf
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_RETURN return
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X
 | 
			
		||||
#define BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_CDECL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl
 | 
			
		||||
#define BOOST_MEM_FN_CC __cdecl
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __stdcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __fastcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_RETURN
 | 
			
		||||
 | 
			
		||||
}; // struct mf<V>
 | 
			
		||||
 | 
			
		||||
template<> struct mf<void>
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_RETURN
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X
 | 
			
		||||
#define BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_CDECL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X##_cdecl
 | 
			
		||||
#define BOOST_MEM_FN_CC __cdecl
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X##_stdcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __stdcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) inner_##X##_fastcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __fastcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_RETURN
 | 
			
		||||
 | 
			
		||||
}; // struct mf<void>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CLASS_F
 | 
			
		||||
#undef BOOST_MEM_FN_TYPEDEF_F
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X
 | 
			
		||||
#define BOOST_MEM_FN_NAME2(X) inner_##X
 | 
			
		||||
#define BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_vw.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_NAME2
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_CDECL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_cdecl
 | 
			
		||||
#define BOOST_MEM_FN_NAME2(X) inner_##X##_cdecl
 | 
			
		||||
#define BOOST_MEM_FN_CC __cdecl
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_vw.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_NAME2
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_stdcall
 | 
			
		||||
#define BOOST_MEM_FN_NAME2(X) inner_##X##_stdcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __stdcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_vw.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_NAME2
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_fastcall
 | 
			
		||||
#define BOOST_MEM_FN_NAME2(X) inner_##X##_fastcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __fastcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_vw.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_NAME2
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
} // namespace _mfi
 | 
			
		||||
 | 
			
		||||
#else // #ifdef BOOST_NO_VOID_RETURNS
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_CLASS_F
 | 
			
		||||
#define BOOST_MEM_FN_TYPEDEF(X) typedef X;
 | 
			
		||||
 | 
			
		||||
namespace _mfi
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_RETURN return
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X
 | 
			
		||||
#define BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_CDECL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_cdecl
 | 
			
		||||
#define BOOST_MEM_FN_CC __cdecl
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_stdcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __stdcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_fastcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __fastcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_template.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_RETURN
 | 
			
		||||
 | 
			
		||||
} // namespace _mfi
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_CLASS_F
 | 
			
		||||
#undef BOOST_MEM_FN_TYPEDEF
 | 
			
		||||
 | 
			
		||||
#endif // #ifdef BOOST_NO_VOID_RETURNS
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X
 | 
			
		||||
#define BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_cc.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_CDECL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_cdecl
 | 
			
		||||
#define BOOST_MEM_FN_CC __cdecl
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_cc.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_STDCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_stdcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __stdcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_cc.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MEM_FN_ENABLE_FASTCALL
 | 
			
		||||
 | 
			
		||||
#define BOOST_MEM_FN_NAME(X) X##_fastcall
 | 
			
		||||
#define BOOST_MEM_FN_CC __fastcall
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/mem_fn_cc.hpp>
 | 
			
		||||
 | 
			
		||||
#undef BOOST_MEM_FN_NAME
 | 
			
		||||
#undef BOOST_MEM_FN_CC
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// data member support
 | 
			
		||||
 | 
			
		||||
namespace _mfi
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
template<class R, class T> class dm
 | 
			
		||||
{
 | 
			
		||||
public:
 | 
			
		||||
 | 
			
		||||
    typedef R const & result_type;
 | 
			
		||||
    typedef T const * argument_type;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    
 | 
			
		||||
    typedef R (T::*F);
 | 
			
		||||
    F f_;
 | 
			
		||||
 | 
			
		||||
    template<class U> R const & call(U & u, T const *) const
 | 
			
		||||
    {
 | 
			
		||||
        return (u.*f_);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class U> R const & call(U & u, void const *) const
 | 
			
		||||
    {
 | 
			
		||||
        return (get_pointer(u)->*f_);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
public:
 | 
			
		||||
    
 | 
			
		||||
    explicit dm(F f): f_(f) {}
 | 
			
		||||
 | 
			
		||||
    R & operator()(T * p) const
 | 
			
		||||
    {
 | 
			
		||||
        return (p->*f_);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    R const & operator()(T const * p) const
 | 
			
		||||
    {
 | 
			
		||||
        return (p->*f_);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template<class U> R const & operator()(U const & u) const
 | 
			
		||||
    {
 | 
			
		||||
        return call(u, &u);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1300) && !BOOST_WORKAROUND(__MWERKS__, < 0x3200)
 | 
			
		||||
 | 
			
		||||
    R & operator()(T & t) const
 | 
			
		||||
    {
 | 
			
		||||
        return (t.*f_);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    R const & operator()(T const & t) const
 | 
			
		||||
    {
 | 
			
		||||
        return (t.*f_);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    bool operator==(dm const & rhs) const
 | 
			
		||||
    {
 | 
			
		||||
        return f_ == rhs.f_;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    bool operator!=(dm const & rhs) const
 | 
			
		||||
    {
 | 
			
		||||
        return f_ != rhs.f_;
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace _mfi
 | 
			
		||||
 | 
			
		||||
template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::dm<R, T>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#endif // #ifndef BOOST_BIND_MEM_FN_HPP_INCLUDED
 | 
			
		||||
							
								
								
									
										103
									
								
								xs/src/boost/bind/mem_fn_cc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								xs/src/boost/bind/mem_fn_cc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,103 @@
 | 
			
		|||
//
 | 
			
		||||
//  bind/mem_fn_cc.hpp - support for different calling conventions
 | 
			
		||||
//
 | 
			
		||||
//  Do not include this header directly.
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/mem_fn.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
template<class R, class T> _mfi::BOOST_MEM_FN_NAME(mf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) ())
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf0)<R, T>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T> _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T> mem_fn(R (BOOST_MEM_FN_CC T::*f) () const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf0)<R, T>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf1)<R, T, A1>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1> _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf1)<R, T, A1>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf2)<R, T, A1, A2>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2> _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf2)<R, T, A1, A2>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf3)<R, T, A1, A2, A3>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3> _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf3)<R, T, A1, A2, A3>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf4)<R, T, A1, A2, A3, A4>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4> _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf4)<R, T, A1, A2, A3, A4>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf5)<R, T, A1, A2, A3, A4, A5>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5> _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf5)<R, T, A1, A2, A3, A4, A5>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf6)<R, T, A1, A2, A3, A4, A5, A6>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf6)<R, T, A1, A2, A3, A4, A5, A6>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8))
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8> mem_fn(R (BOOST_MEM_FN_CC T::*f) (A1, A2, A3, A4, A5, A6, A7, A8) const)
 | 
			
		||||
{
 | 
			
		||||
    return _mfi::BOOST_MEM_FN_NAME(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8>(f);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										1047
									
								
								xs/src/boost/bind/mem_fn_template.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1047
									
								
								xs/src/boost/bind/mem_fn_template.hpp
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										130
									
								
								xs/src/boost/bind/mem_fn_vw.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								xs/src/boost/bind/mem_fn_vw.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,130 @@
 | 
			
		|||
//
 | 
			
		||||
//  bind/mem_fn_vw.hpp - void return helper wrappers
 | 
			
		||||
//
 | 
			
		||||
//  Do not include this header directly
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2001 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/mem_fn.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
template<class R, class T> struct BOOST_MEM_FN_NAME(mf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, R (BOOST_MEM_FN_CC T::*) ()>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) ();
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf0)<R, T, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T> struct BOOST_MEM_FN_NAME(cmf0): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, R (BOOST_MEM_FN_CC T::*) () const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) () const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf0)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf0)<R, T, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(mf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf1)<R, T, A1, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1> struct BOOST_MEM_FN_NAME(cmf1): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, R (BOOST_MEM_FN_CC T::*) (A1) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf1)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf1)<R, T, A1, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(mf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf2)<R, T, A1, A2, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2> struct BOOST_MEM_FN_NAME(cmf2): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, R (BOOST_MEM_FN_CC T::*) (A1, A2) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf2)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf2)<R, T, A1, A2, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(mf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf3)<R, T, A1, A2, A3, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3> struct BOOST_MEM_FN_NAME(cmf3): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf3)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf3)<R, T, A1, A2, A3, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(mf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf4)<R, T, A1, A2, A3, A4, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4> struct BOOST_MEM_FN_NAME(cmf4): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf4)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf4)<R, T, A1, A2, A3, A4, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(mf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf5)<R, T, A1, A2, A3, A4, A5, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5> struct BOOST_MEM_FN_NAME(cmf5): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf5)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf5)<R, T, A1, A2, A3, A4, A5, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(mf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6> struct BOOST_MEM_FN_NAME(cmf6): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf6)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf6)<R, T, A1, A2, A3, A4, A5, A6, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(mf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct BOOST_MEM_FN_NAME(cmf7): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf7)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf7)<R, T, A1, A2, A3, A4, A5, A6, A7, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(mf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8)>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8);
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(mf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(mf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class R, class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct BOOST_MEM_FN_NAME(cmf8): public mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, R (BOOST_MEM_FN_CC T::*) (A1, A2, A3, A4, A5, A6, A7, A8) const>
 | 
			
		||||
{
 | 
			
		||||
    typedef R (BOOST_MEM_FN_CC T::*F) (A1, A2, A3, A4, A5, A6, A7, A8) const;
 | 
			
		||||
    explicit BOOST_MEM_FN_NAME(cmf8)(F f): mf<R>::BOOST_NESTED_TEMPLATE BOOST_MEM_FN_NAME2(cmf8)<R, T, A1, A2, A3, A4, A5, A6, A7, A8, F>(f) {}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										69
									
								
								xs/src/boost/bind/placeholders.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								xs/src/boost/bind/placeholders.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
#ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
 | 
			
		||||
#define BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
 | 
			
		||||
 | 
			
		||||
// MS compatible compilers support #pragma once
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 | 
			
		||||
# pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
//  bind/placeholders.hpp - _N definitions
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
 | 
			
		||||
//
 | 
			
		||||
// 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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <boost/bind/arg.hpp>
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
 | 
			
		||||
namespace
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
#if defined(__BORLANDC__) || defined(__GNUC__) && (__GNUC__ < 4)
 | 
			
		||||
 | 
			
		||||
static inline boost::arg<1> _1() { return boost::arg<1>(); }
 | 
			
		||||
static inline boost::arg<2> _2() { return boost::arg<2>(); }
 | 
			
		||||
static inline boost::arg<3> _3() { return boost::arg<3>(); }
 | 
			
		||||
static inline boost::arg<4> _4() { return boost::arg<4>(); }
 | 
			
		||||
static inline boost::arg<5> _5() { return boost::arg<5>(); }
 | 
			
		||||
static inline boost::arg<6> _6() { return boost::arg<6>(); }
 | 
			
		||||
static inline boost::arg<7> _7() { return boost::arg<7>(); }
 | 
			
		||||
static inline boost::arg<8> _8() { return boost::arg<8>(); }
 | 
			
		||||
static inline boost::arg<9> _9() { return boost::arg<9>(); }
 | 
			
		||||
 | 
			
		||||
#elif defined(BOOST_MSVC) || (defined(__DECCXX_VER) && __DECCXX_VER <= 60590031) || defined(__MWERKS__) || \
 | 
			
		||||
    defined(__GNUC__) && (__GNUC__ == 4 && __GNUC_MINOR__ < 2)  
 | 
			
		||||
 | 
			
		||||
static boost::arg<1> _1;
 | 
			
		||||
static boost::arg<2> _2;
 | 
			
		||||
static boost::arg<3> _3;
 | 
			
		||||
static boost::arg<4> _4;
 | 
			
		||||
static boost::arg<5> _5;
 | 
			
		||||
static boost::arg<6> _6;
 | 
			
		||||
static boost::arg<7> _7;
 | 
			
		||||
static boost::arg<8> _8;
 | 
			
		||||
static boost::arg<9> _9;
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
boost::arg<1> _1;
 | 
			
		||||
boost::arg<2> _2;
 | 
			
		||||
boost::arg<3> _3;
 | 
			
		||||
boost::arg<4> _4;
 | 
			
		||||
boost::arg<5> _5;
 | 
			
		||||
boost::arg<6> _6;
 | 
			
		||||
boost::arg<7> _7;
 | 
			
		||||
boost::arg<8> _8;
 | 
			
		||||
boost::arg<9> _9;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
} // unnamed namespace
 | 
			
		||||
 | 
			
		||||
#endif // #ifndef BOOST_BIND_PLACEHOLDERS_HPP_INCLUDED
 | 
			
		||||
							
								
								
									
										475
									
								
								xs/src/boost/bind/storage.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										475
									
								
								xs/src/boost/bind/storage.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,475 @@
 | 
			
		|||
#ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
 | 
			
		||||
#define BOOST_BIND_STORAGE_HPP_INCLUDED
 | 
			
		||||
 | 
			
		||||
// MS compatible compilers support #pragma once
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 | 
			
		||||
# pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
//  bind/storage.hpp
 | 
			
		||||
//
 | 
			
		||||
//  boost/bind.hpp support header, optimized storage
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2006 Peter Dimov
 | 
			
		||||
//
 | 
			
		||||
//  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/bind/bind.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
#include <boost/bind/arg.hpp>
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MSVC
 | 
			
		||||
# pragma warning(push)
 | 
			
		||||
# pragma warning(disable: 4512) // assignment operator could not be generated
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
namespace _bi
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
// 1
 | 
			
		||||
 | 
			
		||||
template<class A1> struct storage1
 | 
			
		||||
{
 | 
			
		||||
    explicit storage1( A1 a1 ): a1_( a1 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a1_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A1 a1_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ) && !defined( __BORLANDC__ )
 | 
			
		||||
 | 
			
		||||
template<int I> struct storage1< boost::arg<I> >
 | 
			
		||||
{
 | 
			
		||||
    explicit storage1( boost::arg<I> ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V &) const { }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a1_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<int I> struct storage1< boost::arg<I> (*) () >
 | 
			
		||||
{
 | 
			
		||||
    explicit storage1( boost::arg<I> (*) () ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V &) const { }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a1_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 2
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2> struct storage2: public storage1<A1>
 | 
			
		||||
{
 | 
			
		||||
    typedef storage1<A1> inherited;
 | 
			
		||||
 | 
			
		||||
    storage2( A1 a1, A2 a2 ): storage1<A1>( a1 ), a2_( a2 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a2_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A2 a2_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, int I> struct storage2< A1, boost::arg<I> >: public storage1<A1>
 | 
			
		||||
{
 | 
			
		||||
    typedef storage1<A1> inherited;
 | 
			
		||||
 | 
			
		||||
    storage2( A1 a1, boost::arg<I> ): storage1<A1>( a1 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a2_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, int I> struct storage2< A1, boost::arg<I> (*) () >: public storage1<A1>
 | 
			
		||||
{
 | 
			
		||||
    typedef storage1<A1> inherited;
 | 
			
		||||
 | 
			
		||||
    storage2( A1 a1, boost::arg<I> (*) () ): storage1<A1>( a1 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a2_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 3
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3> struct storage3: public storage2< A1, A2 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage2<A1, A2> inherited;
 | 
			
		||||
 | 
			
		||||
    storage3( A1 a1, A2 a2, A3 a3 ): storage2<A1, A2>( a1, a2 ), a3_( a3 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a3_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A3 a3_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> >: public storage2< A1, A2 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage2<A1, A2> inherited;
 | 
			
		||||
 | 
			
		||||
    storage3( A1 a1, A2 a2, boost::arg<I> ): storage2<A1, A2>( a1, a2 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a3_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, int I> struct storage3< A1, A2, boost::arg<I> (*) () >: public storage2< A1, A2 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage2<A1, A2> inherited;
 | 
			
		||||
 | 
			
		||||
    storage3( A1 a1, A2 a2, boost::arg<I> (*) () ): storage2<A1, A2>( a1, a2 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a3_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 4
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4> struct storage4: public storage3< A1, A2, A3 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage3<A1, A2, A3> inherited;
 | 
			
		||||
 | 
			
		||||
    storage4( A1 a1, A2 a2, A3 a3, A4 a4 ): storage3<A1, A2, A3>( a1, a2, a3 ), a4_( a4 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a4_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A4 a4_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> >: public storage3< A1, A2, A3 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage3<A1, A2, A3> inherited;
 | 
			
		||||
 | 
			
		||||
    storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a4_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, int I> struct storage4< A1, A2, A3, boost::arg<I> (*) () >: public storage3< A1, A2, A3 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage3<A1, A2, A3> inherited;
 | 
			
		||||
 | 
			
		||||
    storage4( A1 a1, A2 a2, A3 a3, boost::arg<I> (*) () ): storage3<A1, A2, A3>( a1, a2, a3 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a4_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 5
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5> struct storage5: public storage4< A1, A2, A3, A4 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage4<A1, A2, A3, A4> inherited;
 | 
			
		||||
 | 
			
		||||
    storage5( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5 ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ), a5_( a5 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a5_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A5 a5_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> >: public storage4< A1, A2, A3, A4 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage4<A1, A2, A3, A4> inherited;
 | 
			
		||||
 | 
			
		||||
    storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a5_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, int I> struct storage5< A1, A2, A3, A4, boost::arg<I> (*) () >: public storage4< A1, A2, A3, A4 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage4<A1, A2, A3, A4> inherited;
 | 
			
		||||
 | 
			
		||||
    storage5( A1 a1, A2 a2, A3 a3, A4 a4, boost::arg<I> (*) () ): storage4<A1, A2, A3, A4>( a1, a2, a3, a4 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a5_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 6
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6> struct storage6: public storage5< A1, A2, A3, A4, A5 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage5<A1, A2, A3, A4, A5> inherited;
 | 
			
		||||
 | 
			
		||||
    storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6 ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ), a6_( a6 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a6_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A6 a6_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> >: public storage5< A1, A2, A3, A4, A5 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage5<A1, A2, A3, A4, A5> inherited;
 | 
			
		||||
 | 
			
		||||
    storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a6_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, int I> struct storage6< A1, A2, A3, A4, A5, boost::arg<I> (*) () >: public storage5< A1, A2, A3, A4, A5 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage5<A1, A2, A3, A4, A5> inherited;
 | 
			
		||||
 | 
			
		||||
    storage6( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, boost::arg<I> (*) () ): storage5<A1, A2, A3, A4, A5>( a1, a2, a3, a4, a5 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a6_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 7
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7> struct storage7: public storage6< A1, A2, A3, A4, A5, A6 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
 | 
			
		||||
 | 
			
		||||
    storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7 ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ), a7_( a7 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a7_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A7 a7_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> >: public storage6< A1, A2, A3, A4, A5, A6 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
 | 
			
		||||
 | 
			
		||||
    storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a7_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, int I> struct storage7< A1, A2, A3, A4, A5, A6, boost::arg<I> (*) () >: public storage6< A1, A2, A3, A4, A5, A6 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage6<A1, A2, A3, A4, A5, A6> inherited;
 | 
			
		||||
 | 
			
		||||
    storage7( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, boost::arg<I> (*) () ): storage6<A1, A2, A3, A4, A5, A6>( a1, a2, a3, a4, a5, a6 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a7_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 8
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8> struct storage8: public storage7< A1, A2, A3, A4, A5, A6, A7 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
 | 
			
		||||
 | 
			
		||||
    storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8 ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ), a8_( a8 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a8_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A8 a8_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
 | 
			
		||||
 | 
			
		||||
    storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a8_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, int I> struct storage8< A1, A2, A3, A4, A5, A6, A7, boost::arg<I> (*) () >: public storage7< A1, A2, A3, A4, A5, A6, A7 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage7<A1, A2, A3, A4, A5, A6, A7> inherited;
 | 
			
		||||
 | 
			
		||||
    storage8( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, boost::arg<I> (*) () ): storage7<A1, A2, A3, A4, A5, A6, A7>( a1, a2, a3, a4, a5, a6, a7 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a8_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// 9
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9> struct storage9: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
 | 
			
		||||
 | 
			
		||||
    storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9 ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ), a9_( a9 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
        BOOST_BIND_VISIT_EACH(v, a9_, 0);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    A9 a9_;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION )
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
 | 
			
		||||
 | 
			
		||||
    storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a9_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, int I> struct storage9< A1, A2, A3, A4, A5, A6, A7, A8, boost::arg<I> (*) () >: public storage8< A1, A2, A3, A4, A5, A6, A7, A8 >
 | 
			
		||||
{
 | 
			
		||||
    typedef storage8<A1, A2, A3, A4, A5, A6, A7, A8> inherited;
 | 
			
		||||
 | 
			
		||||
    storage9( A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, boost::arg<I> (*) () ): storage8<A1, A2, A3, A4, A5, A6, A7, A8>( a1, a2, a3, a4, a5, a6, a7, a8 ) {}
 | 
			
		||||
 | 
			
		||||
    template<class V> void accept(V & v) const
 | 
			
		||||
    {
 | 
			
		||||
        inherited::accept(v);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static boost::arg<I> a9_() { return boost::arg<I>(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
} // namespace _bi
 | 
			
		||||
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_MSVC
 | 
			
		||||
# pragma warning(default: 4512) // assignment operator could not be generated
 | 
			
		||||
# pragma warning(pop)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // #ifndef BOOST_BIND_STORAGE_HPP_INCLUDED
 | 
			
		||||
							
								
								
									
										24
									
								
								xs/src/boost/call_traits.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								xs/src/boost/call_traits.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
 | 
			
		||||
//  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/utility for most recent version including documentation.
 | 
			
		||||
 | 
			
		||||
//  See boost/detail/call_traits.hpp and boost/detail/ob_call_traits.hpp
 | 
			
		||||
//  for full copyright notices.
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CALL_TRAITS_HPP
 | 
			
		||||
#define BOOST_CALL_TRAITS_HPP
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_HPP
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 | 
			
		||||
#include <boost/detail/ob_call_traits.hpp>
 | 
			
		||||
#else
 | 
			
		||||
#include <boost/detail/call_traits.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CALL_TRAITS_HPP
 | 
			
		||||
							
								
								
									
										331
									
								
								xs/src/boost/cerrno.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										331
									
								
								xs/src/boost/cerrno.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,331 @@
 | 
			
		|||
//  Boost cerrno.hpp header  -------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright Beman Dawes 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)
 | 
			
		||||
 | 
			
		||||
//  See library home page at http://www.boost.org/libs/system
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CERRNO_HPP
 | 
			
		||||
#define BOOST_CERRNO_HPP
 | 
			
		||||
 | 
			
		||||
#include <cerrno>
 | 
			
		||||
 | 
			
		||||
//  supply errno values likely to be missing, particularly on Windows
 | 
			
		||||
 | 
			
		||||
#ifndef EAFNOSUPPORT
 | 
			
		||||
#define EAFNOSUPPORT 9901
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EADDRINUSE
 | 
			
		||||
#define EADDRINUSE 9902
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EADDRNOTAVAIL
 | 
			
		||||
#define EADDRNOTAVAIL 9903
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EISCONN
 | 
			
		||||
#define EISCONN 9904
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EBADMSG
 | 
			
		||||
#define EBADMSG 9905
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ECONNABORTED
 | 
			
		||||
#define ECONNABORTED 9906
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EALREADY
 | 
			
		||||
#define EALREADY 9907
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ECONNREFUSED
 | 
			
		||||
#define ECONNREFUSED 9908
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ECONNRESET
 | 
			
		||||
#define ECONNRESET 9909
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EDESTADDRREQ
 | 
			
		||||
#define EDESTADDRREQ 9910
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EHOSTUNREACH
 | 
			
		||||
#define EHOSTUNREACH 9911
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EIDRM
 | 
			
		||||
#define EIDRM 9912
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EMSGSIZE
 | 
			
		||||
#define EMSGSIZE 9913
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENETDOWN
 | 
			
		||||
#define ENETDOWN 9914
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENETRESET
 | 
			
		||||
#define ENETRESET 9915
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENETUNREACH
 | 
			
		||||
#define ENETUNREACH 9916
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOBUFS
 | 
			
		||||
#define ENOBUFS 9917
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOLINK
 | 
			
		||||
#define ENOLINK 9918
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENODATA
 | 
			
		||||
#define ENODATA 9919
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOMSG
 | 
			
		||||
#define ENOMSG 9920
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOPROTOOPT
 | 
			
		||||
#define ENOPROTOOPT 9921
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOSR
 | 
			
		||||
#define ENOSR 9922
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTSOCK
 | 
			
		||||
#define ENOTSOCK 9923
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOSTR
 | 
			
		||||
#define ENOSTR 9924
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTCONN
 | 
			
		||||
#define ENOTCONN 9925
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTSUP
 | 
			
		||||
#define ENOTSUP 9926
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ECANCELED
 | 
			
		||||
#define ECANCELED 9927
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EINPROGRESS
 | 
			
		||||
#define EINPROGRESS 9928
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EOPNOTSUPP
 | 
			
		||||
#define EOPNOTSUPP 9929
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EWOULDBLOCK
 | 
			
		||||
#define EWOULDBLOCK 9930
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EOWNERDEAD
 | 
			
		||||
#define EOWNERDEAD  9931
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EPROTO
 | 
			
		||||
#define EPROTO 9932
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EPROTONOSUPPORT
 | 
			
		||||
#define EPROTONOSUPPORT 9933
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTRECOVERABLE
 | 
			
		||||
#define ENOTRECOVERABLE 9934
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ETIME
 | 
			
		||||
#define ETIME 9935
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ETXTBSY
 | 
			
		||||
#define ETXTBSY 9936
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ETIMEDOUT
 | 
			
		||||
#define ETIMEDOUT 9938
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ELOOP
 | 
			
		||||
#define ELOOP 9939
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EOVERFLOW
 | 
			
		||||
#define EOVERFLOW 9940
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EPROTOTYPE
 | 
			
		||||
#define EPROTOTYPE 9941
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOSYS
 | 
			
		||||
#define ENOSYS 9942
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EINVAL
 | 
			
		||||
#define EINVAL 9943
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ERANGE
 | 
			
		||||
#define ERANGE 9944
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EILSEQ
 | 
			
		||||
#define EILSEQ 9945
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//  Windows Mobile doesn't appear to define these:
 | 
			
		||||
 | 
			
		||||
#ifndef E2BIG
 | 
			
		||||
#define E2BIG 9946
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EDOM
 | 
			
		||||
#define EDOM 9947
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EFAULT
 | 
			
		||||
#define EFAULT 9948
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EBADF
 | 
			
		||||
#define EBADF 9949
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EPIPE
 | 
			
		||||
#define EPIPE 9950
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EXDEV
 | 
			
		||||
#define EXDEV 9951
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EBUSY
 | 
			
		||||
#define EBUSY 9952
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTEMPTY
 | 
			
		||||
#define ENOTEMPTY 9953
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOEXEC
 | 
			
		||||
#define ENOEXEC 9954
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EEXIST
 | 
			
		||||
#define EEXIST 9955
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EFBIG
 | 
			
		||||
#define EFBIG 9956
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENAMETOOLONG
 | 
			
		||||
#define ENAMETOOLONG 9957
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTTY
 | 
			
		||||
#define ENOTTY 9958
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EINTR
 | 
			
		||||
#define EINTR 9959
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ESPIPE
 | 
			
		||||
#define ESPIPE 9960
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EIO
 | 
			
		||||
#define EIO 9961
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EISDIR
 | 
			
		||||
#define EISDIR 9962
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ECHILD
 | 
			
		||||
#define ECHILD 9963
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOLCK
 | 
			
		||||
#define ENOLCK 9964
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOSPC
 | 
			
		||||
#define ENOSPC 9965
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENXIO
 | 
			
		||||
#define ENXIO 9966
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENODEV
 | 
			
		||||
#define ENODEV 9967
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOENT
 | 
			
		||||
#define ENOENT 9968
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ESRCH
 | 
			
		||||
#define ESRCH 9969
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOTDIR
 | 
			
		||||
#define ENOTDIR 9970
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENOMEM
 | 
			
		||||
#define ENOMEM 9971
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EPERM
 | 
			
		||||
#define EPERM 9972
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EACCES
 | 
			
		||||
#define EACCES 9973
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EROFS
 | 
			
		||||
#define EROFS 9974
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EDEADLK
 | 
			
		||||
#define EDEADLK 9975
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EAGAIN
 | 
			
		||||
#define EAGAIN 9976
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef ENFILE
 | 
			
		||||
#define ENFILE 9977
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EMFILE
 | 
			
		||||
#define EMFILE 9978
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef EMLINK
 | 
			
		||||
#define EMLINK 9979
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // include guard
 | 
			
		||||
							
								
								
									
										69
									
								
								xs/src/boost/checked_delete.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										69
									
								
								xs/src/boost/checked_delete.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
#ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
 | 
			
		||||
#define BOOST_CHECKED_DELETE_HPP_INCLUDED
 | 
			
		||||
 | 
			
		||||
// MS compatible compilers support #pragma once
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 | 
			
		||||
# pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
//  boost/checked_delete.hpp
 | 
			
		||||
//
 | 
			
		||||
//  Copyright (c) 2002, 2003 Peter Dimov
 | 
			
		||||
//  Copyright (c) 2003 Daniel Frey
 | 
			
		||||
//  Copyright (c) 2003 Howard Hinnant
 | 
			
		||||
//
 | 
			
		||||
//  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/utility/checked_delete.html for documentation.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
// verify that types are complete for increased safety
 | 
			
		||||
 | 
			
		||||
template<class T> inline void checked_delete(T * x)
 | 
			
		||||
{
 | 
			
		||||
    // intentionally complex - simplification causes regressions
 | 
			
		||||
    typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
 | 
			
		||||
    (void) sizeof(type_must_be_complete);
 | 
			
		||||
    delete x;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class T> inline void checked_array_delete(T * x)
 | 
			
		||||
{
 | 
			
		||||
    typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
 | 
			
		||||
    (void) sizeof(type_must_be_complete);
 | 
			
		||||
    delete [] x;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template<class T> struct checked_deleter
 | 
			
		||||
{
 | 
			
		||||
    typedef void result_type;
 | 
			
		||||
    typedef T * argument_type;
 | 
			
		||||
 | 
			
		||||
    void operator()(T * x) const
 | 
			
		||||
    {
 | 
			
		||||
        // boost:: disables ADL
 | 
			
		||||
        boost::checked_delete(x);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
template<class T> struct checked_array_deleter
 | 
			
		||||
{
 | 
			
		||||
    typedef void result_type;
 | 
			
		||||
    typedef T * argument_type;
 | 
			
		||||
 | 
			
		||||
    void operator()(T * x) const
 | 
			
		||||
    {
 | 
			
		||||
        boost::checked_array_delete(x);
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#endif  // #ifndef BOOST_CHECKED_DELETE_HPP_INCLUDED
 | 
			
		||||
							
								
								
									
										15
									
								
								xs/src/boost/chrono/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								xs/src/boost/chrono/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
//  chrono.hpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright 2009-2011 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_CHRONO_HPP
 | 
			
		||||
#define BOOST_CHRONO_CHRONO_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/chrono/duration.hpp>
 | 
			
		||||
#include <boost/chrono/time_point.hpp>
 | 
			
		||||
#include <boost/chrono/system_clocks.hpp>
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CHRONO_CHRONO_HPP
 | 
			
		||||
							
								
								
									
										25
									
								
								xs/src/boost/chrono/clock_string.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								xs/src/boost/chrono/clock_string.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
//
 | 
			
		||||
//  (C) Copyright 2010-2011 Vicente J. Botet Escriba
 | 
			
		||||
//  Use, modification and distribution are subject to the Boost Software License,
 | 
			
		||||
//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 | 
			
		||||
//  http://www.boost.org/LICENSE_1_0.txt).
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_CLOCK_STRING_HPP
 | 
			
		||||
#define BOOST_CHRONO_CLOCK_STRING_HPP
 | 
			
		||||
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
  namespace chrono
 | 
			
		||||
  {
 | 
			
		||||
 | 
			
		||||
    template<class Clock, class CharT>
 | 
			
		||||
    struct clock_string;
 | 
			
		||||
 | 
			
		||||
  } // chrono
 | 
			
		||||
 | 
			
		||||
} // boost
 | 
			
		||||
 | 
			
		||||
#endif  // BOOST_CHRONO_CLOCK_STRING_HPP
 | 
			
		||||
							
								
								
									
										220
									
								
								xs/src/boost/chrono/config.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										220
									
								
								xs/src/boost/chrono/config.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,220 @@
 | 
			
		|||
//  boost/chrono/config.hpp  -------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright Beman Dawes 2003, 2006, 2008
 | 
			
		||||
//  Copyright 2009-2011 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0. (See accompanying
 | 
			
		||||
//  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
 | 
			
		||||
//  See http://www.boost.org/libs/chrono for documentation.
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_CONFIG_HPP
 | 
			
		||||
#define BOOST_CHRONO_CONFIG_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_VERSION
 | 
			
		||||
#define BOOST_CHRONO_VERSION 1
 | 
			
		||||
#else
 | 
			
		||||
#if BOOST_CHRONO_VERSION!=1  && BOOST_CHRONO_VERSION!=2
 | 
			
		||||
#error "BOOST_CHRONO_VERSION must be 1 or 2"
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_CHRONO_SOURCE) && !defined(BOOST_USE_WINDOWS_H)
 | 
			
		||||
#define BOOST_USE_WINDOWS_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if ! defined BOOST_CHRONO_PROVIDES_DATE_IO_FOR_SYSTEM_CLOCK_TIME_POINT \
 | 
			
		||||
    && ! defined BOOST_CHRONO_DONT_PROVIDE_DATE_IO_FOR_SYSTEM_CLOCK_TIME_POINT
 | 
			
		||||
 | 
			
		||||
# define BOOST_CHRONO_PROVIDES_DATE_IO_FOR_SYSTEM_CLOCK_TIME_POINT
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//  BOOST_CHRONO_POSIX_API, BOOST_CHRONO_MAC_API, or BOOST_CHRONO_WINDOWS_API
 | 
			
		||||
//  can be defined by the user to specify which API should be used
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_CHRONO_WINDOWS_API)
 | 
			
		||||
# warning Boost.Chrono will use the Windows API
 | 
			
		||||
#elif defined(BOOST_CHRONO_MAC_API)
 | 
			
		||||
# warning Boost.Chrono will use the Mac API
 | 
			
		||||
#elif defined(BOOST_CHRONO_POSIX_API)
 | 
			
		||||
# warning Boost.Chrono will use the POSIX API
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
# if defined( BOOST_CHRONO_WINDOWS_API ) && defined( BOOST_CHRONO_POSIX_API )
 | 
			
		||||
#   error both BOOST_CHRONO_WINDOWS_API and BOOST_CHRONO_POSIX_API are defined
 | 
			
		||||
# elif defined( BOOST_CHRONO_WINDOWS_API ) && defined( BOOST_CHRONO_MAC_API )
 | 
			
		||||
#   error both BOOST_CHRONO_WINDOWS_API and BOOST_CHRONO_MAC_API are defined
 | 
			
		||||
# elif defined( BOOST_CHRONO_MAC_API ) && defined( BOOST_CHRONO_POSIX_API )
 | 
			
		||||
#   error both BOOST_CHRONO_MAC_API and BOOST_CHRONO_POSIX_API are defined
 | 
			
		||||
# elif !defined( BOOST_CHRONO_WINDOWS_API ) && !defined( BOOST_CHRONO_MAC_API ) && !defined( BOOST_CHRONO_POSIX_API )
 | 
			
		||||
#   if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32))
 | 
			
		||||
#     define BOOST_CHRONO_WINDOWS_API
 | 
			
		||||
#   elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
 | 
			
		||||
#     define BOOST_CHRONO_MAC_API
 | 
			
		||||
#   else
 | 
			
		||||
#     define BOOST_CHRONO_POSIX_API
 | 
			
		||||
#   endif
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# if defined( BOOST_CHRONO_WINDOWS_API )
 | 
			
		||||
#   ifndef UNDER_CE
 | 
			
		||||
#     define BOOST_CHRONO_HAS_PROCESS_CLOCKS
 | 
			
		||||
#   endif
 | 
			
		||||
#   define BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
#   define BOOST_CHRONO_HAS_THREAD_CLOCK
 | 
			
		||||
#   define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# if defined( BOOST_CHRONO_MAC_API )
 | 
			
		||||
#   define BOOST_CHRONO_HAS_PROCESS_CLOCKS
 | 
			
		||||
#   define BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
#   define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# if defined( BOOST_CHRONO_POSIX_API )
 | 
			
		||||
#   define BOOST_CHRONO_HAS_PROCESS_CLOCKS
 | 
			
		||||
#   include <time.h>  //to check for CLOCK_REALTIME and CLOCK_MONOTONIC and _POSIX_THREAD_CPUTIME
 | 
			
		||||
#   if defined(CLOCK_MONOTONIC)
 | 
			
		||||
#      define BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
#   endif
 | 
			
		||||
#   if defined(_POSIX_THREAD_CPUTIME) && !defined(BOOST_DISABLE_THREADS)
 | 
			
		||||
#     define BOOST_CHRONO_HAS_THREAD_CLOCK
 | 
			
		||||
#     define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true
 | 
			
		||||
#   endif
 | 
			
		||||
#   if defined(CLOCK_THREAD_CPUTIME_ID) && !defined(BOOST_DISABLE_THREADS)
 | 
			
		||||
#     define BOOST_CHRONO_HAS_THREAD_CLOCK
 | 
			
		||||
#     define BOOST_CHRONO_THREAD_CLOCK_IS_STEADY true
 | 
			
		||||
#   endif
 | 
			
		||||
#   if defined(sun) || defined(__sun)
 | 
			
		||||
#     undef BOOST_CHRONO_HAS_THREAD_CLOCK
 | 
			
		||||
#     undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY
 | 
			
		||||
#   endif
 | 
			
		||||
#   if defined(__HP_aCC) && defined(__hpux)
 | 
			
		||||
#     undef BOOST_CHRONO_HAS_THREAD_CLOCK
 | 
			
		||||
#     undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY
 | 
			
		||||
#   endif
 | 
			
		||||
#   if defined(__VXWORKS__)
 | 
			
		||||
#     undef BOOST_CHRONO_HAS_PROCESS_CLOCKS
 | 
			
		||||
#   endif
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_CHRONO_THREAD_DISABLED) && defined(BOOST_CHRONO_HAS_THREAD_CLOCK)
 | 
			
		||||
#undef BOOST_CHRONO_HAS_THREAD_CLOCK
 | 
			
		||||
#undef BOOST_CHRONO_THREAD_CLOCK_IS_STEADY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//#undef BOOST_CHRONO_HAS_PROCESS_CLOCKS
 | 
			
		||||
 | 
			
		||||
// unicode support  ------------------------------//
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_NO_CXX11_UNICODE_LITERALS) || defined(BOOST_NO_CXX11_CHAR16_T) || defined(BOOST_NO_CXX11_CHAR32_T)
 | 
			
		||||
//~ #define BOOST_CHRONO_HAS_UNICODE_SUPPORT
 | 
			
		||||
#else
 | 
			
		||||
#define BOOST_CHRONO_HAS_UNICODE_SUPPORT 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if ! defined BOOST_NOEXCEPT
 | 
			
		||||
#if defined(BOOST_NO_CXX11_NOEXCEPT)
 | 
			
		||||
#define BOOST_NOEXCEPT
 | 
			
		||||
#else
 | 
			
		||||
#define BOOST_NOEXCEPT noexcept
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined( BOOST_NO_CXX11_NUMERIC_LIMITS )
 | 
			
		||||
#define BOOST_CHRONO_LIB_CONSTEXPR
 | 
			
		||||
#elif defined(_LIBCPP_VERSION) &&  !defined(_LIBCPP_CONSTEXPR)
 | 
			
		||||
  #define BOOST_CHRONO_LIB_CONSTEXPR
 | 
			
		||||
#else
 | 
			
		||||
  #define BOOST_CHRONO_LIB_CONSTEXPR BOOST_CONSTEXPR
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined( BOOST_NO_CXX11_NUMERIC_LIMITS )
 | 
			
		||||
#  define BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW throw()
 | 
			
		||||
#else
 | 
			
		||||
#ifdef BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#  define BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW throw()
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW noexcept
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING \
 | 
			
		||||
 && defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
#error "BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING && BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING defined"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined BOOST_CHRONO_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0 \
 | 
			
		||||
 && defined BOOST_CHRONO_DONT_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0
 | 
			
		||||
#error "BOOST_CHRONO_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0 && BOOST_CHRONO_DONT_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0 defined"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if ! defined BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING \
 | 
			
		||||
 && ! defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
#define BOOST_CHRONO_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (BOOST_CHRONO_VERSION == 2)
 | 
			
		||||
#if ! defined BOOST_CHRONO_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0 \
 | 
			
		||||
 && ! defined BOOST_CHRONO_DONT_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0
 | 
			
		||||
#define BOOST_CHRONO_DONT_PROVIDES_DEPRECATED_IO_SINCE_V2_0_0
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
#define BOOST_CHRONO_INLINE inline
 | 
			
		||||
#define BOOST_CHRONO_STATIC inline
 | 
			
		||||
#define BOOST_CHRONO_DECL
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#define BOOST_CHRONO_INLINE
 | 
			
		||||
#define BOOST_CHRONO_STATIC static
 | 
			
		||||
 | 
			
		||||
//  enable dynamic linking on Windows  ---------------------------------------//
 | 
			
		||||
 | 
			
		||||
// we need to import/export our code only if the user has specifically
 | 
			
		||||
// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
 | 
			
		||||
// libraries to be dynamically linked, or BOOST_CHRONO_DYN_LINK
 | 
			
		||||
// if they want just this one to be dynamically liked:
 | 
			
		||||
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CHRONO_DYN_LINK)
 | 
			
		||||
// export if this is our own source, otherwise import:
 | 
			
		||||
#ifdef BOOST_CHRONO_SOURCE
 | 
			
		||||
# define BOOST_CHRONO_DECL BOOST_SYMBOL_EXPORT
 | 
			
		||||
#else
 | 
			
		||||
# define BOOST_CHRONO_DECL BOOST_SYMBOL_IMPORT
 | 
			
		||||
#endif  // BOOST_CHRONO_SOURCE
 | 
			
		||||
#endif  // DYN_LINK
 | 
			
		||||
//
 | 
			
		||||
// if BOOST_CHRONO_DECL isn't defined yet define it now:
 | 
			
		||||
#ifndef BOOST_CHRONO_DECL
 | 
			
		||||
#define BOOST_CHRONO_DECL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//  enable automatic library variant selection  ------------------------------//
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_CHRONO_SOURCE) && !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_CHRONO_NO_LIB)
 | 
			
		||||
//
 | 
			
		||||
// Set the name of our library; this will get undef'ed by auto_link.hpp
 | 
			
		||||
// once it's done with it:
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_LIB_NAME boost_chrono
 | 
			
		||||
//
 | 
			
		||||
// If we're importing code from a dll, then tell auto_link.hpp about it:
 | 
			
		||||
//
 | 
			
		||||
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_CHRONO_DYN_LINK)
 | 
			
		||||
#  define BOOST_DYN_LINK
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// And include the header that does the work:
 | 
			
		||||
//
 | 
			
		||||
#include <boost/config/auto_link.hpp>
 | 
			
		||||
#endif  // auto-linking disabled
 | 
			
		||||
#endif // BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
#endif // BOOST_CHRONO_CONFIG_HPP
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										44
									
								
								xs/src/boost/chrono/detail/inlined/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								xs/src/boost/chrono/detail/inlined/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
//  chrono.cpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright Beman Dawes 2008
 | 
			
		||||
//  Copyright Vicente J. Botet Escriba 2009
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_DETAIL_INLINED_CHRONO_HPP
 | 
			
		||||
#define BOOST_CHRONO_DETAIL_INLINED_CHRONO_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/version.hpp>
 | 
			
		||||
#include <boost/chrono/chrono.hpp>
 | 
			
		||||
#include <boost/system/system_error.hpp>
 | 
			
		||||
#include <boost/throw_exception.hpp>
 | 
			
		||||
#include <boost/chrono/detail/system.hpp>
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//                     Platform-specific Implementations                      //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                Windows                                     //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
#if defined(BOOST_CHRONO_WINDOWS_API)
 | 
			
		||||
#include <boost/chrono/detail/inlined/win/chrono.hpp>
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                 Mac                                        //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
#elif defined(BOOST_CHRONO_MAC_API)
 | 
			
		||||
#include <boost/chrono/detail/inlined/mac/chrono.hpp>
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                POSIX                                     //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
#elif defined(BOOST_CHRONO_POSIX_API)
 | 
			
		||||
#include <boost/chrono/detail/inlined/posix/chrono.hpp>
 | 
			
		||||
 | 
			
		||||
#endif  // POSIX
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										241
									
								
								xs/src/boost/chrono/detail/inlined/mac/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										241
									
								
								xs/src/boost/chrono/detail/inlined/mac/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,241 @@
 | 
			
		|||
//  mac/chrono.cpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright Beman Dawes 2008
 | 
			
		||||
//  Copyright 2009-2010 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                 Mac                                        //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
#include <sys/time.h> //for gettimeofday and timeval
 | 
			
		||||
#include <mach/mach_time.h>  // mach_absolute_time, mach_timebase_info_data_t
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
namespace chrono
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
// system_clock
 | 
			
		||||
 | 
			
		||||
// gettimeofday is the most precise "system time" available on this platform.
 | 
			
		||||
// It returns the number of microseconds since New Years 1970 in a struct called timeval
 | 
			
		||||
// which has a field for seconds and a field for microseconds.
 | 
			
		||||
//    Fill in the timeval and then convert that to the time_point
 | 
			
		||||
system_clock::time_point
 | 
			
		||||
system_clock::now() BOOST_NOEXCEPT
 | 
			
		||||
{
 | 
			
		||||
    timeval tv;
 | 
			
		||||
    gettimeofday(&tv, 0);
 | 
			
		||||
    return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
system_clock::time_point
 | 
			
		||||
system_clock::now(system::error_code & ec)
 | 
			
		||||
{
 | 
			
		||||
    timeval tv;
 | 
			
		||||
    gettimeofday(&tv, 0);
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec)) 
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return time_point(seconds(tv.tv_sec) + microseconds(tv.tv_usec));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
// Take advantage of the fact that on this platform time_t is nothing but
 | 
			
		||||
//    an integral count of seconds since New Years 1970 (same epoch as timeval).
 | 
			
		||||
//    Just get the duration out of the time_point and truncate it to seconds.
 | 
			
		||||
time_t
 | 
			
		||||
system_clock::to_time_t(const time_point& t) BOOST_NOEXCEPT
 | 
			
		||||
{
 | 
			
		||||
    return time_t(duration_cast<seconds>(t.time_since_epoch()).count());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Just turn the time_t into a count of seconds and construct a time_point with it.
 | 
			
		||||
system_clock::time_point
 | 
			
		||||
system_clock::from_time_t(time_t t) BOOST_NOEXCEPT
 | 
			
		||||
{
 | 
			
		||||
    return system_clock::time_point(seconds(t));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace chrono_detail
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
// steady_clock
 | 
			
		||||
 | 
			
		||||
// Note, in this implementation steady_clock and high_resolution_clock
 | 
			
		||||
//   are the same clock.  They are both based on mach_absolute_time().
 | 
			
		||||
//   mach_absolute_time() * MachInfo.numer / MachInfo.denom is the number of
 | 
			
		||||
//   nanoseconds since the computer booted up.  MachInfo.numer and MachInfo.denom
 | 
			
		||||
//   are run time constants supplied by the OS.  This clock has no relationship
 | 
			
		||||
//   to the Gregorian calendar.  It's main use is as a high resolution timer.
 | 
			
		||||
 | 
			
		||||
// MachInfo.numer / MachInfo.denom is often 1 on the latest equipment.  Specialize
 | 
			
		||||
//   for that case as an optimization.
 | 
			
		||||
BOOST_CHRONO_STATIC
 | 
			
		||||
steady_clock::rep
 | 
			
		||||
steady_simplified()
 | 
			
		||||
{
 | 
			
		||||
    return mach_absolute_time();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
BOOST_CHRONO_STATIC
 | 
			
		||||
steady_clock::rep
 | 
			
		||||
steady_simplified_ec(system::error_code & ec)
 | 
			
		||||
{
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec)) 
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return mach_absolute_time();
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
BOOST_CHRONO_STATIC
 | 
			
		||||
double
 | 
			
		||||
compute_steady_factor(kern_return_t& err)
 | 
			
		||||
{
 | 
			
		||||
    mach_timebase_info_data_t MachInfo;
 | 
			
		||||
    err = mach_timebase_info(&MachInfo);
 | 
			
		||||
    if ( err != 0  ) {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
    return static_cast<double>(MachInfo.numer) / MachInfo.denom;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
BOOST_CHRONO_STATIC
 | 
			
		||||
steady_clock::rep
 | 
			
		||||
steady_full()
 | 
			
		||||
{
 | 
			
		||||
    static kern_return_t err;
 | 
			
		||||
    static const double factor = chrono_detail::compute_steady_factor(err);
 | 
			
		||||
    if (err != 0) 
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_ASSERT(0 && "Boost::Chrono - Internal Error");
 | 
			
		||||
    }
 | 
			
		||||
    return static_cast<steady_clock::rep>(mach_absolute_time() * factor);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
BOOST_CHRONO_STATIC
 | 
			
		||||
steady_clock::rep
 | 
			
		||||
steady_full_ec(system::error_code & ec)
 | 
			
		||||
{
 | 
			
		||||
    static kern_return_t err;
 | 
			
		||||
    static const double factor = chrono_detail::compute_steady_factor(err);
 | 
			
		||||
    if (err != 0) 
 | 
			
		||||
    {
 | 
			
		||||
        if (BOOST_CHRONO_IS_THROWS(ec))
 | 
			
		||||
        {
 | 
			
		||||
            boost::throw_exception(
 | 
			
		||||
                    system::system_error( 
 | 
			
		||||
                            err, 
 | 
			
		||||
                            BOOST_CHRONO_SYSTEM_CATEGORY, 
 | 
			
		||||
                            "chrono::steady_clock" ));
 | 
			
		||||
        } 
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            ec.assign( errno, BOOST_CHRONO_SYSTEM_CATEGORY );
 | 
			
		||||
            return steady_clock::rep();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec)) 
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return static_cast<steady_clock::rep>(mach_absolute_time() * factor);
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
typedef steady_clock::rep (*FP)();
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
typedef steady_clock::rep (*FP_ec)(system::error_code &);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
BOOST_CHRONO_STATIC
 | 
			
		||||
FP
 | 
			
		||||
init_steady_clock(kern_return_t & err)
 | 
			
		||||
{
 | 
			
		||||
    mach_timebase_info_data_t MachInfo;
 | 
			
		||||
    err = mach_timebase_info(&MachInfo);
 | 
			
		||||
    if ( err != 0  ) 
 | 
			
		||||
    {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (MachInfo.numer == MachInfo.denom)
 | 
			
		||||
    {
 | 
			
		||||
        return &chrono_detail::steady_simplified;
 | 
			
		||||
    }
 | 
			
		||||
    return &chrono_detail::steady_full;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
BOOST_CHRONO_STATIC
 | 
			
		||||
FP_ec
 | 
			
		||||
init_steady_clock_ec(kern_return_t & err)
 | 
			
		||||
{
 | 
			
		||||
    mach_timebase_info_data_t MachInfo;
 | 
			
		||||
    err = mach_timebase_info(&MachInfo);
 | 
			
		||||
    if ( err != 0  ) 
 | 
			
		||||
    {
 | 
			
		||||
        return 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (MachInfo.numer == MachInfo.denom) 
 | 
			
		||||
    {
 | 
			
		||||
        return &chrono_detail::steady_simplified_ec;
 | 
			
		||||
    }
 | 
			
		||||
    return &chrono_detail::steady_full_ec;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
steady_clock::time_point
 | 
			
		||||
steady_clock::now() BOOST_NOEXCEPT
 | 
			
		||||
{
 | 
			
		||||
    static kern_return_t err;
 | 
			
		||||
    static chrono_detail::FP fp = chrono_detail::init_steady_clock(err);
 | 
			
		||||
    if ( err != 0  ) 
 | 
			
		||||
    {     
 | 
			
		||||
      BOOST_ASSERT(0 && "Boost::Chrono - Internal Error");
 | 
			
		||||
    }
 | 
			
		||||
    return time_point(duration(fp()));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
steady_clock::time_point
 | 
			
		||||
steady_clock::now(system::error_code & ec)
 | 
			
		||||
{
 | 
			
		||||
    static kern_return_t err;
 | 
			
		||||
    static chrono_detail::FP_ec fp = chrono_detail::init_steady_clock_ec(err);
 | 
			
		||||
    if ( err != 0  ) 
 | 
			
		||||
    {
 | 
			
		||||
        if (BOOST_CHRONO_IS_THROWS(ec))
 | 
			
		||||
        {
 | 
			
		||||
            boost::throw_exception(
 | 
			
		||||
                    system::system_error( 
 | 
			
		||||
                            err, 
 | 
			
		||||
                            BOOST_CHRONO_SYSTEM_CATEGORY, 
 | 
			
		||||
                            "chrono::steady_clock" ));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            ec.assign( err, BOOST_CHRONO_SYSTEM_CATEGORY );
 | 
			
		||||
            return time_point();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec)) 
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return time_point(duration(fp(ec)));
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
}  // namespace chrono
 | 
			
		||||
}  // namespace boost
 | 
			
		||||
							
								
								
									
										120
									
								
								xs/src/boost/chrono/detail/inlined/posix/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								xs/src/boost/chrono/detail/inlined/posix/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,120 @@
 | 
			
		|||
//  posix/chrono.cpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright Beman Dawes 2008
 | 
			
		||||
//  Copyright Vicente J. Botet Escriba 2009
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                POSIX                                     //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
#include <time.h>  // for clock_gettime
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
namespace chrono
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  system_clock::time_point system_clock::now() BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
    timespec ts;
 | 
			
		||||
    if ( ::clock_gettime( CLOCK_REALTIME, &ts ) )
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_ASSERT(0 && "Boost::Chrono - Internal Error");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return time_point(duration(
 | 
			
		||||
      static_cast<system_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
  system_clock::time_point system_clock::now(system::error_code & ec)
 | 
			
		||||
  {
 | 
			
		||||
    timespec ts;
 | 
			
		||||
    if ( ::clock_gettime( CLOCK_REALTIME, &ts ) )
 | 
			
		||||
    {
 | 
			
		||||
        if (BOOST_CHRONO_IS_THROWS(ec))
 | 
			
		||||
        {
 | 
			
		||||
            boost::throw_exception(
 | 
			
		||||
                    system::system_error( 
 | 
			
		||||
                            errno, 
 | 
			
		||||
                            BOOST_CHRONO_SYSTEM_CATEGORY, 
 | 
			
		||||
                            "chrono::system_clock" ));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            ec.assign( errno, BOOST_CHRONO_SYSTEM_CATEGORY );
 | 
			
		||||
            return time_point();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec)) 
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return time_point(duration(
 | 
			
		||||
      static_cast<system_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  std::time_t system_clock::to_time_t(const system_clock::time_point& t) BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
      return static_cast<std::time_t>( t.time_since_epoch().count() / 1000000000 );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  system_clock::time_point system_clock::from_time_t(std::time_t t) BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
      return time_point(duration(static_cast<system_clock::rep>(t) * 1000000000));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
 | 
			
		||||
  steady_clock::time_point steady_clock::now() BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
    timespec ts;
 | 
			
		||||
    if ( ::clock_gettime( CLOCK_MONOTONIC, &ts ) )
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_ASSERT(0 && "Boost::Chrono - Internal Error");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return time_point(duration(
 | 
			
		||||
      static_cast<steady_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
  steady_clock::time_point steady_clock::now(system::error_code & ec)
 | 
			
		||||
  {
 | 
			
		||||
    timespec ts;
 | 
			
		||||
    if ( ::clock_gettime( CLOCK_MONOTONIC, &ts ) )
 | 
			
		||||
    {
 | 
			
		||||
        if (BOOST_CHRONO_IS_THROWS(ec))
 | 
			
		||||
        {
 | 
			
		||||
            boost::throw_exception(
 | 
			
		||||
                    system::system_error( 
 | 
			
		||||
                            errno, 
 | 
			
		||||
                            BOOST_CHRONO_SYSTEM_CATEGORY, 
 | 
			
		||||
                            "chrono::steady_clock" ));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            ec.assign( errno, BOOST_CHRONO_SYSTEM_CATEGORY );
 | 
			
		||||
            return time_point();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec)) 
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return time_point(duration(
 | 
			
		||||
      static_cast<steady_clock::rep>( ts.tv_sec ) * 1000000000 + ts.tv_nsec));
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
}  // namespace chrono
 | 
			
		||||
}  // namespace boost
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										139
									
								
								xs/src/boost/chrono/detail/inlined/win/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								xs/src/boost/chrono/detail/inlined/win/chrono.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,139 @@
 | 
			
		|||
//  win/chrono.cpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright Beman Dawes 2008
 | 
			
		||||
//  Copyright 2009-2010 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                Windows                                     //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
#ifndef BOOST_CHRONO_DETAIL_INLINED_WIN_CHRONO_HPP
 | 
			
		||||
#define BOOST_CHRONO_DETAIL_INLINED_WIN_CHRONO_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/detail/winapi/time.hpp>
 | 
			
		||||
#include <boost/detail/winapi/timers.hpp>
 | 
			
		||||
#include <boost/detail/winapi/GetLastError.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
namespace chrono
 | 
			
		||||
{
 | 
			
		||||
namespace chrono_detail
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  BOOST_CHRONO_INLINE double get_nanosecs_per_tic() BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
      boost::detail::winapi::LARGE_INTEGER_ freq;
 | 
			
		||||
      if ( !boost::detail::winapi::QueryPerformanceFrequency( &freq ) )
 | 
			
		||||
          return 0.0L;
 | 
			
		||||
      return double(1000000000.0L / freq.QuadPart);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  steady_clock::time_point steady_clock::now() BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
    static double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic();
 | 
			
		||||
 | 
			
		||||
    boost::detail::winapi::LARGE_INTEGER_ pcount;
 | 
			
		||||
    if ( (nanosecs_per_tic <= 0.0L) ||
 | 
			
		||||
            (!boost::detail::winapi::QueryPerformanceCounter( &pcount )) )
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_ASSERT(0 && "Boost::Chrono - Internal Error");
 | 
			
		||||
      return steady_clock::time_point();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return steady_clock::time_point(steady_clock::duration(
 | 
			
		||||
      static_cast<steady_clock::rep>((nanosecs_per_tic) * pcount.QuadPart)));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
  steady_clock::time_point steady_clock::now( system::error_code & ec )
 | 
			
		||||
  {
 | 
			
		||||
    static double nanosecs_per_tic = chrono_detail::get_nanosecs_per_tic();
 | 
			
		||||
 | 
			
		||||
    boost::detail::winapi::LARGE_INTEGER_ pcount;
 | 
			
		||||
    if ( (nanosecs_per_tic <= 0.0L)
 | 
			
		||||
            || (!boost::detail::winapi::QueryPerformanceCounter( &pcount )) )
 | 
			
		||||
    {
 | 
			
		||||
        boost::detail::winapi::DWORD_ cause =
 | 
			
		||||
            ((nanosecs_per_tic <= 0.0L)
 | 
			
		||||
                    ? ERROR_NOT_SUPPORTED
 | 
			
		||||
                    : boost::detail::winapi::GetLastError());
 | 
			
		||||
        if (BOOST_CHRONO_IS_THROWS(ec)) {
 | 
			
		||||
            boost::throw_exception(
 | 
			
		||||
                    system::system_error(
 | 
			
		||||
                            cause,
 | 
			
		||||
                            BOOST_CHRONO_SYSTEM_CATEGORY,
 | 
			
		||||
                            "chrono::steady_clock" ));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            ec.assign( cause, BOOST_CHRONO_SYSTEM_CATEGORY );
 | 
			
		||||
            return steady_clock::time_point(duration(0));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec))
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return time_point(duration(
 | 
			
		||||
      static_cast<steady_clock::rep>(nanosecs_per_tic * pcount.QuadPart)));
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  BOOST_CHRONO_INLINE
 | 
			
		||||
  system_clock::time_point system_clock::now() BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
    boost::detail::winapi::FILETIME_ ft;
 | 
			
		||||
    boost::detail::winapi::GetSystemTimeAsFileTime( &ft );  // never fails
 | 
			
		||||
    return system_clock::time_point(
 | 
			
		||||
      system_clock::duration(
 | 
			
		||||
        ((static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime)
 | 
			
		||||
       -116444736000000000LL
 | 
			
		||||
      )
 | 
			
		||||
    );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
  BOOST_CHRONO_INLINE
 | 
			
		||||
  system_clock::time_point system_clock::now( system::error_code & ec )
 | 
			
		||||
  {
 | 
			
		||||
    boost::detail::winapi::FILETIME_ ft;
 | 
			
		||||
    boost::detail::winapi::GetSystemTimeAsFileTime( &ft );  // never fails
 | 
			
		||||
    if (!BOOST_CHRONO_IS_THROWS(ec))
 | 
			
		||||
    {
 | 
			
		||||
        ec.clear();
 | 
			
		||||
    }
 | 
			
		||||
    return system_clock::time_point(
 | 
			
		||||
      system_clock::duration(
 | 
			
		||||
       ((static_cast<__int64>( ft.dwHighDateTime ) << 32) | ft.dwLowDateTime)
 | 
			
		||||
       -116444736000000000LL
 | 
			
		||||
       ));
 | 
			
		||||
  }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
  BOOST_CHRONO_INLINE
 | 
			
		||||
  std::time_t system_clock::to_time_t(const system_clock::time_point& t) BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
      __int64 temp = t.time_since_epoch().count();
 | 
			
		||||
      temp /= 10000000;
 | 
			
		||||
      return static_cast<std::time_t>( temp );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  BOOST_CHRONO_INLINE
 | 
			
		||||
  system_clock::time_point system_clock::from_time_t(std::time_t t) BOOST_NOEXCEPT
 | 
			
		||||
  {
 | 
			
		||||
      __int64 temp = t;
 | 
			
		||||
      temp *= 10000000;
 | 
			
		||||
      return time_point(duration(temp));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}  // namespace chrono
 | 
			
		||||
}  // namespace boost
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										31
									
								
								xs/src/boost/chrono/detail/is_evenly_divisible_by.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								xs/src/boost/chrono/detail/is_evenly_divisible_by.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
//  is_evenly_divisible_by.hpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright 2009-2010 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_DETAIL_IS_EVENLY_DIVISIBLE_BY_HPP
 | 
			
		||||
#define BOOST_CHRONO_DETAIL_IS_EVENLY_DIVISIBLE_BY_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/chrono/config.hpp>
 | 
			
		||||
 | 
			
		||||
#include <boost/mpl/logical.hpp>
 | 
			
		||||
#include <boost/ratio/detail/overflow_helpers.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost {
 | 
			
		||||
namespace chrono {
 | 
			
		||||
namespace chrono_detail {
 | 
			
		||||
 | 
			
		||||
//  template <class R1, class R2>
 | 
			
		||||
//  struct is_evenly_divisible_by : public boost::mpl::bool_ < ratio_divide<R1, R2>::type::den == 1 >
 | 
			
		||||
//  {};
 | 
			
		||||
  template <class R1, class R2>
 | 
			
		||||
  struct is_evenly_divisible_by : public boost::ratio_detail::is_evenly_divisible_by<R1, R2>
 | 
			
		||||
  {};
 | 
			
		||||
 | 
			
		||||
} // namespace chrono_detail
 | 
			
		||||
} // namespace detail
 | 
			
		||||
} // namespace chrono
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CHRONO_DETAIL_IS_EVENLY_DIVISIBLE_BY_HPP
 | 
			
		||||
							
								
								
									
										30
									
								
								xs/src/boost/chrono/detail/static_assert.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								xs/src/boost/chrono/detail/static_assert.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
//  static_assert.hpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright 2009-2010 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_DETAIL_STATIC_ASSERT_HPP
 | 
			
		||||
#define BOOST_CHRONO_DETAIL_STATIC_ASSERT_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/chrono/config.hpp>
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) static_assert(CND,MSG)
 | 
			
		||||
#elif defined(BOOST_CHRONO_USES_STATIC_ASSERT)
 | 
			
		||||
#include <boost/static_assert.hpp>
 | 
			
		||||
#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) BOOST_STATIC_ASSERT(CND)
 | 
			
		||||
#elif defined(BOOST_CHRONO_USES_MPL_ASSERT)
 | 
			
		||||
#include <boost/mpl/assert.hpp>
 | 
			
		||||
#include <boost/mpl/bool.hpp>
 | 
			
		||||
#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES)                                 \
 | 
			
		||||
    BOOST_MPL_ASSERT_MSG(boost::mpl::bool_< (CND) >::type::value, MSG, TYPES)
 | 
			
		||||
#else
 | 
			
		||||
//~ #elif defined(BOOST_CHRONO_USES_ARRAY_ASSERT)
 | 
			
		||||
#define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES) static char BOOST_JOIN(boost_chrono_test_,__LINE__)[(CND)?1:-1]
 | 
			
		||||
//~ #define BOOST_CHRONO_STATIC_ASSERT(CND, MSG, TYPES)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CHRONO_DETAIL_STATIC_ASSERT_HPP
 | 
			
		||||
							
								
								
									
										29
									
								
								xs/src/boost/chrono/detail/system.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								xs/src/boost/chrono/detail/system.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
//  Copyright 2009-2010 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_DETAIL_SYSTEM_HPP
 | 
			
		||||
#define BOOST_CHRONO_DETAIL_SYSTEM_HPP
 | 
			
		||||
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
 | 
			
		||||
#include <boost/version.hpp>
 | 
			
		||||
#include <boost/system/error_code.hpp>
 | 
			
		||||
 | 
			
		||||
#if ((BOOST_VERSION / 100000) < 2) && ((BOOST_VERSION / 100 % 1000) < 44)
 | 
			
		||||
#define BOOST_CHRONO_SYSTEM_CATEGORY boost::system::system_category
 | 
			
		||||
#else
 | 
			
		||||
#define BOOST_CHRONO_SYSTEM_CATEGORY boost::system::system_category()
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_SYSTEM_NO_DEPRECATED
 | 
			
		||||
#define BOOST_CHRONO_THROWS boost::throws()
 | 
			
		||||
#define BOOST_CHRONO_IS_THROWS(EC) (&EC==&boost::throws())
 | 
			
		||||
#else
 | 
			
		||||
#define BOOST_CHRONO_THROWS boost::system::throws
 | 
			
		||||
#define BOOST_CHRONO_IS_THROWS(EC) (&EC==&boost::system::throws)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										794
									
								
								xs/src/boost/chrono/duration.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										794
									
								
								xs/src/boost/chrono/duration.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,794 @@
 | 
			
		|||
//  duration.hpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright 2008 Howard Hinnant
 | 
			
		||||
//  Copyright 2008 Beman Dawes
 | 
			
		||||
//  Copyright 2009-2011 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
This code was derived by Beman Dawes from Howard Hinnant's time2_demo prototype.
 | 
			
		||||
Many thanks to Howard for making his code available under the Boost license.
 | 
			
		||||
The original code was modified to conform to Boost conventions and to section
 | 
			
		||||
20.9 Time utilities [time] of the C++ committee's working paper N2798.
 | 
			
		||||
See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf.
 | 
			
		||||
 | 
			
		||||
time2_demo contained this comment:
 | 
			
		||||
 | 
			
		||||
    Much thanks to Andrei Alexandrescu,
 | 
			
		||||
                   Walter Brown,
 | 
			
		||||
                   Peter Dimov,
 | 
			
		||||
                   Jeff Garland,
 | 
			
		||||
                   Terry Golubiewski,
 | 
			
		||||
                   Daniel Krugler,
 | 
			
		||||
                   Anthony Williams.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_DURATION_HPP
 | 
			
		||||
#define BOOST_CHRONO_DURATION_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/chrono/config.hpp>
 | 
			
		||||
#include <boost/chrono/detail/static_assert.hpp>
 | 
			
		||||
 | 
			
		||||
#include <climits>
 | 
			
		||||
#include <limits>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <boost/mpl/logical.hpp>
 | 
			
		||||
#include <boost/ratio/ratio.hpp>
 | 
			
		||||
#include <boost/type_traits/common_type.hpp>
 | 
			
		||||
#include <boost/type_traits/is_arithmetic.hpp>
 | 
			
		||||
#include <boost/type_traits/is_convertible.hpp>
 | 
			
		||||
#include <boost/type_traits/is_floating_point.hpp>
 | 
			
		||||
#include <boost/type_traits/is_unsigned.hpp>
 | 
			
		||||
#include <boost/chrono/detail/is_evenly_divisible_by.hpp>
 | 
			
		||||
 | 
			
		||||
#include <boost/cstdint.hpp>
 | 
			
		||||
#include <boost/utility/enable_if.hpp>
 | 
			
		||||
#include <boost/detail/workaround.hpp>
 | 
			
		||||
#include <boost/integer_traits.hpp>
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) || !defined(BOOST_CHRONO_USES_MPL_ASSERT)
 | 
			
		||||
#define BOOST_CHRONO_A_DURATION_REPRESENTATION_CAN_NOT_BE_A_DURATION        "A duration representation can not be a duration"
 | 
			
		||||
#define BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_DURATION_MUST_BE_A_STD_RATIO "Second template parameter of duration must be a boost::ratio"
 | 
			
		||||
#define BOOST_CHRONO_DURATION_PERIOD_MUST_BE_POSITIVE "duration period must be positive"
 | 
			
		||||
#define BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_TIME_POINT_MUST_BE_A_BOOST_CHRONO_DURATION "Second template parameter of time_point must be a boost::chrono::duration"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
// this must occur after all of the includes and before any code appears:
 | 
			
		||||
#include <boost/config/abi_prefix.hpp> // must be the last #include
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//                        20.9 Time utilities [time]                          //
 | 
			
		||||
//                                 synopsis                                   //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
namespace boost {
 | 
			
		||||
namespace chrono {
 | 
			
		||||
 | 
			
		||||
    template <class Rep, class Period = ratio<1> >
 | 
			
		||||
    class duration;
 | 
			
		||||
 | 
			
		||||
    namespace detail
 | 
			
		||||
    {
 | 
			
		||||
    template <class T>
 | 
			
		||||
      struct is_duration
 | 
			
		||||
        : boost::false_type {};
 | 
			
		||||
 | 
			
		||||
    template <class Rep, class Period>
 | 
			
		||||
      struct is_duration<duration<Rep, Period> >
 | 
			
		||||
        : boost::true_type  {};
 | 
			
		||||
 | 
			
		||||
    template <class Duration, class Rep, bool = is_duration<Rep>::value>
 | 
			
		||||
    struct duration_divide_result
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Duration, class Rep2,
 | 
			
		||||
        bool = (
 | 
			
		||||
                    ((boost::is_convertible<typename Duration::rep,
 | 
			
		||||
                        typename common_type<typename Duration::rep, Rep2>::type>::value))
 | 
			
		||||
                &&  ((boost::is_convertible<Rep2,
 | 
			
		||||
                        typename common_type<typename Duration::rep, Rep2>::type>::value))
 | 
			
		||||
                )
 | 
			
		||||
        >
 | 
			
		||||
    struct duration_divide_imp
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    struct duration_divide_imp<duration<Rep1, Period>, Rep2, true>
 | 
			
		||||
    {
 | 
			
		||||
        typedef duration<typename common_type<Rep1, Rep2>::type, Period> type;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    struct duration_divide_result<duration<Rep1, Period>, Rep2, false>
 | 
			
		||||
        : duration_divide_imp<duration<Rep1, Period>, Rep2>
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
    template <class Rep, class Duration, bool = is_duration<Rep>::value>
 | 
			
		||||
    struct duration_divide_result2
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Rep, class Duration,
 | 
			
		||||
        bool = (
 | 
			
		||||
                    ((boost::is_convertible<typename Duration::rep,
 | 
			
		||||
                        typename common_type<typename Duration::rep, Rep>::type>::value))
 | 
			
		||||
                &&  ((boost::is_convertible<Rep,
 | 
			
		||||
                        typename common_type<typename Duration::rep, Rep>::type>::value))
 | 
			
		||||
                )
 | 
			
		||||
        >
 | 
			
		||||
    struct duration_divide_imp2
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Rep2, class Period >
 | 
			
		||||
    struct duration_divide_imp2<Rep1, duration<Rep2, Period>, true>
 | 
			
		||||
    {
 | 
			
		||||
        //typedef typename common_type<Rep1, Rep2>::type type;
 | 
			
		||||
        typedef double type;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Rep2, class Period >
 | 
			
		||||
    struct duration_divide_result2<Rep1, duration<Rep2, Period>, false>
 | 
			
		||||
        : duration_divide_imp2<Rep1, duration<Rep2, Period> >
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
///
 | 
			
		||||
    template <class Duration, class Rep, bool = is_duration<Rep>::value>
 | 
			
		||||
    struct duration_modulo_result
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Duration, class Rep2,
 | 
			
		||||
        bool = (
 | 
			
		||||
                    //boost::is_convertible<typename Duration::rep,
 | 
			
		||||
                        //typename common_type<typename Duration::rep, Rep2>::type>::value
 | 
			
		||||
                //&&
 | 
			
		||||
    boost::is_convertible<Rep2,
 | 
			
		||||
                        typename common_type<typename Duration::rep, Rep2>::type>::value
 | 
			
		||||
                )
 | 
			
		||||
        >
 | 
			
		||||
    struct duration_modulo_imp
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    struct duration_modulo_imp<duration<Rep1, Period>, Rep2, true>
 | 
			
		||||
    {
 | 
			
		||||
        typedef duration<typename common_type<Rep1, Rep2>::type, Period> type;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    struct duration_modulo_result<duration<Rep1, Period>, Rep2, false>
 | 
			
		||||
        : duration_modulo_imp<duration<Rep1, Period>, Rep2>
 | 
			
		||||
    {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
} // namespace detail
 | 
			
		||||
} // namespace chrono
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// common_type trait specializations
 | 
			
		||||
 | 
			
		||||
template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
struct common_type<chrono::duration<Rep1, Period1>,
 | 
			
		||||
                     chrono::duration<Rep2, Period2> >;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace chrono {
 | 
			
		||||
 | 
			
		||||
    // customization traits
 | 
			
		||||
    template <class Rep> struct treat_as_floating_point;
 | 
			
		||||
    template <class Rep> struct duration_values;
 | 
			
		||||
 | 
			
		||||
    // convenience typedefs
 | 
			
		||||
    typedef duration<boost::int_least64_t, nano> nanoseconds;    // at least 64 bits needed
 | 
			
		||||
    typedef duration<boost::int_least64_t, micro> microseconds;  // at least 55 bits needed
 | 
			
		||||
    typedef duration<boost::int_least64_t, milli> milliseconds;  // at least 45 bits needed
 | 
			
		||||
    typedef duration<boost::int_least64_t> seconds;              // at least 35 bits needed
 | 
			
		||||
    typedef duration<boost::int_least32_t, ratio< 60> > minutes; // at least 29 bits needed
 | 
			
		||||
    typedef duration<boost::int_least32_t, ratio<3600> > hours;  // at least 23 bits needed
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                          duration helpers                                  //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
namespace detail
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    // duration_cast
 | 
			
		||||
 | 
			
		||||
    // duration_cast is the heart of this whole prototype.  It can convert any
 | 
			
		||||
    //   duration to any other.  It is also (implicitly) used in converting
 | 
			
		||||
    //   time_points.  The conversion is always exact if possible.  And it is
 | 
			
		||||
    //   always as efficient as hand written code.  If different representations
 | 
			
		||||
    //   are involved, care is taken to never require implicit conversions.
 | 
			
		||||
    //   Instead static_cast is used explicitly for every required conversion.
 | 
			
		||||
    //   If there are a mixture of integral and floating point representations,
 | 
			
		||||
    //   the use of common_type ensures that the most logical "intermediate"
 | 
			
		||||
    //   representation is used.
 | 
			
		||||
    template <class FromDuration, class ToDuration,
 | 
			
		||||
              class Period,
 | 
			
		||||
              bool PeriodNumEq1,
 | 
			
		||||
              bool PeriodDenEq1>
 | 
			
		||||
    struct duration_cast_aux;
 | 
			
		||||
 | 
			
		||||
    // When the two periods are the same, all that is left to do is static_cast from
 | 
			
		||||
    //   the source representation to the target representation (which may be a no-op).
 | 
			
		||||
    //   This conversion is always exact as long as the static_cast from the source
 | 
			
		||||
    //   representation to the destination representation is exact.
 | 
			
		||||
    template <class FromDuration, class ToDuration, class Period>
 | 
			
		||||
    struct duration_cast_aux<FromDuration, ToDuration, Period, true, true>
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const
 | 
			
		||||
        {
 | 
			
		||||
            return ToDuration(static_cast<typename ToDuration::rep>(fd.count()));
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // When the numerator of FromPeriod / ToPeriod is 1, then all we need to do is
 | 
			
		||||
    //   divide by the denominator of FromPeriod / ToPeriod.  The common_type of
 | 
			
		||||
    //   the two representations is used for the intermediate computation before
 | 
			
		||||
    //   static_cast'ing to the destination.
 | 
			
		||||
    //   This conversion is generally not exact because of the division (but could be
 | 
			
		||||
    //   if you get lucky on the run time value of fd.count()).
 | 
			
		||||
    template <class FromDuration, class ToDuration, class Period>
 | 
			
		||||
    struct duration_cast_aux<FromDuration, ToDuration, Period, true, false>
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const
 | 
			
		||||
        {
 | 
			
		||||
            typedef typename common_type<
 | 
			
		||||
                typename ToDuration::rep,
 | 
			
		||||
                typename FromDuration::rep,
 | 
			
		||||
                boost::intmax_t>::type C;
 | 
			
		||||
            return ToDuration(static_cast<typename ToDuration::rep>(
 | 
			
		||||
                              static_cast<C>(fd.count()) / static_cast<C>(Period::den)));
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // When the denominator of FromPeriod / ToPeriod is 1, then all we need to do is
 | 
			
		||||
    //   multiply by the numerator of FromPeriod / ToPeriod.  The common_type of
 | 
			
		||||
    //   the two representations is used for the intermediate computation before
 | 
			
		||||
    //   static_cast'ing to the destination.
 | 
			
		||||
    //   This conversion is always exact as long as the static_cast's involved are exact.
 | 
			
		||||
    template <class FromDuration, class ToDuration, class Period>
 | 
			
		||||
    struct duration_cast_aux<FromDuration, ToDuration, Period, false, true>
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const
 | 
			
		||||
        {
 | 
			
		||||
            typedef typename common_type<
 | 
			
		||||
              typename ToDuration::rep,
 | 
			
		||||
              typename FromDuration::rep,
 | 
			
		||||
              boost::intmax_t>::type C;
 | 
			
		||||
            return ToDuration(static_cast<typename ToDuration::rep>(
 | 
			
		||||
                              static_cast<C>(fd.count()) * static_cast<C>(Period::num)));
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // When neither the numerator or denominator of FromPeriod / ToPeriod is 1, then we need to
 | 
			
		||||
    //   multiply by the numerator and divide by the denominator of FromPeriod / ToPeriod.  The
 | 
			
		||||
    //   common_type of the two representations is used for the intermediate computation before
 | 
			
		||||
    //   static_cast'ing to the destination.
 | 
			
		||||
    //   This conversion is generally not exact because of the division (but could be
 | 
			
		||||
    //   if you get lucky on the run time value of fd.count()).
 | 
			
		||||
    template <class FromDuration, class ToDuration, class Period>
 | 
			
		||||
    struct duration_cast_aux<FromDuration, ToDuration, Period, false, false>
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const
 | 
			
		||||
        {
 | 
			
		||||
            typedef typename common_type<
 | 
			
		||||
              typename ToDuration::rep,
 | 
			
		||||
              typename FromDuration::rep,
 | 
			
		||||
              boost::intmax_t>::type C;
 | 
			
		||||
            return ToDuration(static_cast<typename ToDuration::rep>(
 | 
			
		||||
               static_cast<C>(fd.count()) * static_cast<C>(Period::num)
 | 
			
		||||
                 / static_cast<C>(Period::den)));
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class FromDuration, class ToDuration>
 | 
			
		||||
    struct duration_cast {
 | 
			
		||||
        typedef typename ratio_divide<typename FromDuration::period,
 | 
			
		||||
              typename ToDuration::period>::type Period;
 | 
			
		||||
        typedef duration_cast_aux<
 | 
			
		||||
            FromDuration,
 | 
			
		||||
            ToDuration,
 | 
			
		||||
            Period,
 | 
			
		||||
            Period::num == 1,
 | 
			
		||||
            Period::den == 1
 | 
			
		||||
        > Aux;
 | 
			
		||||
        BOOST_CONSTEXPR ToDuration operator()(const FromDuration& fd) const
 | 
			
		||||
        {
 | 
			
		||||
            return Aux()(fd);
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
} // namespace detail
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//      20.9.2 Time-related traits [time.traits]                              //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.2.1 treat_as_floating_point [time.traits.is_fp]                        //
 | 
			
		||||
//      Probably should have been treat_as_floating_point. Editor notifed.    //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
    // Support bidirectional (non-exact) conversions for floating point rep types
 | 
			
		||||
    //   (or user defined rep types which specialize treat_as_floating_point).
 | 
			
		||||
    template <class Rep>
 | 
			
		||||
    struct treat_as_floating_point : boost::is_floating_point<Rep> {};
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.2.2 duration_values [time.traits.duration_values]                //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
namespace detail {
 | 
			
		||||
    template <class T, bool = is_arithmetic<T>::value>
 | 
			
		||||
    struct chrono_numeric_limits {
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR T lowest() BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW {return (std::numeric_limits<T>::min)  ();}
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class T>
 | 
			
		||||
    struct chrono_numeric_limits<T,true> {
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR T lowest() BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW {return (std::numeric_limits<T>::min)  ();}
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <>
 | 
			
		||||
    struct chrono_numeric_limits<float,true> {
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR float lowest() BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW
 | 
			
		||||
        {
 | 
			
		||||
            return -(std::numeric_limits<float>::max) ();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <>
 | 
			
		||||
    struct chrono_numeric_limits<double,true> {
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR double lowest() BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW
 | 
			
		||||
        {
 | 
			
		||||
            return -(std::numeric_limits<double>::max) ();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <>
 | 
			
		||||
    struct chrono_numeric_limits<long double,true> {
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR long double lowest() BOOST_CHRONO_LIB_NOEXCEPT_OR_THROW
 | 
			
		||||
        {
 | 
			
		||||
            return -(std::numeric_limits<long double>::max)();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class T>
 | 
			
		||||
    struct numeric_limits : chrono_numeric_limits<typename remove_cv<T>::type>
 | 
			
		||||
    {};
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
template <class Rep>
 | 
			
		||||
struct duration_values
 | 
			
		||||
{
 | 
			
		||||
    static BOOST_CONSTEXPR Rep zero() {return Rep(0);}
 | 
			
		||||
    static BOOST_CHRONO_LIB_CONSTEXPR Rep max BOOST_PREVENT_MACRO_SUBSTITUTION ()
 | 
			
		||||
    {
 | 
			
		||||
        return (std::numeric_limits<Rep>::max)();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    static BOOST_CHRONO_LIB_CONSTEXPR Rep min BOOST_PREVENT_MACRO_SUBSTITUTION ()
 | 
			
		||||
    {
 | 
			
		||||
        return detail::numeric_limits<Rep>::lowest();
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}  // namespace chrono
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.2.3 Specializations of common_type [time.traits.specializations] //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
struct common_type<chrono::duration<Rep1, Period1>,
 | 
			
		||||
                   chrono::duration<Rep2, Period2> >
 | 
			
		||||
{
 | 
			
		||||
  typedef chrono::duration<typename common_type<Rep1, Rep2>::type,
 | 
			
		||||
                      typename boost::ratio_gcd<Period1, Period2>::type> type;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//         20.9.3 Class template duration [time.duration]                     //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace chrono {
 | 
			
		||||
 | 
			
		||||
    template <class Rep, class Period>
 | 
			
		||||
    class BOOST_SYMBOL_VISIBLE duration
 | 
			
		||||
    {
 | 
			
		||||
    //BOOST_CHRONO_STATIC_ASSERT(boost::is_integral<Rep>::value, BOOST_CHRONO_A_DURATION_REPRESENTATION_MUST_BE_INTEGRAL, ());
 | 
			
		||||
    BOOST_CHRONO_STATIC_ASSERT(!boost::chrono::detail::is_duration<Rep>::value,
 | 
			
		||||
            BOOST_CHRONO_A_DURATION_REPRESENTATION_CAN_NOT_BE_A_DURATION, ());
 | 
			
		||||
    BOOST_CHRONO_STATIC_ASSERT(boost::ratio_detail::is_ratio<typename Period::type>::value,
 | 
			
		||||
            BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_DURATION_MUST_BE_A_STD_RATIO, ());
 | 
			
		||||
    BOOST_CHRONO_STATIC_ASSERT(Period::num>0,
 | 
			
		||||
            BOOST_CHRONO_DURATION_PERIOD_MUST_BE_POSITIVE, ());
 | 
			
		||||
    public:
 | 
			
		||||
        typedef Rep rep;
 | 
			
		||||
        typedef Period period;
 | 
			
		||||
    private:
 | 
			
		||||
        rep rep_;
 | 
			
		||||
    public:
 | 
			
		||||
 | 
			
		||||
        BOOST_FORCEINLINE BOOST_CONSTEXPR
 | 
			
		||||
        duration() : rep_(duration_values<rep>::zero()) { }
 | 
			
		||||
        template <class Rep2>
 | 
			
		||||
        BOOST_SYMBOL_VISIBLE BOOST_FORCEINLINE BOOST_CONSTEXPR
 | 
			
		||||
        explicit duration(const Rep2& r
 | 
			
		||||
        , typename boost::enable_if <
 | 
			
		||||
                    mpl::and_ <
 | 
			
		||||
                        boost::is_convertible<Rep2, rep>,
 | 
			
		||||
                        mpl::or_ <
 | 
			
		||||
                            treat_as_floating_point<rep>,
 | 
			
		||||
                            mpl::and_ <
 | 
			
		||||
                                mpl::not_ < treat_as_floating_point<rep> >,
 | 
			
		||||
                                mpl::not_ < treat_as_floating_point<Rep2> >
 | 
			
		||||
                            >
 | 
			
		||||
                        >
 | 
			
		||||
                    >
 | 
			
		||||
                >::type* = 0
 | 
			
		||||
            ) : rep_(r) { }
 | 
			
		||||
        //~duration() {} //= default;
 | 
			
		||||
//        BOOST_CONSTEXPR        duration(const duration& rhs) : rep_(rhs.rep_) {} // = default;
 | 
			
		||||
        duration& operator=(const duration& rhs) // = default;
 | 
			
		||||
        {
 | 
			
		||||
            if (&rhs != this) rep_= rhs.rep_;
 | 
			
		||||
            return *this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // conversions
 | 
			
		||||
        template <class Rep2, class Period2>
 | 
			
		||||
        BOOST_FORCEINLINE BOOST_CONSTEXPR
 | 
			
		||||
        duration(const duration<Rep2, Period2>& d
 | 
			
		||||
        , typename boost::enable_if <
 | 
			
		||||
                    mpl::or_ <
 | 
			
		||||
                        treat_as_floating_point<rep>,
 | 
			
		||||
                        mpl::and_ <
 | 
			
		||||
                            chrono_detail::is_evenly_divisible_by<Period2, period>,
 | 
			
		||||
                            mpl::not_ < treat_as_floating_point<Rep2> >
 | 
			
		||||
                        >
 | 
			
		||||
                    >
 | 
			
		||||
                >::type* = 0
 | 
			
		||||
        )
 | 
			
		||||
            : rep_(chrono::detail::duration_cast<duration<Rep2, Period2>, duration>()(d).count()) {}
 | 
			
		||||
 | 
			
		||||
        // observer
 | 
			
		||||
 | 
			
		||||
        BOOST_CONSTEXPR
 | 
			
		||||
        rep count() const {return rep_;}
 | 
			
		||||
 | 
			
		||||
        // arithmetic
 | 
			
		||||
 | 
			
		||||
        BOOST_CONSTEXPR
 | 
			
		||||
        duration  operator+() const {return duration(rep_);;}
 | 
			
		||||
        BOOST_CONSTEXPR
 | 
			
		||||
        duration  operator-() const {return duration(-rep_);}
 | 
			
		||||
        duration& operator++()      {++rep_; return *this;}
 | 
			
		||||
        duration  operator++(int)   {return duration(rep_++);}
 | 
			
		||||
        duration& operator--()      {--rep_; return *this;}
 | 
			
		||||
        duration  operator--(int)   {return duration(rep_--);}
 | 
			
		||||
 | 
			
		||||
        duration& operator+=(const duration& d)
 | 
			
		||||
        {
 | 
			
		||||
            rep_ += d.count(); return *this;
 | 
			
		||||
        }
 | 
			
		||||
        duration& operator-=(const duration& d)
 | 
			
		||||
        {
 | 
			
		||||
            rep_ -= d.count(); return *this;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        duration& operator*=(const rep& rhs) {rep_ *= rhs; return *this;}
 | 
			
		||||
        duration& operator/=(const rep& rhs) {rep_ /= rhs; return *this;}
 | 
			
		||||
        duration& operator%=(const rep& rhs) {rep_ %= rhs; return *this;}
 | 
			
		||||
        duration& operator%=(const duration& rhs)
 | 
			
		||||
        {
 | 
			
		||||
            rep_ %= rhs.count(); return *this;
 | 
			
		||||
        }
 | 
			
		||||
        // 20.9.3.4 duration special values [time.duration.special]
 | 
			
		||||
 | 
			
		||||
        static BOOST_CONSTEXPR duration zero()
 | 
			
		||||
        {
 | 
			
		||||
            return duration(duration_values<rep>::zero());
 | 
			
		||||
        }
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR duration min BOOST_PREVENT_MACRO_SUBSTITUTION ()
 | 
			
		||||
        {
 | 
			
		||||
            return duration((duration_values<rep>::min)());
 | 
			
		||||
        }
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR duration max BOOST_PREVENT_MACRO_SUBSTITUTION ()
 | 
			
		||||
        {
 | 
			
		||||
            return duration((duration_values<rep>::max)());
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.3.5 duration non-member arithmetic [time.duration.nonmember]     //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
    // Duration +
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2> >::type
 | 
			
		||||
    operator+(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
      typedef typename common_type<duration<Rep1, Period1>,
 | 
			
		||||
        duration<Rep2, Period2> >::type CD;
 | 
			
		||||
      return CD(CD(lhs).count()+CD(rhs).count());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration -
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2> >::type
 | 
			
		||||
    operator-(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
      typedef typename common_type<duration<Rep1, Period1>,
 | 
			
		||||
            duration<Rep2, Period2> >::type CD;
 | 
			
		||||
      return CD(CD(lhs).count()-CD(rhs).count());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration *
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename boost::enable_if <
 | 
			
		||||
        mpl::and_ <
 | 
			
		||||
        boost::is_convertible<Rep1, typename common_type<Rep1, Rep2>::type>,
 | 
			
		||||
        boost::is_convertible<Rep2, typename common_type<Rep1, Rep2>::type>
 | 
			
		||||
        >,
 | 
			
		||||
        duration<typename common_type<Rep1, Rep2>::type, Period>
 | 
			
		||||
    >::type
 | 
			
		||||
    operator*(const duration<Rep1, Period>& d, const Rep2& s)
 | 
			
		||||
    {
 | 
			
		||||
      typedef typename common_type<Rep1, Rep2>::type CR;
 | 
			
		||||
      typedef duration<CR, Period> CD;
 | 
			
		||||
      return CD(CD(d).count()*static_cast<CR>(s));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename boost::enable_if <
 | 
			
		||||
        mpl::and_ <
 | 
			
		||||
        boost::is_convertible<Rep1, typename common_type<Rep1, Rep2>::type>,
 | 
			
		||||
        boost::is_convertible<Rep2, typename common_type<Rep1, Rep2>::type>
 | 
			
		||||
        >,
 | 
			
		||||
        duration<typename common_type<Rep1, Rep2>::type, Period>
 | 
			
		||||
    >::type
 | 
			
		||||
    operator*(const Rep1& s, const duration<Rep2, Period>& d)
 | 
			
		||||
    {
 | 
			
		||||
        return d * s;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration /
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename boost::disable_if <boost::chrono::detail::is_duration<Rep2>,
 | 
			
		||||
      typename boost::chrono::detail::duration_divide_result<
 | 
			
		||||
        duration<Rep1, Period>, Rep2>::type
 | 
			
		||||
    >::type
 | 
			
		||||
    operator/(const duration<Rep1, Period>& d, const Rep2& s)
 | 
			
		||||
    {
 | 
			
		||||
        typedef typename common_type<Rep1, Rep2>::type CR;
 | 
			
		||||
        typedef duration<CR, Period> CD;
 | 
			
		||||
 | 
			
		||||
      return CD(CD(d).count()/static_cast<CR>(s));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename common_type<Rep1, Rep2>::type
 | 
			
		||||
    operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        typedef typename common_type<duration<Rep1, Period1>,
 | 
			
		||||
                                   duration<Rep2, Period2> >::type CD;
 | 
			
		||||
        return CD(lhs).count() / CD(rhs).count();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    #ifdef BOOST_CHRONO_EXTENSIONS
 | 
			
		||||
    template <class Rep1, class Rep2, class Period>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename boost::disable_if <boost::chrono::detail::is_duration<Rep1>,
 | 
			
		||||
      typename boost::chrono::detail::duration_divide_result2<
 | 
			
		||||
        Rep1, duration<Rep2, Period> >::type
 | 
			
		||||
      >::type
 | 
			
		||||
    operator/(const Rep1& s, const duration<Rep2, Period>& d)
 | 
			
		||||
    {
 | 
			
		||||
        typedef typename common_type<Rep1, Rep2>::type CR;
 | 
			
		||||
        typedef duration<CR, Period> CD;
 | 
			
		||||
 | 
			
		||||
      return static_cast<CR>(s)/CD(d).count();
 | 
			
		||||
    }
 | 
			
		||||
    #endif
 | 
			
		||||
    // Duration %
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period, class Rep2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename boost::disable_if <boost::chrono::detail::is_duration<Rep2>,
 | 
			
		||||
      typename boost::chrono::detail::duration_modulo_result<
 | 
			
		||||
        duration<Rep1, Period>, Rep2>::type
 | 
			
		||||
    >::type
 | 
			
		||||
    operator%(const duration<Rep1, Period>& d, const Rep2& s)
 | 
			
		||||
    {
 | 
			
		||||
        typedef typename common_type<Rep1, Rep2>::type CR;
 | 
			
		||||
        typedef duration<CR, Period> CD;
 | 
			
		||||
 | 
			
		||||
      return CD(CD(d).count()%static_cast<CR>(s));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename common_type<duration<Rep1, Period1>, duration<Rep2, Period2> >::type
 | 
			
		||||
    operator%(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs) {
 | 
			
		||||
        typedef typename common_type<duration<Rep1, Period1>,
 | 
			
		||||
                                 duration<Rep2, Period2> >::type CD;
 | 
			
		||||
 | 
			
		||||
      return CD(CD(lhs).count()%CD(rhs).count());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.3.6 duration comparisons [time.duration.comparisons]             //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
namespace detail
 | 
			
		||||
{
 | 
			
		||||
    template <class LhsDuration, class RhsDuration>
 | 
			
		||||
    struct duration_eq
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) const
 | 
			
		||||
        {
 | 
			
		||||
            typedef typename common_type<LhsDuration, RhsDuration>::type CD;
 | 
			
		||||
            return CD(lhs).count() == CD(rhs).count();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class LhsDuration>
 | 
			
		||||
    struct duration_eq<LhsDuration, LhsDuration>
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) const
 | 
			
		||||
        {
 | 
			
		||||
            return lhs.count() == rhs.count();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class LhsDuration, class RhsDuration>
 | 
			
		||||
    struct duration_lt
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const RhsDuration& rhs) const
 | 
			
		||||
        {
 | 
			
		||||
            typedef typename common_type<LhsDuration, RhsDuration>::type CD;
 | 
			
		||||
            return CD(lhs).count() < CD(rhs).count();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    template <class LhsDuration>
 | 
			
		||||
    struct duration_lt<LhsDuration, LhsDuration>
 | 
			
		||||
    {
 | 
			
		||||
      BOOST_CONSTEXPR bool operator()(const LhsDuration& lhs, const LhsDuration& rhs) const
 | 
			
		||||
        {
 | 
			
		||||
            return lhs.count() < rhs.count();
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
} // namespace detail
 | 
			
		||||
 | 
			
		||||
    // Duration ==
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator==(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return boost::chrono::detail::duration_eq<
 | 
			
		||||
            duration<Rep1, Period1>, duration<Rep2, Period2> >()(lhs, rhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration !=
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator!=(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return !(lhs == rhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration <
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator< (const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return boost::chrono::detail::duration_lt<
 | 
			
		||||
          duration<Rep1, Period1>, duration<Rep2, Period2> >()(lhs, rhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration >
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator> (const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return rhs < lhs;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration <=
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator<=(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return !(rhs < lhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Duration >=
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator>=(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
          const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return !(lhs < rhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.3.7 duration_cast [time.duration.cast]                           //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
    // Compile-time select the most efficient algorithm for the conversion...
 | 
			
		||||
    template <class ToDuration, class Rep, class Period>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename boost::enable_if <
 | 
			
		||||
      boost::chrono::detail::is_duration<ToDuration>, ToDuration>::type
 | 
			
		||||
    duration_cast(const duration<Rep, Period>& fd)
 | 
			
		||||
    {
 | 
			
		||||
        return boost::chrono::detail::duration_cast<
 | 
			
		||||
          duration<Rep, Period>, ToDuration>()(fd);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
} // namespace chrono
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
// the suffix header occurs after all of our code:
 | 
			
		||||
#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CHRONO_DURATION_HPP
 | 
			
		||||
							
								
								
									
										233
									
								
								xs/src/boost/chrono/system_clocks.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										233
									
								
								xs/src/boost/chrono/system_clocks.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,233 @@
 | 
			
		|||
//  boost/chrono/system_clocks.hpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright 2008 Howard Hinnant
 | 
			
		||||
//  Copyright 2008 Beman Dawes
 | 
			
		||||
//  Copyright 2009-2011 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
This code was derived by Beman Dawes from Howard Hinnant's time2_demo prototype.
 | 
			
		||||
Many thanks to Howard for making his code available under the Boost license.
 | 
			
		||||
The original code was modified to conform to Boost conventions and to section
 | 
			
		||||
20.9 Time utilities [time] of the C++ committee's working paper N2798.
 | 
			
		||||
See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf.
 | 
			
		||||
 | 
			
		||||
time2_demo contained this comment:
 | 
			
		||||
 | 
			
		||||
    Much thanks to Andrei Alexandrescu,
 | 
			
		||||
                   Walter Brown,
 | 
			
		||||
                   Peter Dimov,
 | 
			
		||||
                   Jeff Garland,
 | 
			
		||||
                   Terry Golubiewski,
 | 
			
		||||
                   Daniel Krugler,
 | 
			
		||||
                   Anthony Williams.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
TODO:
 | 
			
		||||
 | 
			
		||||
  * Fully implement error handling, with test cases.
 | 
			
		||||
  * Consider issues raised by Michael Marcin:
 | 
			
		||||
 | 
			
		||||
    > In the past I've seen QueryPerformanceCounter give incorrect results,
 | 
			
		||||
    > especially with SpeedStep processors on laptops. This was many years ago and
 | 
			
		||||
    > might have been fixed by service packs and drivers.
 | 
			
		||||
    >
 | 
			
		||||
    > Typically you check the results of QPC against GetTickCount to see if the
 | 
			
		||||
    > results are reasonable.
 | 
			
		||||
    > http://support.microsoft.com/kb/274323
 | 
			
		||||
    >
 | 
			
		||||
    > I've also heard of problems with QueryPerformanceCounter in multi-processor
 | 
			
		||||
    > systems.
 | 
			
		||||
    >
 | 
			
		||||
    > I know some people SetThreadAffinityMask to 1 for the current thread call
 | 
			
		||||
    > their QueryPerformance* functions then restore SetThreadAffinityMask. This
 | 
			
		||||
    > seems horrible to me because it forces your program to jump to another
 | 
			
		||||
    > physical processor if it isn't already on cpu0 but they claim it worked well
 | 
			
		||||
    > in practice because they called the timing functions infrequently.
 | 
			
		||||
    >
 | 
			
		||||
    > In the past I have chosen to use timeGetTime with timeBeginPeriod(1) for
 | 
			
		||||
    > high resolution timers to avoid these issues.
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_SYSTEM_CLOCKS_HPP
 | 
			
		||||
#define BOOST_CHRONO_SYSTEM_CLOCKS_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/chrono/config.hpp>
 | 
			
		||||
#include <boost/chrono/duration.hpp>
 | 
			
		||||
#include <boost/chrono/time_point.hpp>
 | 
			
		||||
#include <boost/chrono/detail/system.hpp>
 | 
			
		||||
#include <boost/chrono/clock_string.hpp>
 | 
			
		||||
 | 
			
		||||
#include <ctime>
 | 
			
		||||
 | 
			
		||||
# if defined( BOOST_CHRONO_POSIX_API )
 | 
			
		||||
#   if ! defined(CLOCK_REALTIME) && ! defined (__hpux__)
 | 
			
		||||
#     error <time.h> does not supply CLOCK_REALTIME
 | 
			
		||||
#   endif
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_CHRONO_WINDOWS_API
 | 
			
		||||
// The system_clock tick is 100 nanoseconds
 | 
			
		||||
# define BOOST_SYSTEM_CLOCK_DURATION boost::chrono::duration<boost::int_least64_t, ratio<BOOST_RATIO_INTMAX_C(1), BOOST_RATIO_INTMAX_C(10000000)> >
 | 
			
		||||
#else
 | 
			
		||||
# define BOOST_SYSTEM_CLOCK_DURATION boost::chrono::nanoseconds
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// this must occur after all of the includes and before any code appears:
 | 
			
		||||
#ifndef BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
#include <boost/config/abi_prefix.hpp> // must be the last #include
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//                        20.9 Time utilities [time]                          //
 | 
			
		||||
//                                 synopsis                                   //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
namespace boost {
 | 
			
		||||
namespace chrono {
 | 
			
		||||
 | 
			
		||||
  // Clocks
 | 
			
		||||
  class BOOST_CHRONO_DECL system_clock;
 | 
			
		||||
#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
  class BOOST_CHRONO_DECL steady_clock;
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
  typedef steady_clock high_resolution_clock;  // as permitted by [time.clock.hires]
 | 
			
		||||
#else
 | 
			
		||||
  typedef system_clock high_resolution_clock;  // as permitted by [time.clock.hires]
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//      20.9.5 Clocks [time.clock]                                            //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
// If you're porting, clocks are the system-specific (non-portable) part.
 | 
			
		||||
// You'll need to know how to get the current time and implement that under now().
 | 
			
		||||
// You'll need to know what units (tick period) and representation makes the most
 | 
			
		||||
// sense for your clock and set those accordingly.
 | 
			
		||||
// If you know how to map this clock to time_t (perhaps your clock is std::time, which
 | 
			
		||||
// makes that trivial), then you can fill out system_clock's to_time_t() and from_time_t().
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.5.1 Class system_clock [time.clock.system]                       //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
  class BOOST_CHRONO_DECL system_clock
 | 
			
		||||
  {
 | 
			
		||||
  public:
 | 
			
		||||
      typedef BOOST_SYSTEM_CLOCK_DURATION          duration;
 | 
			
		||||
      typedef duration::rep                        rep;
 | 
			
		||||
      typedef duration::period                     period;
 | 
			
		||||
      typedef chrono::time_point<system_clock>     time_point;
 | 
			
		||||
      BOOST_STATIC_CONSTEXPR bool is_steady =             false;
 | 
			
		||||
 | 
			
		||||
      static BOOST_CHRONO_INLINE time_point  now() BOOST_NOEXCEPT;
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
      static BOOST_CHRONO_INLINE time_point  now(system::error_code & ec);
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
      static BOOST_CHRONO_INLINE std::time_t to_time_t(const time_point& t) BOOST_NOEXCEPT;
 | 
			
		||||
      static BOOST_CHRONO_INLINE time_point  from_time_t(std::time_t t) BOOST_NOEXCEPT;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.5.2 Class steady_clock [time.clock.steady]                 //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
// As permitted  by [time.clock.steady]
 | 
			
		||||
// The class steady_clock is conditionally supported.
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
  class BOOST_CHRONO_DECL steady_clock
 | 
			
		||||
  {
 | 
			
		||||
  public:
 | 
			
		||||
      typedef nanoseconds                          duration;
 | 
			
		||||
      typedef duration::rep                        rep;
 | 
			
		||||
      typedef duration::period                     period;
 | 
			
		||||
      typedef chrono::time_point<steady_clock>  time_point;
 | 
			
		||||
      BOOST_STATIC_CONSTEXPR bool is_steady =             true;
 | 
			
		||||
 | 
			
		||||
      static BOOST_CHRONO_INLINE time_point  now() BOOST_NOEXCEPT;
 | 
			
		||||
#if !defined BOOST_CHRONO_DONT_PROVIDE_HYBRID_ERROR_HANDLING
 | 
			
		||||
      static BOOST_CHRONO_INLINE time_point  now(system::error_code & ec);
 | 
			
		||||
#endif
 | 
			
		||||
  };
 | 
			
		||||
#endif
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.5.3 Class high_resolution_clock [time.clock.hires]               //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  As permitted, steady_clock or system_clock is a typedef for high_resolution_clock.
 | 
			
		||||
//  See synopsis.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  template<class CharT>
 | 
			
		||||
  struct clock_string<system_clock, CharT>
 | 
			
		||||
  {
 | 
			
		||||
    static std::basic_string<CharT> name()
 | 
			
		||||
    {
 | 
			
		||||
      static const CharT u[] =
 | 
			
		||||
      { 's', 'y', 's', 't', 'e', 'm', '_', 'c', 'l', 'o', 'c', 'k' };
 | 
			
		||||
      static const std::basic_string<CharT> str(u, u + sizeof(u)
 | 
			
		||||
          / sizeof(u[0]));
 | 
			
		||||
      return str;
 | 
			
		||||
    }
 | 
			
		||||
    static std::basic_string<CharT> since()
 | 
			
		||||
    {
 | 
			
		||||
      static const CharT
 | 
			
		||||
          u[] =
 | 
			
		||||
              { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'J', 'a', 'n', ' ', '1', ',', ' ', '1', '9', '7', '0' };
 | 
			
		||||
      static const std::basic_string<CharT> str(u, u + sizeof(u)
 | 
			
		||||
          / sizeof(u[0]));
 | 
			
		||||
      return str;
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_CHRONO_HAS_CLOCK_STEADY
 | 
			
		||||
 | 
			
		||||
  template<class CharT>
 | 
			
		||||
  struct clock_string<steady_clock, CharT>
 | 
			
		||||
  {
 | 
			
		||||
    static std::basic_string<CharT> name()
 | 
			
		||||
    {
 | 
			
		||||
      static const CharT
 | 
			
		||||
          u[] =
 | 
			
		||||
              { 's', 't', 'e', 'a', 'd', 'y', '_', 'c', 'l', 'o', 'c', 'k' };
 | 
			
		||||
      static const std::basic_string<CharT> str(u, u + sizeof(u)
 | 
			
		||||
          / sizeof(u[0]));
 | 
			
		||||
      return str;
 | 
			
		||||
    }
 | 
			
		||||
    static std::basic_string<CharT> since()
 | 
			
		||||
    {
 | 
			
		||||
      const CharT u[] =
 | 
			
		||||
      { ' ', 's', 'i', 'n', 'c', 'e', ' ', 'b', 'o', 'o', 't' };
 | 
			
		||||
      const std::basic_string<CharT> str(u, u + sizeof(u) / sizeof(u[0]));
 | 
			
		||||
      return str;
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
} // namespace chrono
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
// the suffix header occurs after all of our code:
 | 
			
		||||
#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
 | 
			
		||||
#else
 | 
			
		||||
#include <boost/chrono/detail/inlined/chrono.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CHRONO_SYSTEM_CLOCKS_HPP
 | 
			
		||||
							
								
								
									
										380
									
								
								xs/src/boost/chrono/time_point.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										380
									
								
								xs/src/boost/chrono/time_point.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,380 @@
 | 
			
		|||
//  duration.hpp  --------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
//  Copyright 2008 Howard Hinnant
 | 
			
		||||
//  Copyright 2008 Beman Dawes
 | 
			
		||||
//  Copyright 2009-2012 Vicente J. Botet Escriba
 | 
			
		||||
 | 
			
		||||
//  Distributed under the Boost Software License, Version 1.0.
 | 
			
		||||
//  See http://www.boost.org/LICENSE_1_0.txt
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 | 
			
		||||
This code was derived by Beman Dawes from Howard Hinnant's time2_demo prototype.
 | 
			
		||||
Many thanks to Howard for making his code available under the Boost license.
 | 
			
		||||
The original code was modified to conform to Boost conventions and to section
 | 
			
		||||
20.9 Time utilities [time] of the C++ committee's working paper N2798.
 | 
			
		||||
See http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2798.pdf.
 | 
			
		||||
 | 
			
		||||
time2_demo contained this comment:
 | 
			
		||||
 | 
			
		||||
    Much thanks to Andrei Alexandrescu,
 | 
			
		||||
                   Walter Brown,
 | 
			
		||||
                   Peter Dimov,
 | 
			
		||||
                   Jeff Garland,
 | 
			
		||||
                   Terry Golubiewski,
 | 
			
		||||
                   Daniel Krugler,
 | 
			
		||||
                   Anthony Williams.
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_TIME_POINT_HPP
 | 
			
		||||
#define BOOST_CHRONO_TIME_POINT_HPP
 | 
			
		||||
 | 
			
		||||
#include <boost/chrono/duration.hpp>
 | 
			
		||||
#include <iostream>
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
// this must occur after all of the includes and before any code appears:
 | 
			
		||||
#include <boost/config/abi_prefix.hpp> // must be the last #include
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//                        20.9 Time utilities [time]                          //
 | 
			
		||||
//                                 synopsis                                   //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
namespace boost {
 | 
			
		||||
namespace chrono {
 | 
			
		||||
 | 
			
		||||
  template <class Clock, class Duration = typename Clock::duration>
 | 
			
		||||
    class time_point;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
} // namespace chrono
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// common_type trait specializations
 | 
			
		||||
 | 
			
		||||
template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
  struct common_type<chrono::time_point<Clock, Duration1>,
 | 
			
		||||
                     chrono::time_point<Clock, Duration2> >;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.2.3 Specializations of common_type [time.traits.specializations] //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
struct common_type<chrono::time_point<Clock, Duration1>,
 | 
			
		||||
                   chrono::time_point<Clock, Duration2> >
 | 
			
		||||
{
 | 
			
		||||
  typedef chrono::time_point<Clock,
 | 
			
		||||
    typename common_type<Duration1, Duration2>::type> type;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace chrono {
 | 
			
		||||
 | 
			
		||||
    // time_point arithmetic
 | 
			
		||||
    template <class Clock, class Duration1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock,
 | 
			
		||||
        typename common_type<Duration1, duration<Rep2, Period2> >::type>
 | 
			
		||||
    operator+(
 | 
			
		||||
            const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const duration<Rep2, Period2>& rhs);
 | 
			
		||||
    template <class Rep1, class Period1, class Clock, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock,
 | 
			
		||||
        typename common_type<duration<Rep1, Period1>, Duration2>::type>
 | 
			
		||||
    operator+(
 | 
			
		||||
            const duration<Rep1, Period1>& lhs,
 | 
			
		||||
            const time_point<Clock, Duration2>& rhs);
 | 
			
		||||
    template <class Clock, class Duration1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock,
 | 
			
		||||
        typename common_type<Duration1, duration<Rep2, Period2> >::type>
 | 
			
		||||
    operator-(
 | 
			
		||||
            const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const duration<Rep2, Period2>& rhs);
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename common_type<Duration1, Duration2>::type
 | 
			
		||||
    operator-(
 | 
			
		||||
            const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const time_point<Clock,
 | 
			
		||||
            Duration2>& rhs);
 | 
			
		||||
 | 
			
		||||
    // time_point comparisons
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool operator==(
 | 
			
		||||
          const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
          const time_point<Clock, Duration2>& rhs);
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool operator!=(
 | 
			
		||||
          const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
          const time_point<Clock, Duration2>& rhs);
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool operator< (
 | 
			
		||||
          const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
          const time_point<Clock, Duration2>& rhs);
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool operator<=(
 | 
			
		||||
          const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
          const time_point<Clock, Duration2>& rhs);
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool operator> (
 | 
			
		||||
          const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
          const time_point<Clock, Duration2>& rhs);
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool operator>=(
 | 
			
		||||
          const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
          const time_point<Clock, Duration2>& rhs);
 | 
			
		||||
 | 
			
		||||
    // time_point_cast
 | 
			
		||||
    template <class ToDuration, class Clock, class Duration>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock, ToDuration> time_point_cast(const time_point<Clock, Duration>& t);
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//      20.9.4 Class template time_point [time.point]                         //
 | 
			
		||||
//                                                                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration>
 | 
			
		||||
    class time_point
 | 
			
		||||
    {
 | 
			
		||||
        BOOST_CHRONO_STATIC_ASSERT(boost::chrono::detail::is_duration<Duration>::value,
 | 
			
		||||
                BOOST_CHRONO_SECOND_TEMPLATE_PARAMETER_OF_TIME_POINT_MUST_BE_A_BOOST_CHRONO_DURATION, (Duration));
 | 
			
		||||
    public:
 | 
			
		||||
        typedef Clock                     clock;
 | 
			
		||||
        typedef Duration                  duration;
 | 
			
		||||
        typedef typename duration::rep    rep;
 | 
			
		||||
        typedef typename duration::period period;
 | 
			
		||||
        typedef Duration                  difference_type;
 | 
			
		||||
 | 
			
		||||
    private:
 | 
			
		||||
        duration d_;
 | 
			
		||||
 | 
			
		||||
    public:
 | 
			
		||||
        BOOST_FORCEINLINE BOOST_CONSTEXPR
 | 
			
		||||
        time_point() : d_(duration::zero())
 | 
			
		||||
        {}
 | 
			
		||||
        BOOST_FORCEINLINE BOOST_CONSTEXPR
 | 
			
		||||
        explicit time_point(const duration& d)
 | 
			
		||||
            : d_(d)
 | 
			
		||||
        {}
 | 
			
		||||
 | 
			
		||||
        // conversions
 | 
			
		||||
        template <class Duration2>
 | 
			
		||||
        BOOST_FORCEINLINE BOOST_CONSTEXPR
 | 
			
		||||
        time_point(const time_point<clock, Duration2>& t
 | 
			
		||||
                , typename boost::enable_if
 | 
			
		||||
                <
 | 
			
		||||
                    boost::is_convertible<Duration2, duration>
 | 
			
		||||
                >::type* = 0
 | 
			
		||||
        )
 | 
			
		||||
            : d_(t.time_since_epoch())
 | 
			
		||||
        {
 | 
			
		||||
        }
 | 
			
		||||
        // observer
 | 
			
		||||
 | 
			
		||||
        BOOST_CONSTEXPR
 | 
			
		||||
        duration time_since_epoch() const
 | 
			
		||||
        {
 | 
			
		||||
            return d_;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // arithmetic
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_CHRONO_EXTENSIONS
 | 
			
		||||
        BOOST_CONSTEXPR
 | 
			
		||||
        time_point  operator+() const {return *this;}
 | 
			
		||||
        BOOST_CONSTEXPR
 | 
			
		||||
        time_point  operator-() const {return time_point(-d_);}
 | 
			
		||||
        time_point& operator++()      {++d_; return *this;}
 | 
			
		||||
        time_point  operator++(int)   {return time_point(d_++);}
 | 
			
		||||
        time_point& operator--()      {--d_; return *this;}
 | 
			
		||||
        time_point  operator--(int)   {return time_point(d_--);}
 | 
			
		||||
 | 
			
		||||
        time_point& operator+=(const rep& r) {d_ += duration(r); return *this;}
 | 
			
		||||
        time_point& operator-=(const rep& r) {d_ -= duration(r); return *this;}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
        time_point& operator+=(const duration& d) {d_ += d; return *this;}
 | 
			
		||||
        time_point& operator-=(const duration& d) {d_ -= d; return *this;}
 | 
			
		||||
 | 
			
		||||
        // special values
 | 
			
		||||
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR time_point
 | 
			
		||||
        min BOOST_PREVENT_MACRO_SUBSTITUTION ()
 | 
			
		||||
        {
 | 
			
		||||
            return time_point((duration::min)());
 | 
			
		||||
        }
 | 
			
		||||
        static BOOST_CHRONO_LIB_CONSTEXPR time_point
 | 
			
		||||
        max BOOST_PREVENT_MACRO_SUBSTITUTION ()
 | 
			
		||||
        {
 | 
			
		||||
            return time_point((duration::max)());
 | 
			
		||||
        }
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.4.5 time_point non-member arithmetic [time.point.nonmember]      //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
    // time_point operator+(time_point x, duration y);
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock,
 | 
			
		||||
        typename common_type<Duration1, duration<Rep2, Period2> >::type>
 | 
			
		||||
    operator+(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
      typedef typename common_type<Duration1, duration<Rep2, Period2> >::type CDuration;
 | 
			
		||||
      typedef time_point<
 | 
			
		||||
          Clock,
 | 
			
		||||
          CDuration
 | 
			
		||||
      > TimeResult;
 | 
			
		||||
        return TimeResult(lhs.time_since_epoch() + CDuration(rhs));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // time_point operator+(duration x, time_point y);
 | 
			
		||||
 | 
			
		||||
    template <class Rep1, class Period1, class Clock, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock,
 | 
			
		||||
        typename common_type<duration<Rep1, Period1>, Duration2>::type>
 | 
			
		||||
    operator+(const duration<Rep1, Period1>& lhs,
 | 
			
		||||
            const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return rhs + lhs;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // time_point operator-(time_point x, duration y);
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Rep2, class Period2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock,
 | 
			
		||||
        typename common_type<Duration1, duration<Rep2, Period2> >::type>
 | 
			
		||||
    operator-(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const duration<Rep2, Period2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return lhs + (-rhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // duration operator-(time_point x, time_point y);
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    typename common_type<Duration1, Duration2>::type
 | 
			
		||||
    operator-(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return lhs.time_since_epoch() - rhs.time_since_epoch();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.4.6 time_point comparisons [time.point.comparisons]              //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
    // time_point ==
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator==(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
             const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return lhs.time_since_epoch() == rhs.time_since_epoch();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // time_point !=
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator!=(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
             const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return !(lhs == rhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // time_point <
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator<(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return lhs.time_since_epoch() < rhs.time_since_epoch();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // time_point >
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator>(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
            const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return rhs < lhs;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // time_point <=
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator<=(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
             const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return !(rhs < lhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // time_point >=
 | 
			
		||||
 | 
			
		||||
    template <class Clock, class Duration1, class Duration2>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    bool
 | 
			
		||||
    operator>=(const time_point<Clock, Duration1>& lhs,
 | 
			
		||||
             const time_point<Clock, Duration2>& rhs)
 | 
			
		||||
    {
 | 
			
		||||
        return !(lhs < rhs);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
//      20.9.4.7 time_point_cast [time.point.cast]                            //
 | 
			
		||||
//----------------------------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
    template <class ToDuration, class Clock, class Duration>
 | 
			
		||||
    inline BOOST_CONSTEXPR
 | 
			
		||||
    time_point<Clock, ToDuration>
 | 
			
		||||
    time_point_cast(const time_point<Clock, Duration>& t)
 | 
			
		||||
    {
 | 
			
		||||
        return time_point<Clock, ToDuration>(
 | 
			
		||||
                duration_cast<ToDuration>(t.time_since_epoch()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
} // namespace chrono
 | 
			
		||||
} // namespace boost
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CHRONO_HEADER_ONLY
 | 
			
		||||
// the suffix header occurs after all of our code:
 | 
			
		||||
#include <boost/config/abi_suffix.hpp> // pops abi_prefix.hpp pragmas
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CHRONO_TIME_POINT_HPP
 | 
			
		||||
							
								
								
									
										46
									
								
								xs/src/boost/concept/assert.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								xs/src/boost/concept/assert.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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_CONCEPT_ASSERT_DWA2006430_HPP
 | 
			
		||||
# define BOOST_CONCEPT_ASSERT_DWA2006430_HPP
 | 
			
		||||
 | 
			
		||||
# include <boost/config.hpp>
 | 
			
		||||
# include <boost/detail/workaround.hpp>
 | 
			
		||||
 | 
			
		||||
// The old protocol used a constraints() member function in concept
 | 
			
		||||
// checking classes.  If the compiler supports SFINAE, we can detect
 | 
			
		||||
// that function and seamlessly support the old concept checking
 | 
			
		||||
// classes.  In this release, backward compatibility with the old
 | 
			
		||||
// concept checking classes is enabled by default, where available.
 | 
			
		||||
// The old protocol is deprecated, though, and backward compatibility
 | 
			
		||||
// will no longer be the default in the next release.
 | 
			
		||||
 | 
			
		||||
# if !defined(BOOST_NO_OLD_CONCEPT_SUPPORT)                                         \
 | 
			
		||||
    && !defined(BOOST_NO_SFINAE)                                                    \
 | 
			
		||||
                                                                                    \
 | 
			
		||||
    && !(BOOST_WORKAROUND(__GNUC__, == 3) && BOOST_WORKAROUND(__GNUC_MINOR__, < 4)) \
 | 
			
		||||
    && !(BOOST_WORKAROUND(__GNUC__, == 2))
 | 
			
		||||
 | 
			
		||||
// Note: gcc-2.96 through 3.3.x have some SFINAE, but no ability to
 | 
			
		||||
// check for the presence of particularmember functions.
 | 
			
		||||
 | 
			
		||||
#  define BOOST_OLD_CONCEPT_SUPPORT
 | 
			
		||||
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# ifdef BOOST_MSVC
 | 
			
		||||
#  include <boost/concept/detail/msvc.hpp>
 | 
			
		||||
# elif BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
 | 
			
		||||
#  include <boost/concept/detail/borland.hpp>
 | 
			
		||||
# else 
 | 
			
		||||
#  include <boost/concept/detail/general.hpp>
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
  // Usage, in class or function context:
 | 
			
		||||
  //
 | 
			
		||||
  //     BOOST_CONCEPT_ASSERT((UnaryFunctionConcept<F,bool,int>));
 | 
			
		||||
  //
 | 
			
		||||
# define BOOST_CONCEPT_ASSERT(ModelInParens) \
 | 
			
		||||
    BOOST_CONCEPT_ASSERT_FN(void(*)ModelInParens)
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CONCEPT_ASSERT_DWA2006430_HPP
 | 
			
		||||
							
								
								
									
										16
									
								
								xs/src/boost/concept/detail/backward_compatibility.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								xs/src/boost/concept/detail/backward_compatibility.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
// Copyright David Abrahams 2009. 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_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
 | 
			
		||||
# define BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
 | 
			
		||||
 | 
			
		||||
namespace boost
 | 
			
		||||
{
 | 
			
		||||
  namespace concepts {}
 | 
			
		||||
 | 
			
		||||
# if defined(BOOST_HAS_CONCEPTS) && !defined(BOOST_CONCEPT_NO_BACKWARD_KEYWORD)
 | 
			
		||||
  namespace concept = concepts;
 | 
			
		||||
# endif 
 | 
			
		||||
} // namespace boost::concept
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CONCEPT_BACKWARD_COMPATIBILITY_DWA200968_HPP
 | 
			
		||||
							
								
								
									
										30
									
								
								xs/src/boost/concept/detail/borland.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								xs/src/boost/concept/detail/borland.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,30 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
 | 
			
		||||
# define BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
 | 
			
		||||
 | 
			
		||||
# include <boost/preprocessor/cat.hpp>
 | 
			
		||||
# include <boost/concept/detail/backward_compatibility.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost { namespace concepts {
 | 
			
		||||
 | 
			
		||||
template <class ModelFnPtr>
 | 
			
		||||
struct require;
 | 
			
		||||
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct require<void(*)(Model)>
 | 
			
		||||
{
 | 
			
		||||
    enum { instantiate = sizeof((((Model*)0)->~Model()), 3) };
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )         \
 | 
			
		||||
  enum                                                  \
 | 
			
		||||
  {                                                     \
 | 
			
		||||
      BOOST_PP_CAT(boost_concept_check,__LINE__) =      \
 | 
			
		||||
      boost::concepts::require<ModelFnPtr>::instantiate  \
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}} // namespace boost::concept
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CONCEPT_DETAIL_BORLAND_DWA2006429_HPP
 | 
			
		||||
							
								
								
									
										51
									
								
								xs/src/boost/concept/detail/concept_def.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								xs/src/boost/concept/detail/concept_def.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,51 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
 | 
			
		||||
# define BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
 | 
			
		||||
# include <boost/preprocessor/seq/for_each_i.hpp>
 | 
			
		||||
# include <boost/preprocessor/seq/enum.hpp>
 | 
			
		||||
# include <boost/preprocessor/comma_if.hpp>
 | 
			
		||||
# include <boost/preprocessor/cat.hpp>
 | 
			
		||||
#endif // BOOST_CONCEPT_DETAIL_CONCEPT_DEF_DWA200651_HPP
 | 
			
		||||
 | 
			
		||||
// BOOST_concept(SomeName, (p1)(p2)...(pN))
 | 
			
		||||
//
 | 
			
		||||
// Expands to "template <class p1, class p2, ...class pN> struct SomeName"
 | 
			
		||||
//
 | 
			
		||||
// Also defines an equivalent SomeNameConcept for backward compatibility.
 | 
			
		||||
// Maybe in the next release we can kill off the "Concept" suffix for good.
 | 
			
		||||
#if BOOST_WORKAROUND(__GNUC__, <= 3)
 | 
			
		||||
# define BOOST_concept(name, params)                                            \
 | 
			
		||||
    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
 | 
			
		||||
    struct name; /* forward declaration */                                      \
 | 
			
		||||
                                                                                \
 | 
			
		||||
    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
 | 
			
		||||
    struct BOOST_PP_CAT(name,Concept)                                           \
 | 
			
		||||
      : name< BOOST_PP_SEQ_ENUM(params) >                                       \
 | 
			
		||||
    {                                                                           \
 | 
			
		||||
        /* at least 2.96 and 3.4.3 both need this */                            \
 | 
			
		||||
        BOOST_PP_CAT(name,Concept)();                                           \
 | 
			
		||||
    };                                                                          \
 | 
			
		||||
                                                                                \
 | 
			
		||||
    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
 | 
			
		||||
    struct name                                                                
 | 
			
		||||
#else
 | 
			
		||||
# define BOOST_concept(name, params)                                            \
 | 
			
		||||
    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
 | 
			
		||||
    struct name; /* forward declaration */                                      \
 | 
			
		||||
                                                                                \
 | 
			
		||||
    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
 | 
			
		||||
    struct BOOST_PP_CAT(name,Concept)                                           \
 | 
			
		||||
      : name< BOOST_PP_SEQ_ENUM(params) >                                       \
 | 
			
		||||
    {                                                                           \
 | 
			
		||||
    };                                                                          \
 | 
			
		||||
                                                                                \
 | 
			
		||||
    template < BOOST_PP_SEQ_FOR_EACH_I(BOOST_CONCEPT_typename,~,params) >       \
 | 
			
		||||
    struct name                                                                
 | 
			
		||||
#endif
 | 
			
		||||
    
 | 
			
		||||
// Helper for BOOST_concept, above.
 | 
			
		||||
# define BOOST_CONCEPT_typename(r, ignored, index, t) \
 | 
			
		||||
    BOOST_PP_COMMA_IF(index) typename t
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										5
									
								
								xs/src/boost/concept/detail/concept_undef.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								xs/src/boost/concept/detail/concept_undef.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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)
 | 
			
		||||
# undef BOOST_concept_typename
 | 
			
		||||
# undef BOOST_concept
 | 
			
		||||
							
								
								
									
										75
									
								
								xs/src/boost/concept/detail/general.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								xs/src/boost/concept/detail/general.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,75 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
 | 
			
		||||
# define BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
 | 
			
		||||
 | 
			
		||||
# include <boost/preprocessor/cat.hpp>
 | 
			
		||||
# include <boost/concept/detail/backward_compatibility.hpp>
 | 
			
		||||
 | 
			
		||||
# ifdef BOOST_OLD_CONCEPT_SUPPORT
 | 
			
		||||
#  include <boost/concept/detail/has_constraints.hpp>
 | 
			
		||||
#  include <boost/mpl/if.hpp>
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
// This implementation works on Comeau and GCC, all the way back to
 | 
			
		||||
// 2.95
 | 
			
		||||
namespace boost { namespace concepts {
 | 
			
		||||
 | 
			
		||||
template <class ModelFn>
 | 
			
		||||
struct requirement_;
 | 
			
		||||
 | 
			
		||||
namespace detail
 | 
			
		||||
{
 | 
			
		||||
  template <void(*)()> struct instantiate {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct requirement
 | 
			
		||||
{
 | 
			
		||||
    static void failed() { ((Model*)0)->~Model(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct failed {};
 | 
			
		||||
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct requirement<failed ************ Model::************>
 | 
			
		||||
{
 | 
			
		||||
    static void failed() { ((Model*)0)->~Model(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
# ifdef BOOST_OLD_CONCEPT_SUPPORT
 | 
			
		||||
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct constraint
 | 
			
		||||
{
 | 
			
		||||
    static void failed() { ((Model*)0)->constraints(); }
 | 
			
		||||
};
 | 
			
		||||
  
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct requirement_<void(*)(Model)>
 | 
			
		||||
  : mpl::if_<
 | 
			
		||||
        concepts::not_satisfied<Model>
 | 
			
		||||
      , constraint<Model>
 | 
			
		||||
      , requirement<failed ************ Model::************>
 | 
			
		||||
    >::type
 | 
			
		||||
{};
 | 
			
		||||
  
 | 
			
		||||
# else
 | 
			
		||||
 | 
			
		||||
// For GCC-2.x, these can't have exactly the same name
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct requirement_<void(*)(Model)>
 | 
			
		||||
    : requirement<failed ************ Model::************>
 | 
			
		||||
{};
 | 
			
		||||
  
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
#  define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )             \
 | 
			
		||||
    typedef ::boost::concepts::detail::instantiate<          \
 | 
			
		||||
    &::boost::concepts::requirement_<ModelFnPtr>::failed>    \
 | 
			
		||||
      BOOST_PP_CAT(boost_concept_check,__LINE__)
 | 
			
		||||
 | 
			
		||||
}}
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CONCEPT_DETAIL_GENERAL_DWA2006429_HPP
 | 
			
		||||
							
								
								
									
										50
									
								
								xs/src/boost/concept/detail/has_constraints.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								xs/src/boost/concept/detail/has_constraints.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,50 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
 | 
			
		||||
# define BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
 | 
			
		||||
 | 
			
		||||
# include <boost/mpl/bool.hpp>
 | 
			
		||||
# include <boost/detail/workaround.hpp>
 | 
			
		||||
# include <boost/concept/detail/backward_compatibility.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost { namespace concepts {
 | 
			
		||||
 | 
			
		||||
namespace detail
 | 
			
		||||
{ 
 | 
			
		||||
 | 
			
		||||
// Here we implement the metafunction that detects whether a
 | 
			
		||||
// constraints metafunction exists
 | 
			
		||||
  typedef char yes;
 | 
			
		||||
  typedef char (&no)[2];
 | 
			
		||||
 | 
			
		||||
  template <class Model, void (Model::*)()>
 | 
			
		||||
  struct wrap_constraints {};
 | 
			
		||||
    
 | 
			
		||||
#if BOOST_WORKAROUND(__SUNPRO_CC, <= 0x580) || defined(__CUDACC__)
 | 
			
		||||
  // Work around the following bogus error in Sun Studio 11, by
 | 
			
		||||
  // turning off the has_constraints function entirely:
 | 
			
		||||
  //    Error: complex expression not allowed in dependent template
 | 
			
		||||
  //    argument expression
 | 
			
		||||
  inline no has_constraints_(...);
 | 
			
		||||
#else
 | 
			
		||||
  template <class Model>
 | 
			
		||||
  inline yes has_constraints_(Model*, wrap_constraints<Model,&Model::constraints>* = 0);
 | 
			
		||||
  inline no has_constraints_(...);
 | 
			
		||||
#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// This would be called "detail::has_constraints," but it has a strong
 | 
			
		||||
// tendency to show up in error messages.
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct not_satisfied
 | 
			
		||||
{
 | 
			
		||||
    BOOST_STATIC_CONSTANT(
 | 
			
		||||
        bool
 | 
			
		||||
      , value = sizeof( detail::has_constraints_((Model*)0) ) == sizeof(detail::yes) );
 | 
			
		||||
    typedef mpl::bool_<value> type;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
}} // namespace boost::concepts::detail
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CONCEPT_DETAIL_HAS_CONSTRAINTS_DWA2006429_HPP
 | 
			
		||||
							
								
								
									
										114
									
								
								xs/src/boost/concept/detail/msvc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										114
									
								
								xs/src/boost/concept/detail/msvc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,114 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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_CONCEPT_CHECK_MSVC_DWA2006429_HPP
 | 
			
		||||
# define BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
 | 
			
		||||
 | 
			
		||||
# include <boost/preprocessor/cat.hpp>
 | 
			
		||||
# include <boost/concept/detail/backward_compatibility.hpp>
 | 
			
		||||
 | 
			
		||||
# ifdef BOOST_OLD_CONCEPT_SUPPORT
 | 
			
		||||
#  include <boost/concept/detail/has_constraints.hpp>
 | 
			
		||||
#  include <boost/mpl/if.hpp>
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
namespace boost { namespace concepts {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct check
 | 
			
		||||
{
 | 
			
		||||
    virtual void failed(Model* x)
 | 
			
		||||
    {
 | 
			
		||||
        x->~Model();
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
 | 
			
		||||
struct failed {};
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct check<failed ************ Model::************>
 | 
			
		||||
{
 | 
			
		||||
    virtual void failed(Model* x)
 | 
			
		||||
    {
 | 
			
		||||
        x->~Model();
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# ifdef BOOST_OLD_CONCEPT_SUPPORT
 | 
			
		||||
  
 | 
			
		||||
namespace detail
 | 
			
		||||
{
 | 
			
		||||
  // No need for a virtual function here, since evaluating
 | 
			
		||||
  // not_satisfied below will have already instantiated the
 | 
			
		||||
  // constraints() member.
 | 
			
		||||
  struct constraint {};
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct require
 | 
			
		||||
  : mpl::if_c<
 | 
			
		||||
        not_satisfied<Model>::value
 | 
			
		||||
      , detail::constraint
 | 
			
		||||
# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
 | 
			
		||||
      , check<Model>
 | 
			
		||||
# else
 | 
			
		||||
      , check<failed ************ Model::************>
 | 
			
		||||
# endif 
 | 
			
		||||
        >::type
 | 
			
		||||
{};
 | 
			
		||||
      
 | 
			
		||||
# else
 | 
			
		||||
  
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct require
 | 
			
		||||
# ifndef BOOST_NO_PARTIAL_SPECIALIZATION
 | 
			
		||||
    : check<Model>
 | 
			
		||||
# else
 | 
			
		||||
    : check<failed ************ Model::************>
 | 
			
		||||
# endif 
 | 
			
		||||
{};
 | 
			
		||||
  
 | 
			
		||||
# endif
 | 
			
		||||
    
 | 
			
		||||
# if BOOST_WORKAROUND(BOOST_MSVC, == 1310)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// The iterator library sees some really strange errors unless we
 | 
			
		||||
// do things this way.
 | 
			
		||||
//
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct require<void(*)(Model)>
 | 
			
		||||
{
 | 
			
		||||
    virtual void failed(Model*)
 | 
			
		||||
    {
 | 
			
		||||
        require<Model>();
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )      \
 | 
			
		||||
enum                                                \
 | 
			
		||||
{                                                   \
 | 
			
		||||
    BOOST_PP_CAT(boost_concept_check,__LINE__) =    \
 | 
			
		||||
    sizeof(::boost::concepts::require<ModelFnPtr>)    \
 | 
			
		||||
}
 | 
			
		||||
  
 | 
			
		||||
# else // Not vc-7.1
 | 
			
		||||
  
 | 
			
		||||
template <class Model>
 | 
			
		||||
require<Model>
 | 
			
		||||
require_(void(*)(Model));
 | 
			
		||||
  
 | 
			
		||||
# define BOOST_CONCEPT_ASSERT_FN( ModelFnPtr )          \
 | 
			
		||||
enum                                                    \
 | 
			
		||||
{                                                       \
 | 
			
		||||
    BOOST_PP_CAT(boost_concept_check,__LINE__) =        \
 | 
			
		||||
      sizeof(::boost::concepts::require_((ModelFnPtr)0)) \
 | 
			
		||||
}
 | 
			
		||||
  
 | 
			
		||||
# endif
 | 
			
		||||
}}
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CONCEPT_CHECK_MSVC_DWA2006429_HPP
 | 
			
		||||
							
								
								
									
										44
									
								
								xs/src/boost/concept/usage.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								xs/src/boost/concept/usage.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,44 @@
 | 
			
		|||
// Copyright David Abrahams 2006. 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_CONCEPT_USAGE_DWA2006919_HPP
 | 
			
		||||
# define BOOST_CONCEPT_USAGE_DWA2006919_HPP
 | 
			
		||||
 | 
			
		||||
# include <boost/concept/assert.hpp>
 | 
			
		||||
# include <boost/detail/workaround.hpp>
 | 
			
		||||
# include <boost/concept/detail/backward_compatibility.hpp>
 | 
			
		||||
 | 
			
		||||
namespace boost { namespace concepts { 
 | 
			
		||||
 | 
			
		||||
# if BOOST_WORKAROUND(__GNUC__, == 2)
 | 
			
		||||
 | 
			
		||||
#  define BOOST_CONCEPT_USAGE(model) ~model()
 | 
			
		||||
 | 
			
		||||
# else 
 | 
			
		||||
 | 
			
		||||
template <class Model>
 | 
			
		||||
struct usage_requirements
 | 
			
		||||
{
 | 
			
		||||
    ~usage_requirements() { ((Model*)0)->~Model(); }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#  if BOOST_WORKAROUND(__GNUC__, <= 3)
 | 
			
		||||
 | 
			
		||||
#   define BOOST_CONCEPT_USAGE(model)                                    \
 | 
			
		||||
      model(); /* at least 2.96 and 3.4.3 both need this :( */           \
 | 
			
		||||
      BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
 | 
			
		||||
      ~model()
 | 
			
		||||
 | 
			
		||||
#  else
 | 
			
		||||
 | 
			
		||||
#   define BOOST_CONCEPT_USAGE(model)                                    \
 | 
			
		||||
      BOOST_CONCEPT_ASSERT((boost::concepts::usage_requirements<model>)); \
 | 
			
		||||
      ~model()
 | 
			
		||||
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
# endif 
 | 
			
		||||
 | 
			
		||||
}} // namespace boost::concepts
 | 
			
		||||
 | 
			
		||||
#endif // BOOST_CONCEPT_USAGE_DWA2006919_HPP
 | 
			
		||||
							
								
								
									
										1083
									
								
								xs/src/boost/concept_check.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1083
									
								
								xs/src/boost/concept_check.hpp
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										63
									
								
								xs/src/boost/config.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								xs/src/boost/config.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,63 @@
 | 
			
		|||
//  Boost config.hpp configuration header file  ------------------------------//
 | 
			
		||||
 | 
			
		||||
//  (C) Copyright John Maddock 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/libs/config for most recent version.
 | 
			
		||||
 | 
			
		||||
//  Boost config.hpp policy and rationale documentation has been moved to
 | 
			
		||||
//  http://www.boost.org/libs/config
 | 
			
		||||
//
 | 
			
		||||
//  CAUTION: This file is intended to be completely stable -
 | 
			
		||||
//           DO NOT MODIFY THIS FILE!
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_HPP
 | 
			
		||||
#define BOOST_CONFIG_HPP
 | 
			
		||||
 | 
			
		||||
// if we don't have a user config, then use the default location:
 | 
			
		||||
#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
 | 
			
		||||
#  define BOOST_USER_CONFIG <boost/config/user.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
// include it first:
 | 
			
		||||
#ifdef BOOST_USER_CONFIG
 | 
			
		||||
#  include BOOST_USER_CONFIG
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// if we don't have a compiler config set, try and find one:
 | 
			
		||||
#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
 | 
			
		||||
#  include <boost/config/select_compiler_config.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
// if we have a compiler config, include it now:
 | 
			
		||||
#ifdef BOOST_COMPILER_CONFIG
 | 
			
		||||
#  include BOOST_COMPILER_CONFIG
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// if we don't have a std library config set, try and find one:
 | 
			
		||||
#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) && defined(__cplusplus)
 | 
			
		||||
#  include <boost/config/select_stdlib_config.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
// if we have a std library config, include it now:
 | 
			
		||||
#ifdef BOOST_STDLIB_CONFIG
 | 
			
		||||
#  include BOOST_STDLIB_CONFIG
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// if we don't have a platform config set, try and find one:
 | 
			
		||||
#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
 | 
			
		||||
#  include <boost/config/select_platform_config.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
// if we have a platform config, include it now:
 | 
			
		||||
#ifdef BOOST_PLATFORM_CONFIG
 | 
			
		||||
#  include BOOST_PLATFORM_CONFIG
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// get config suffix code:
 | 
			
		||||
#include <boost/config/suffix.hpp>
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_HAS_PRAGMA_ONCE
 | 
			
		||||
#pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif  // BOOST_CONFIG_HPP
 | 
			
		||||
							
								
								
									
										27
									
								
								xs/src/boost/config/abi/borland_prefix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								xs/src/boost/config/abi/borland_prefix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2003. 
 | 
			
		||||
//  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)
 | 
			
		||||
 | 
			
		||||
//  for C++ Builder the following options effect the ABI:
 | 
			
		||||
//
 | 
			
		||||
//  -b (on or off - effect emum sizes)
 | 
			
		||||
//  -Vx  (on or off - empty members)
 | 
			
		||||
//  -Ve (on or off - empty base classes)
 | 
			
		||||
//  -aX (alignment - 5 options).
 | 
			
		||||
//  -pX (Calling convention - 4 options)
 | 
			
		||||
//  -VmX (member pointer size and layout - 5 options)
 | 
			
		||||
//  -VC (on or off, changes name mangling)
 | 
			
		||||
//  -Vl (on or off, changes struct layout).
 | 
			
		||||
 | 
			
		||||
//  In addition the following warnings are sufficiently annoying (and
 | 
			
		||||
//  unfixable) to have them turned off by default:
 | 
			
		||||
//
 | 
			
		||||
//  8027 - functions containing [for|while] loops are not expanded inline
 | 
			
		||||
//  8026 - functions taking class by value arguments are not expanded inline
 | 
			
		||||
 | 
			
		||||
#pragma nopushoptwarn
 | 
			
		||||
#  pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										12
									
								
								xs/src/boost/config/abi/borland_suffix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								xs/src/boost/config/abi/borland_suffix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2003. 
 | 
			
		||||
//  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)
 | 
			
		||||
 | 
			
		||||
#  pragma option pop
 | 
			
		||||
#pragma nopushoptwarn
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								xs/src/boost/config/abi/msvc_prefix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								xs/src/boost/config/abi/msvc_prefix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,22 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2003. 
 | 
			
		||||
//  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)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Boost binaries are built with the compiler's default ABI settings,
 | 
			
		||||
// if the user changes their default alignment in the VS IDE then their
 | 
			
		||||
// code will no longer be binary compatible with the bjam built binaries
 | 
			
		||||
// unless this header is included to force Boost code into a consistent ABI.
 | 
			
		||||
//
 | 
			
		||||
// Note that inclusion of this header is only necessary for libraries with 
 | 
			
		||||
// separate source, header only libraries DO NOT need this as long as all
 | 
			
		||||
// translation units are built with the same options.
 | 
			
		||||
//
 | 
			
		||||
#if defined(_M_X64)
 | 
			
		||||
#  pragma pack(push,16)
 | 
			
		||||
#else
 | 
			
		||||
#  pragma pack(push,8)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								xs/src/boost/config/abi/msvc_suffix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								xs/src/boost/config/abi/msvc_suffix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,8 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2003. 
 | 
			
		||||
//  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)
 | 
			
		||||
 | 
			
		||||
#pragma pack(pop)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										25
									
								
								xs/src/boost/config/abi_prefix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								xs/src/boost/config/abi_prefix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
//  abi_prefix header  -------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
// (c) Copyright John Maddock 2003
 | 
			
		||||
   
 | 
			
		||||
// 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_CONFIG_ABI_PREFIX_HPP
 | 
			
		||||
# define BOOST_CONFIG_ABI_PREFIX_HPP
 | 
			
		||||
#else
 | 
			
		||||
# error double inclusion of header boost/config/abi_prefix.hpp is an error
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include <boost/config.hpp>
 | 
			
		||||
 | 
			
		||||
// this must occur after all other includes and before any code appears:
 | 
			
		||||
#ifdef BOOST_HAS_ABI_HEADERS
 | 
			
		||||
#  include BOOST_ABI_PREFIX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined( __BORLANDC__ )
 | 
			
		||||
#pragma nopushoptwarn
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								xs/src/boost/config/abi_suffix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								xs/src/boost/config/abi_suffix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
//  abi_sufffix header  -------------------------------------------------------//
 | 
			
		||||
 | 
			
		||||
// (c) Copyright John Maddock 2003
 | 
			
		||||
   
 | 
			
		||||
// Use, modification and distribution are subject to the Boost Software License,
 | 
			
		||||
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
 | 
			
		||||
// http://www.boost.org/LICENSE_1_0.txt).
 | 
			
		||||
 | 
			
		||||
// This header should be #included AFTER code that was preceded by a #include
 | 
			
		||||
// <boost/config/abi_prefix.hpp>.
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
 | 
			
		||||
# error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp
 | 
			
		||||
#else
 | 
			
		||||
# undef BOOST_CONFIG_ABI_PREFIX_HPP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// the suffix header occurs after all of our code:
 | 
			
		||||
#ifdef BOOST_HAS_ABI_HEADERS
 | 
			
		||||
#  include BOOST_ABI_SUFFIX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined( __BORLANDC__ )
 | 
			
		||||
#pragma nopushoptwarn
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										429
									
								
								xs/src/boost/config/auto_link.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										429
									
								
								xs/src/boost/config/auto_link.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,429 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2003.
 | 
			
		||||
//  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         auto_link.hpp
 | 
			
		||||
  *   VERSION      see <boost/version.hpp>
 | 
			
		||||
  *   DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
 | 
			
		||||
  */
 | 
			
		||||
 | 
			
		||||
/*************************************************************************
 | 
			
		||||
 | 
			
		||||
USAGE:
 | 
			
		||||
~~~~~~
 | 
			
		||||
 | 
			
		||||
Before including this header you must define one or more of define the following macros:
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_NAME:           Required: A string containing the basename of the library,
 | 
			
		||||
                          for example boost_regex.
 | 
			
		||||
BOOST_LIB_TOOLSET:        Optional: the base name of the toolset.
 | 
			
		||||
BOOST_DYN_LINK:           Optional: when set link to dll rather than static library.
 | 
			
		||||
BOOST_LIB_DIAGNOSTIC:     Optional: when set the header will print out the name
 | 
			
		||||
                          of the library selected (useful for debugging).
 | 
			
		||||
BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
 | 
			
		||||
                          rather than a mangled-name version.
 | 
			
		||||
BOOST_AUTO_LINK_TAGGED:   Specifies that we link to libraries built with the --layout=tagged option.
 | 
			
		||||
                          This is essentially the same as the default name-mangled version, but without
 | 
			
		||||
                          the compiler name and version, or the Boost version.  Just the build options.
 | 
			
		||||
 | 
			
		||||
These macros will be undef'ed at the end of the header, further this header
 | 
			
		||||
has no include guards - so be sure to include it only once from your library!
 | 
			
		||||
 | 
			
		||||
Algorithm:
 | 
			
		||||
~~~~~~~~~~
 | 
			
		||||
 | 
			
		||||
Libraries for Borland and Microsoft compilers are automatically
 | 
			
		||||
selected here, the name of the lib is selected according to the following
 | 
			
		||||
formula:
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_PREFIX
 | 
			
		||||
   + BOOST_LIB_NAME
 | 
			
		||||
   + "_"
 | 
			
		||||
   + BOOST_LIB_TOOLSET
 | 
			
		||||
   + BOOST_LIB_THREAD_OPT
 | 
			
		||||
   + BOOST_LIB_RT_OPT
 | 
			
		||||
   "-"
 | 
			
		||||
   + BOOST_LIB_VERSION
 | 
			
		||||
 | 
			
		||||
These are defined as:
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_PREFIX:     "lib" for static libraries otherwise "".
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_NAME:       The base name of the lib ( for example boost_regex).
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_TOOLSET:    The compiler toolset name (vc6, vc7, bcb5 etc).
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_RT_OPT:     A suffix that indicates the runtime library used,
 | 
			
		||||
                      contains one or more of the following letters after
 | 
			
		||||
                      a hyphen:
 | 
			
		||||
 | 
			
		||||
                      s      static runtime (dynamic if not present).
 | 
			
		||||
                      g      debug/diagnostic runtime (release if not present).
 | 
			
		||||
                      y      Python debug/diagnostic runtime (release if not present).
 | 
			
		||||
                      d      debug build (release if not present).
 | 
			
		||||
                      p      STLport build.
 | 
			
		||||
                      n      STLport build without its IOStreams.
 | 
			
		||||
 | 
			
		||||
BOOST_LIB_VERSION:    The Boost version, in the form x_y, for Boost version x.y.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
***************************************************************************/
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#  ifndef BOOST_CONFIG_HPP
 | 
			
		||||
#     include <boost/config.hpp>
 | 
			
		||||
#  endif
 | 
			
		||||
#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
 | 
			
		||||
//
 | 
			
		||||
// C language compatability (no, honestly)
 | 
			
		||||
//
 | 
			
		||||
#  define BOOST_MSVC _MSC_VER
 | 
			
		||||
#  define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
 | 
			
		||||
#  define BOOST_DO_STRINGIZE(X) #X
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// Only include what follows for known and supported compilers:
 | 
			
		||||
//
 | 
			
		||||
#if defined(BOOST_MSVC) \
 | 
			
		||||
    || defined(__BORLANDC__) \
 | 
			
		||||
    || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
 | 
			
		||||
    || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_VERSION_HPP
 | 
			
		||||
#  include <boost/version.hpp>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_LIB_NAME
 | 
			
		||||
#  error "Macro BOOST_LIB_NAME not set (internal error)"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// error check:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
 | 
			
		||||
#  pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
 | 
			
		||||
#  pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
 | 
			
		||||
#  error "Incompatible build options"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// select toolset if not defined already:
 | 
			
		||||
//
 | 
			
		||||
#ifndef BOOST_LIB_TOOLSET
 | 
			
		||||
#  if defined(BOOST_MSVC) && (BOOST_MSVC < 1200)
 | 
			
		||||
    // Note: no compilers before 1200 are supported
 | 
			
		||||
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
 | 
			
		||||
 | 
			
		||||
#    ifdef UNDER_CE
 | 
			
		||||
       // eVC4:
 | 
			
		||||
#      define BOOST_LIB_TOOLSET "evc4"
 | 
			
		||||
#    else
 | 
			
		||||
       // vc6:
 | 
			
		||||
#      define BOOST_LIB_TOOLSET "vc6"
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1310)
 | 
			
		||||
 | 
			
		||||
     // vc7:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "vc7"
 | 
			
		||||
 | 
			
		||||
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1400)
 | 
			
		||||
 | 
			
		||||
     // vc71:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "vc71"
 | 
			
		||||
 | 
			
		||||
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1500)
 | 
			
		||||
 | 
			
		||||
     // vc80:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "vc80"
 | 
			
		||||
 | 
			
		||||
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1600)
 | 
			
		||||
 | 
			
		||||
     // vc90:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "vc90"
 | 
			
		||||
 | 
			
		||||
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1700)
 | 
			
		||||
 | 
			
		||||
     // vc10:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "vc100"
 | 
			
		||||
 | 
			
		||||
#  elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)
 | 
			
		||||
 | 
			
		||||
     // vc11:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "vc110"
 | 
			
		||||
 | 
			
		||||
#  elif defined(BOOST_MSVC)
 | 
			
		||||
 | 
			
		||||
     // vc12:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "vc120"
 | 
			
		||||
 | 
			
		||||
#  elif defined(__BORLANDC__)
 | 
			
		||||
 | 
			
		||||
     // CBuilder 6:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "bcb"
 | 
			
		||||
 | 
			
		||||
#  elif defined(__ICL)
 | 
			
		||||
 | 
			
		||||
     // Intel C++, no version number:
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "iw"
 | 
			
		||||
 | 
			
		||||
#  elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
 | 
			
		||||
 | 
			
		||||
     // Metrowerks CodeWarrior 8.x
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "cw8"
 | 
			
		||||
 | 
			
		||||
#  elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
 | 
			
		||||
 | 
			
		||||
     // Metrowerks CodeWarrior 9.x
 | 
			
		||||
#    define BOOST_LIB_TOOLSET "cw9"
 | 
			
		||||
 | 
			
		||||
#  endif
 | 
			
		||||
#endif // BOOST_LIB_TOOLSET
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// select thread opt:
 | 
			
		||||
//
 | 
			
		||||
#if defined(_MT) || defined(__MT__)
 | 
			
		||||
#  define BOOST_LIB_THREAD_OPT "-mt"
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_LIB_THREAD_OPT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) || defined(__MWERKS__)
 | 
			
		||||
 | 
			
		||||
#  ifdef _DLL
 | 
			
		||||
 | 
			
		||||
#     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
 | 
			
		||||
 | 
			
		||||
#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gydp"
 | 
			
		||||
#        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gdp"
 | 
			
		||||
#        elif defined(_DEBUG)\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gydp"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        elif defined(_DEBUG)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gdp"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        else
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-p"
 | 
			
		||||
#        endif
 | 
			
		||||
 | 
			
		||||
#     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
 | 
			
		||||
 | 
			
		||||
#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gydpn"
 | 
			
		||||
#        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gdpn"
 | 
			
		||||
#        elif defined(_DEBUG)\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gydpn"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        elif defined(_DEBUG)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gdpn"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        else
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-pn"
 | 
			
		||||
#        endif
 | 
			
		||||
 | 
			
		||||
#     else
 | 
			
		||||
 | 
			
		||||
#        if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gyd"
 | 
			
		||||
#        elif defined(_DEBUG)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-gd"
 | 
			
		||||
#        else
 | 
			
		||||
#            define BOOST_LIB_RT_OPT
 | 
			
		||||
#        endif
 | 
			
		||||
 | 
			
		||||
#     endif
 | 
			
		||||
 | 
			
		||||
#  else
 | 
			
		||||
 | 
			
		||||
#     if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
 | 
			
		||||
 | 
			
		||||
#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-sgydp"
 | 
			
		||||
#        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-sgdp"
 | 
			
		||||
#        elif defined(_DEBUG)\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#             define BOOST_LIB_RT_OPT "-sgydp"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        elif defined(_DEBUG)
 | 
			
		||||
#             define BOOST_LIB_RT_OPT "-sgdp"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        else
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-sp"
 | 
			
		||||
#        endif
 | 
			
		||||
 | 
			
		||||
#     elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
 | 
			
		||||
 | 
			
		||||
#        if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-sgydpn"
 | 
			
		||||
#        elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-sgdpn"
 | 
			
		||||
#        elif defined(_DEBUG)\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#             define BOOST_LIB_RT_OPT "-sgydpn"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        elif defined(_DEBUG)
 | 
			
		||||
#             define BOOST_LIB_RT_OPT "-sgdpn"
 | 
			
		||||
#            pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
 | 
			
		||||
#            error "Build options aren't compatible with pre-built libraries"
 | 
			
		||||
#        else
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-spn"
 | 
			
		||||
#        endif
 | 
			
		||||
 | 
			
		||||
#     else
 | 
			
		||||
 | 
			
		||||
#        if defined(_DEBUG)\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#             define BOOST_LIB_RT_OPT "-sgyd"
 | 
			
		||||
#        elif defined(_DEBUG)
 | 
			
		||||
#             define BOOST_LIB_RT_OPT "-sgd"
 | 
			
		||||
#        else
 | 
			
		||||
#            define BOOST_LIB_RT_OPT "-s"
 | 
			
		||||
#        endif
 | 
			
		||||
 | 
			
		||||
#     endif
 | 
			
		||||
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#elif defined(__BORLANDC__)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// figure out whether we want the debug builds or not:
 | 
			
		||||
//
 | 
			
		||||
#if __BORLANDC__ > 0x561
 | 
			
		||||
#pragma defineonoption BOOST_BORLAND_DEBUG -v
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// sanity check:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
 | 
			
		||||
#error "Pre-built versions of the Boost libraries are not provided in STLport-debug form"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#  ifdef _RTLDLL
 | 
			
		||||
 | 
			
		||||
#     if defined(BOOST_BORLAND_DEBUG)\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#         define BOOST_LIB_RT_OPT "-yd"
 | 
			
		||||
#     elif defined(BOOST_BORLAND_DEBUG)
 | 
			
		||||
#         define BOOST_LIB_RT_OPT "-d"
 | 
			
		||||
#     elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#         define BOOST_LIB_RT_OPT -y
 | 
			
		||||
#     else
 | 
			
		||||
#         define BOOST_LIB_RT_OPT
 | 
			
		||||
#     endif
 | 
			
		||||
 | 
			
		||||
#  else
 | 
			
		||||
 | 
			
		||||
#     if defined(BOOST_BORLAND_DEBUG)\
 | 
			
		||||
               && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#         define BOOST_LIB_RT_OPT "-syd"
 | 
			
		||||
#     elif defined(BOOST_BORLAND_DEBUG)
 | 
			
		||||
#         define BOOST_LIB_RT_OPT "-sd"
 | 
			
		||||
#     elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
 | 
			
		||||
#         define BOOST_LIB_RT_OPT "-sy"
 | 
			
		||||
#     else
 | 
			
		||||
#         define BOOST_LIB_RT_OPT "-s"
 | 
			
		||||
#     endif
 | 
			
		||||
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// select linkage opt:
 | 
			
		||||
//
 | 
			
		||||
#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
 | 
			
		||||
#  define BOOST_LIB_PREFIX
 | 
			
		||||
#elif defined(BOOST_DYN_LINK)
 | 
			
		||||
#  error "Mixing a dll boost library with a static runtime is a really bad idea..."
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_LIB_PREFIX "lib"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// now include the lib:
 | 
			
		||||
//
 | 
			
		||||
#if defined(BOOST_LIB_NAME) \
 | 
			
		||||
      && defined(BOOST_LIB_PREFIX) \
 | 
			
		||||
      && defined(BOOST_LIB_TOOLSET) \
 | 
			
		||||
      && defined(BOOST_LIB_THREAD_OPT) \
 | 
			
		||||
      && defined(BOOST_LIB_RT_OPT) \
 | 
			
		||||
      && defined(BOOST_LIB_VERSION)
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_AUTO_LINK_TAGGED
 | 
			
		||||
#  pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
 | 
			
		||||
#  ifdef BOOST_LIB_DIAGNOSTIC
 | 
			
		||||
#     pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
 | 
			
		||||
#  endif
 | 
			
		||||
#elif defined(BOOST_AUTO_LINK_NOMANGLE)
 | 
			
		||||
#  pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
 | 
			
		||||
#  ifdef BOOST_LIB_DIAGNOSTIC
 | 
			
		||||
#     pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
 | 
			
		||||
#  endif
 | 
			
		||||
#else
 | 
			
		||||
#  pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
 | 
			
		||||
#  ifdef BOOST_LIB_DIAGNOSTIC
 | 
			
		||||
#     pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
#  error "some required macros where not defined (internal logic error)."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#endif // _MSC_VER || __BORLANDC__
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// finally undef any macros we may have set:
 | 
			
		||||
//
 | 
			
		||||
#ifdef BOOST_LIB_PREFIX
 | 
			
		||||
#  undef BOOST_LIB_PREFIX
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(BOOST_LIB_NAME)
 | 
			
		||||
#  undef BOOST_LIB_NAME
 | 
			
		||||
#endif
 | 
			
		||||
// Don't undef this one: it can be set by the user and should be the 
 | 
			
		||||
// same for all libraries:
 | 
			
		||||
//#if defined(BOOST_LIB_TOOLSET)
 | 
			
		||||
//#  undef BOOST_LIB_TOOLSET
 | 
			
		||||
//#endif
 | 
			
		||||
#if defined(BOOST_LIB_THREAD_OPT)
 | 
			
		||||
#  undef BOOST_LIB_THREAD_OPT
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(BOOST_LIB_RT_OPT)
 | 
			
		||||
#  undef BOOST_LIB_RT_OPT
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(BOOST_LIB_LINK_OPT)
 | 
			
		||||
#  undef BOOST_LIB_LINK_OPT
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(BOOST_LIB_DEBUG_OPT)
 | 
			
		||||
#  undef BOOST_LIB_DEBUG_OPT
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(BOOST_DYN_LINK)
 | 
			
		||||
#  undef BOOST_DYN_LINK
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										287
									
								
								xs/src/boost/config/compiler/borland.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										287
									
								
								xs/src/boost/config/compiler/borland.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,287 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003.
 | 
			
		||||
//  (C) Copyright David Abrahams 2002 - 2003.
 | 
			
		||||
//  (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.
 | 
			
		||||
 | 
			
		||||
//  Borland C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support Borland prior to version 5.4:
 | 
			
		||||
#if __BORLANDC__ < 0x540
 | 
			
		||||
#  error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// last known compiler version:
 | 
			
		||||
#if (__BORLANDC__ > 0x613)
 | 
			
		||||
//#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
//#  else
 | 
			
		||||
//#     pragma message( "Unknown compiler version - please run the configure tests and report the results")
 | 
			
		||||
//#  endif
 | 
			
		||||
#elif (__BORLANDC__ == 0x600)
 | 
			
		||||
#  error "CBuilderX preview compiler is no longer supported"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Support macros to help with standard library detection
 | 
			
		||||
#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)
 | 
			
		||||
#  define BOOST_BCB_WITH_ROGUE_WAVE
 | 
			
		||||
#elif __BORLANDC__ < 0x570
 | 
			
		||||
#  define BOOST_BCB_WITH_STLPORT
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_BCB_WITH_DINKUMWARE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Version 5.0 and below:
 | 
			
		||||
#   if __BORLANDC__ <= 0x0550
 | 
			
		||||
// Borland C++Builder 4 and 5:
 | 
			
		||||
#     define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#     if __BORLANDC__ == 0x0550
 | 
			
		||||
// Borland C++Builder 5, command-line compiler 5.5:
 | 
			
		||||
#       define BOOST_NO_OPERATORS_IN_NAMESPACE
 | 
			
		||||
#     endif
 | 
			
		||||
// Variadic macros do not exist for C++ Builder versions 5 and below
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#   endif
 | 
			
		||||
 | 
			
		||||
// Version 5.51 and below:
 | 
			
		||||
#if (__BORLANDC__ <= 0x551)
 | 
			
		||||
#  define BOOST_NO_CV_SPECIALIZATIONS
 | 
			
		||||
#  define BOOST_NO_CV_VOID_SPECIALIZATIONS
 | 
			
		||||
#  define BOOST_NO_DEDUCED_TYPENAME
 | 
			
		||||
// workaround for missing WCHAR_MAX/WCHAR_MIN:
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#include <climits>
 | 
			
		||||
#include <cwchar>
 | 
			
		||||
#else
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <wchar.h>
 | 
			
		||||
#endif // __cplusplus
 | 
			
		||||
#ifndef WCHAR_MAX
 | 
			
		||||
#  define WCHAR_MAX 0xffff
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef WCHAR_MIN
 | 
			
		||||
#  define WCHAR_MIN 0
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Borland C++ Builder 6 and below:
 | 
			
		||||
#if (__BORLANDC__ <= 0x564)
 | 
			
		||||
 | 
			
		||||
#  if defined(NDEBUG) && defined(__cplusplus)
 | 
			
		||||
      // fix broken <cstring> so that Boost.test works:
 | 
			
		||||
#     include <cstring>
 | 
			
		||||
#     undef strcmp
 | 
			
		||||
#  endif
 | 
			
		||||
   // fix broken errno declaration:
 | 
			
		||||
#  include <errno.h>
 | 
			
		||||
#  ifndef errno
 | 
			
		||||
#     define errno errno
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// new bug in 5.61:
 | 
			
		||||
#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)
 | 
			
		||||
   // this seems to be needed by the command line compiler, but not the IDE:
 | 
			
		||||
#  define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Borland C++ Builder 2006 Update 2 and below:
 | 
			
		||||
#if (__BORLANDC__ <= 0x582)
 | 
			
		||||
#  define BOOST_NO_SFINAE
 | 
			
		||||
#  define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
 | 
			
		||||
#  define BOOST_NO_TEMPLATE_TEMPLATES
 | 
			
		||||
 | 
			
		||||
#  define BOOST_NO_PRIVATE_IN_AGGREGATE
 | 
			
		||||
 | 
			
		||||
#  ifdef _WIN32
 | 
			
		||||
#     define BOOST_NO_SWPRINTF
 | 
			
		||||
#  elif defined(linux) || defined(__linux__) || defined(__linux)
 | 
			
		||||
      // we should really be able to do without this
 | 
			
		||||
      // but the wcs* functions aren't imported into std::
 | 
			
		||||
#     define BOOST_NO_STDC_NAMESPACE
 | 
			
		||||
      // _CPPUNWIND doesn't get automatically set for some reason:
 | 
			
		||||
#     pragma defineonoption BOOST_CPPUNWIND -x
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__BORLANDC__ <= 0x613)  // Beman has asked Alisdair for more info
 | 
			
		||||
   // we shouldn't really need this - but too many things choke
 | 
			
		||||
   // without it, this needs more investigation:
 | 
			
		||||
#  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
 | 
			
		||||
#  define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#  define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
 | 
			
		||||
#  define BOOST_NO_USING_TEMPLATE
 | 
			
		||||
#  define BOOST_SP_NO_SP_CONVERTIBLE
 | 
			
		||||
 | 
			
		||||
// Temporary workaround
 | 
			
		||||
#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Borland C++ Builder 2008 and below:
 | 
			
		||||
#  define BOOST_NO_INTEGRAL_INT64_T
 | 
			
		||||
#  define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 | 
			
		||||
#  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
 | 
			
		||||
#  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
 | 
			
		||||
#  define BOOST_NO_NESTED_FRIENDSHIP
 | 
			
		||||
#  define BOOST_NO_TYPENAME_WITH_CTOR
 | 
			
		||||
#if (__BORLANDC__ < 0x600)
 | 
			
		||||
#  define BOOST_ILLEGAL_CV_REFERENCES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
//  Positive Feature detection
 | 
			
		||||
//
 | 
			
		||||
// Borland C++ Builder 2008 and below:
 | 
			
		||||
#if (__BORLANDC__ >= 0x599)
 | 
			
		||||
#  pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// C++0x Macros:
 | 
			
		||||
//
 | 
			
		||||
#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610)
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#  define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#  define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#  define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_HAS_ALIGNOF
 | 
			
		||||
#  define BOOST_HAS_CHAR16_T
 | 
			
		||||
#  define BOOST_HAS_CHAR32_T
 | 
			
		||||
#  define BOOST_HAS_DECLTYPE
 | 
			
		||||
#  define BOOST_HAS_EXPLICIT_CONVERSION_OPS
 | 
			
		||||
#  define BOOST_HAS_REF_QUALIFIER
 | 
			
		||||
#  define BOOST_HAS_RVALUE_REFS
 | 
			
		||||
#  define BOOST_HAS_STATIC_ASSERT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS    // UTF-8 still not supported
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
#if __BORLANDC__ >= 0x590
 | 
			
		||||
#  define BOOST_HAS_TR1_HASH
 | 
			
		||||
 | 
			
		||||
#  define BOOST_HAS_MACRO_USE_FACET
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Post 0x561 we have long long and stdint.h:
 | 
			
		||||
#if __BORLANDC__ >= 0x561
 | 
			
		||||
#  ifndef __NO_LONG_LONG
 | 
			
		||||
#     define BOOST_HAS_LONG_LONG
 | 
			
		||||
#  else
 | 
			
		||||
#     define BOOST_NO_LONG_LONG
 | 
			
		||||
#  endif
 | 
			
		||||
   // On non-Win32 platforms let the platform config figure this out:
 | 
			
		||||
#  ifdef _WIN32
 | 
			
		||||
#      define BOOST_HAS_STDINT_H
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Borland C++Builder 6 defaults to using STLPort.  If _USE_OLD_RW_STL is
 | 
			
		||||
// defined, then we have 0x560 or greater with the Rogue Wave implementation
 | 
			
		||||
// which presumably has the std::DBL_MAX bug.
 | 
			
		||||
#if defined( BOOST_BCB_WITH_ROGUE_WAVE )
 | 
			
		||||
// <climits> is partly broken, some macros define symbols that are really in
 | 
			
		||||
// namespace std, so you end up having to use illegal constructs like
 | 
			
		||||
// std::DBL_MAX, as a fix we'll just include float.h and have done with:
 | 
			
		||||
#include <float.h>
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// __int64:
 | 
			
		||||
//
 | 
			
		||||
#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
 | 
			
		||||
#  define BOOST_HAS_MS_INT64
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// check for exception handling support:
 | 
			
		||||
//
 | 
			
		||||
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
#  define BOOST_NO_EXCEPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// all versions have a <dirent.h>:
 | 
			
		||||
//
 | 
			
		||||
#ifndef __STRICT_ANSI__
 | 
			
		||||
#  define BOOST_HAS_DIRENT_H
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// all versions support __declspec:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__STRICT_ANSI__)
 | 
			
		||||
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
 | 
			
		||||
#  define BOOST_SYMBOL_EXPORT
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// ABI fixing headers:
 | 
			
		||||
//
 | 
			
		||||
#if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet
 | 
			
		||||
#ifndef BOOST_ABI_PREFIX
 | 
			
		||||
#  define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_ABI_SUFFIX
 | 
			
		||||
#  define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// Disable Win32 support in ANSI mode:
 | 
			
		||||
//
 | 
			
		||||
#if __BORLANDC__ < 0x600
 | 
			
		||||
#  pragma defineonoption BOOST_DISABLE_WIN32 -A
 | 
			
		||||
#elif defined(__STRICT_ANSI__)
 | 
			
		||||
#  define BOOST_DISABLE_WIN32
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// MSVC compatibility mode does some nasty things:
 | 
			
		||||
// TODO: look up if this doesn't apply to the whole 12xx range
 | 
			
		||||
//
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
 | 
			
		||||
#  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
 | 
			
		||||
#  define BOOST_NO_VOID_RETURNS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Borland did not implement value-initialization completely, as I reported
 | 
			
		||||
// in 2007, Borland Report 51854, "Value-initialization: POD struct should be
 | 
			
		||||
// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
 | 
			
		||||
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
 | 
			
		||||
// (Niels Dekker, LKEB, April 2010)
 | 
			
		||||
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
 | 
			
		||||
							
								
								
									
										180
									
								
								xs/src/boost/config/compiler/clang.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										180
									
								
								xs/src/boost/config/compiler/clang.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,180 @@
 | 
			
		|||
// (C) Copyright Douglas Gregor 2010
 | 
			
		||||
//
 | 
			
		||||
//  Use, modification and distribution are subject to the
 | 
			
		||||
//  Boost Software License, Version 1.0. (See accompanying file
 | 
			
		||||
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
 | 
			
		||||
//  See http://www.boost.org for most recent version.
 | 
			
		||||
 | 
			
		||||
// Clang compiler setup.
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_PRAGMA_ONCE
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
#  define BOOST_NO_EXCEPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
 | 
			
		||||
#  define BOOST_NO_RTTI
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID)
 | 
			
		||||
#  define BOOST_NO_TYPEID
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__int64) && !defined(__GNUC__)
 | 
			
		||||
#  define BOOST_HAS_MS_INT64
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_NRVO
 | 
			
		||||
 | 
			
		||||
// Branch prediction hints
 | 
			
		||||
#if defined(__has_builtin)
 | 
			
		||||
#if __has_builtin(__builtin_expect)
 | 
			
		||||
#define BOOST_LIKELY(x) __builtin_expect(x, 1)
 | 
			
		||||
#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Clang supports "long long" in all compilation modes.
 | 
			
		||||
#define BOOST_HAS_LONG_LONG
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
 | 
			
		||||
//
 | 
			
		||||
#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
 | 
			
		||||
#  define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
 | 
			
		||||
#  define BOOST_SYMBOL_IMPORT
 | 
			
		||||
#  define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
 | 
			
		||||
// between switch labels.
 | 
			
		||||
//
 | 
			
		||||
#if __cplusplus >= 201103L && defined(__has_warning)
 | 
			
		||||
#  if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
 | 
			
		||||
#    define BOOST_FALLTHROUGH [[clang::fallthrough]]
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_auto_type)
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_constexpr)
 | 
			
		||||
#  define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_decltype)
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_decltype_incomplete_return_types)
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_defaulted_functions)
 | 
			
		||||
#  define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_deleted_functions)
 | 
			
		||||
#  define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_explicit_conversions)
 | 
			
		||||
#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_default_function_template_args)
 | 
			
		||||
#  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_generalized_initializers)
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_lambdas)
 | 
			
		||||
#  define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_local_type_template_args)
 | 
			
		||||
#  define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_noexcept)
 | 
			
		||||
#  define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_nullptr)
 | 
			
		||||
#  define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_range_for)
 | 
			
		||||
#  define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_raw_string_literals)
 | 
			
		||||
#  define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_generalized_initializers)
 | 
			
		||||
#  define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_rvalue_references)
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_strong_enums)
 | 
			
		||||
#  define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_static_assert)
 | 
			
		||||
#  define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_alias_templates)
 | 
			
		||||
#  define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_unicode_literals)
 | 
			
		||||
#  define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_variadic_templates)
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_user_literals)
 | 
			
		||||
#  define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !(__has_feature(cxx_alignas) || __has_extension(cxx_alignas))
 | 
			
		||||
#  define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_trailing_return)
 | 
			
		||||
#  define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__has_feature(cxx_inline_namespaces)
 | 
			
		||||
#  define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Clang always supports variadic macros
 | 
			
		||||
// Clang always supports extern templates
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_COMPILER
 | 
			
		||||
#  define BOOST_COMPILER "Clang version " __clang_version__
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Macro used to identify the Clang compiler.
 | 
			
		||||
#define BOOST_CLANG 1
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										189
									
								
								xs/src/boost/config/compiler/codegear.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								xs/src/boost/config/compiler/codegear.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,189 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003.
 | 
			
		||||
//  (C) Copyright David Abrahams 2002 - 2003.
 | 
			
		||||
//  (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.
 | 
			
		||||
 | 
			
		||||
//  CodeGear C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
 | 
			
		||||
// these warnings occur frequently in optimized template code
 | 
			
		||||
# pragma warn -8004 // var assigned value, but never used
 | 
			
		||||
# pragma warn -8008 // condition always true/false
 | 
			
		||||
# pragma warn -8066 // dead code can never execute
 | 
			
		||||
# pragma warn -8104 // static members with ctors not threadsafe
 | 
			
		||||
# pragma warn -8105 // reference member in class without ctors
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// last known and checked version is 0x621
 | 
			
		||||
#if (__CODEGEARC__ > 0x621)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  else
 | 
			
		||||
#     pragma message( "Unknown compiler version - please run the configure tests and report the results")
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// CodeGear C++ Builder 2009
 | 
			
		||||
#if (__CODEGEARC__ <= 0x613)
 | 
			
		||||
#  define BOOST_NO_INTEGRAL_INT64_T
 | 
			
		||||
#  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
 | 
			
		||||
#  define BOOST_NO_PRIVATE_IN_AGGREGATE
 | 
			
		||||
#  define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
 | 
			
		||||
   // we shouldn't really need this - but too many things choke
 | 
			
		||||
   // without it, this needs more investigation:
 | 
			
		||||
#  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
 | 
			
		||||
#  define BOOST_SP_NO_SP_CONVERTIBLE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// CodeGear C++ Builder 2010
 | 
			
		||||
#if (__CODEGEARC__ <= 0x621)
 | 
			
		||||
#  define BOOST_NO_TYPENAME_WITH_CTOR    // Cannot use typename keyword when making temporaries of a dependant type
 | 
			
		||||
#  define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 | 
			
		||||
#  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#  define BOOST_NO_NESTED_FRIENDSHIP     // TC1 gives nested classes access rights as any other member
 | 
			
		||||
#  define BOOST_NO_USING_TEMPLATE
 | 
			
		||||
#  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
// Temporary hack, until specific MPL preprocessed headers are generated
 | 
			
		||||
#  define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
 | 
			
		||||
 | 
			
		||||
// CodeGear has not yet completely implemented value-initialization, for
 | 
			
		||||
// example for array types, as I reported in 2010: Embarcadero Report 83751,
 | 
			
		||||
// "Value-initialization: arrays should have each element value-initialized",
 | 
			
		||||
// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
 | 
			
		||||
// Last checked version: Embarcadero C++ 6.21
 | 
			
		||||
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
 | 
			
		||||
// (Niels Dekker, LKEB, April 2010)
 | 
			
		||||
#  define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
 | 
			
		||||
#  if defined(NDEBUG) && defined(__cplusplus)
 | 
			
		||||
      // fix broken <cstring> so that Boost.test works:
 | 
			
		||||
#     include <cstring>
 | 
			
		||||
#     undef strcmp
 | 
			
		||||
#  endif
 | 
			
		||||
   // fix broken errno declaration:
 | 
			
		||||
#  include <errno.h>
 | 
			
		||||
#  ifndef errno
 | 
			
		||||
#     define errno errno
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Reportedly, #pragma once is supported since C++ Builder 2010
 | 
			
		||||
#if (__CODEGEARC__ >= 0x620)
 | 
			
		||||
#  define BOOST_HAS_PRAGMA_ONCE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x macros:
 | 
			
		||||
//
 | 
			
		||||
#if (__CODEGEARC__ <= 0x620)
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#else
 | 
			
		||||
#define BOOST_HAS_STATIC_ASSERT
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_HAS_CHAR16_T
 | 
			
		||||
#define BOOST_HAS_CHAR32_T
 | 
			
		||||
#define BOOST_HAS_LONG_LONG
 | 
			
		||||
// #define BOOST_HAS_ALIGNOF
 | 
			
		||||
#define BOOST_HAS_DECLTYPE
 | 
			
		||||
#define BOOST_HAS_EXPLICIT_CONVERSION_OPS
 | 
			
		||||
// #define BOOST_HAS_RVALUE_REFS
 | 
			
		||||
#define BOOST_HAS_SCOPED_ENUM
 | 
			
		||||
// #define BOOST_HAS_STATIC_ASSERT
 | 
			
		||||
#define BOOST_HAS_STD_TYPE_TRAITS
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// TR1 macros:
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_TR1_HASH
 | 
			
		||||
#define BOOST_HAS_TR1_TYPE_TRAITS
 | 
			
		||||
#define BOOST_HAS_TR1_UNORDERED_MAP
 | 
			
		||||
#define BOOST_HAS_TR1_UNORDERED_SET
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_MACRO_USE_FACET
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
 | 
			
		||||
// On non-Win32 platforms let the platform config figure this out:
 | 
			
		||||
#ifdef _WIN32
 | 
			
		||||
#  define BOOST_HAS_STDINT_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// __int64:
 | 
			
		||||
//
 | 
			
		||||
#if !defined(__STRICT_ANSI__)
 | 
			
		||||
#  define BOOST_HAS_MS_INT64
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// check for exception handling support:
 | 
			
		||||
//
 | 
			
		||||
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
#  define BOOST_NO_EXCEPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// all versions have a <dirent.h>:
 | 
			
		||||
//
 | 
			
		||||
#if !defined(__STRICT_ANSI__)
 | 
			
		||||
#  define BOOST_HAS_DIRENT_H
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// all versions support __declspec:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__STRICT_ANSI__)
 | 
			
		||||
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
 | 
			
		||||
#  define BOOST_SYMBOL_EXPORT
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// ABI fixing headers:
 | 
			
		||||
//
 | 
			
		||||
#ifndef BOOST_ABI_PREFIX
 | 
			
		||||
#  define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_ABI_SUFFIX
 | 
			
		||||
#  define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// Disable Win32 support in ANSI mode:
 | 
			
		||||
//
 | 
			
		||||
#  pragma defineonoption BOOST_DISABLE_WIN32 -A
 | 
			
		||||
//
 | 
			
		||||
// MSVC compatibility mode does some nasty things:
 | 
			
		||||
// TODO: look up if this doesn't apply to the whole 12xx range
 | 
			
		||||
//
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
 | 
			
		||||
#  define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
 | 
			
		||||
#  define BOOST_NO_VOID_RETURNS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										59
									
								
								xs/src/boost/config/compiler/comeau.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								xs/src/boost/config/compiler/comeau.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,59 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001. 
 | 
			
		||||
//  (C) Copyright Douglas Gregor 2001. 
 | 
			
		||||
//  (C) Copyright Peter Dimov 2001. 
 | 
			
		||||
//  (C) Copyright Aleksey Gurtovoy 2003. 
 | 
			
		||||
//  (C) Copyright Beman Dawes 2003. 
 | 
			
		||||
//  (C) Copyright Jens Maurer 2003. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  Comeau C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#include "boost/config/compiler/common_edg.hpp"
 | 
			
		||||
 | 
			
		||||
#if (__COMO_VERSION__ <= 4245)
 | 
			
		||||
 | 
			
		||||
#  if defined(_MSC_VER) && _MSC_VER <= 1300
 | 
			
		||||
#     if _MSC_VER > 100
 | 
			
		||||
         // only set this in non-strict mode:
 | 
			
		||||
#        define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
 | 
			
		||||
#     endif
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
// Void returns don't work when emulating VC 6 (Peter Dimov)
 | 
			
		||||
// TODO: look up if this doesn't apply to the whole 12xx range
 | 
			
		||||
#  if defined(_MSC_VER) && (_MSC_VER < 1300)
 | 
			
		||||
#     define BOOST_NO_VOID_RETURNS
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif  // version 4245
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// enable __int64 support in VC emulation mode
 | 
			
		||||
//
 | 
			
		||||
#  if defined(_MSC_VER) && (_MSC_VER >= 1200)
 | 
			
		||||
#     define BOOST_HAS_MS_INT64
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't know Comeau prior to version 4245:
 | 
			
		||||
#if __COMO_VERSION__ < 4245
 | 
			
		||||
#  error "Compiler not configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is 4245:
 | 
			
		||||
#if (__COMO_VERSION__ > 4245)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										112
									
								
								xs/src/boost/config/compiler/common_edg.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								xs/src/boost/config/compiler/common_edg.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,112 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2002.
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001.
 | 
			
		||||
//  (C) Copyright David Abrahams 2002.
 | 
			
		||||
//  (C) Copyright Aleksey Gurtovoy 2002.
 | 
			
		||||
//  (C) Copyright Markus Schoepflin 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 for most recent version.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Options common to all edg based compilers.
 | 
			
		||||
//
 | 
			
		||||
// This is included from within the individual compiler mini-configs.
 | 
			
		||||
 | 
			
		||||
#ifndef  __EDG_VERSION__
 | 
			
		||||
#  error This file requires that __EDG_VERSION__ be defined.
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__EDG_VERSION__ <= 238)
 | 
			
		||||
#   define BOOST_NO_INTEGRAL_INT64_T
 | 
			
		||||
#   define BOOST_NO_SFINAE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__EDG_VERSION__ <= 240)
 | 
			
		||||
#   define BOOST_NO_VOID_RETURNS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
 | 
			
		||||
#   define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
 | 
			
		||||
#   define BOOST_NO_TEMPLATE_TEMPLATES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT)
 | 
			
		||||
#   define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
 | 
			
		||||
#   define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// See also kai.hpp which checks a Kai-specific symbol for EH
 | 
			
		||||
# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
#     define BOOST_NO_EXCEPTIONS
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
# if !defined(__NO_LONG_LONG)
 | 
			
		||||
#     define BOOST_HAS_LONG_LONG
 | 
			
		||||
# else
 | 
			
		||||
#     define BOOST_NO_LONG_LONG
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
// Not sure what version was the first to support #pragma once, but
 | 
			
		||||
// different EDG-based compilers (e.g. Intel) supported it for ages.
 | 
			
		||||
// Add a proper version check if it causes problems.
 | 
			
		||||
#define BOOST_HAS_PRAGMA_ONCE
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
//   See above for BOOST_NO_LONG_LONG
 | 
			
		||||
//
 | 
			
		||||
#if (__EDG_VERSION__ < 310)
 | 
			
		||||
#  define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#endif
 | 
			
		||||
#if (__EDG_VERSION__ <= 310)
 | 
			
		||||
// No support for initializer lists
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#endif
 | 
			
		||||
#if (__EDG_VERSION__ < 400)
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
#ifdef c_plusplus
 | 
			
		||||
// EDG has "long long" in non-strict mode
 | 
			
		||||
// However, some libraries have insufficient "long long" support
 | 
			
		||||
// #define BOOST_HAS_LONG_LONG
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										19
									
								
								xs/src/boost/config/compiler/compaq_cxx.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								xs/src/boost/config/compiler/compaq_cxx.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,19 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  Tru64 C++ compiler setup (now HP):
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER)
 | 
			
		||||
 | 
			
		||||
#include "boost/config/compiler/common_edg.hpp"
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// Nothing to do here?
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										65
									
								
								xs/src/boost/config/compiler/cray.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								xs/src/boost/config/compiler/cray.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,65 @@
 | 
			
		|||
//  (C) Copyright John Maddock 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.
 | 
			
		||||
 | 
			
		||||
//  Greenhills C compiler setup:
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "Cray C version " BOOST_STRINGIZE(_RELEASE)
 | 
			
		||||
 | 
			
		||||
#if _RELEASE < 7
 | 
			
		||||
#  error "Boost is not configured for Cray compilers prior to version 7, please try the configure script."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Check this is a recent EDG based compiler, otherwise we don't support it here:
 | 
			
		||||
//
 | 
			
		||||
#ifndef __EDG_VERSION__
 | 
			
		||||
#  error "Unsupported Cray compiler, please try running the configure script."
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#include "boost/config/compiler/common_edg.hpp"
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Cray peculiarities, probably version 7 specific:
 | 
			
		||||
//
 | 
			
		||||
#undef BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_HAS_NRVO
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#define BOOST_HAS_NRVO
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
 | 
			
		||||
#define BOOST_MATH_DISABLE_STD_FPCLASSIFY
 | 
			
		||||
//#define BOOST_HAS_FPCLASSIFY
 | 
			
		||||
 | 
			
		||||
#define BOOST_SP_USE_PTHREADS
 | 
			
		||||
#define BOOST_AC_USE_PTHREADS
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										93
									
								
								xs/src/boost/config/compiler/digitalmars.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								xs/src/boost/config/compiler/digitalmars.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,93 @@
 | 
			
		|||
//  Copyright (C) Christof Meerwald 2003
 | 
			
		||||
//  Copyright (C) Dan Watkins 2003
 | 
			
		||||
//
 | 
			
		||||
//  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)
 | 
			
		||||
 | 
			
		||||
//  Digital Mars C++ compiler setup:
 | 
			
		||||
#define BOOST_COMPILER __DMC_VERSION_STRING__
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_LONG_LONG
 | 
			
		||||
#define BOOST_HAS_PRAGMA_ONCE
 | 
			
		||||
 | 
			
		||||
#if !defined(BOOST_STRICT_CONFIG)
 | 
			
		||||
#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#define BOOST_NO_OPERATORS_IN_NAMESPACE
 | 
			
		||||
#define BOOST_NO_UNREACHABLE_RETURN_DETECTION
 | 
			
		||||
#define BOOST_NO_SFINAE
 | 
			
		||||
#define BOOST_NO_USING_TEMPLATE
 | 
			
		||||
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// has macros:
 | 
			
		||||
#define BOOST_HAS_DIRENT_H
 | 
			
		||||
#define BOOST_HAS_STDINT_H
 | 
			
		||||
#define BOOST_HAS_WINTHREADS
 | 
			
		||||
 | 
			
		||||
#if (__DMC__ >= 0x847)
 | 
			
		||||
#define BOOST_HAS_EXPM1
 | 
			
		||||
#define BOOST_HAS_LOG1P
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Is this really the best way to detect whether the std lib is in namespace std?
 | 
			
		||||
//
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#include <cstddef>
 | 
			
		||||
#endif
 | 
			
		||||
#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD)
 | 
			
		||||
#  define BOOST_NO_STDC_NAMESPACE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// check for exception handling support:
 | 
			
		||||
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
#  define BOOST_NO_EXCEPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
#if (__DMC__ <= 0x840)
 | 
			
		||||
#error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is ...:
 | 
			
		||||
#if (__DMC__ > 0x848)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										261
									
								
								xs/src/boost/config/compiler/gcc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										261
									
								
								xs/src/boost/config/compiler/gcc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,261 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Darin Adler 2001 - 2002.
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001 - 2002.
 | 
			
		||||
//  (C) Copyright Beman Dawes 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Douglas Gregor 2002.
 | 
			
		||||
//  (C) Copyright David Abrahams 2002 - 2003.
 | 
			
		||||
//  (C) Copyright Synge Todo 2003.
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  GNU C++ compiler setup.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Define BOOST_GCC so we know this is "real" GCC and not some pretender:
 | 
			
		||||
//
 | 
			
		||||
#if !defined(__CUDACC__)
 | 
			
		||||
#define BOOST_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if __GNUC__ == 3
 | 
			
		||||
#  if defined (__PATHSCALE__)
 | 
			
		||||
#     define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#     define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  if __GNUC_MINOR__ < 4
 | 
			
		||||
#     define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#  endif
 | 
			
		||||
#  define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#endif
 | 
			
		||||
#if __GNUC__ < 4
 | 
			
		||||
//
 | 
			
		||||
// All problems to gcc-3.x and earlier here:
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#  ifdef __OPEN64__
 | 
			
		||||
#     define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// GCC prior to 3.4 had #pragma once too but it didn't work well with filesystem links
 | 
			
		||||
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
 | 
			
		||||
#define BOOST_HAS_PRAGMA_ONCE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 )
 | 
			
		||||
// Previous versions of GCC did not completely implement value-initialization:
 | 
			
		||||
// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize
 | 
			
		||||
// members", reported by Jonathan Wakely in 2006,
 | 
			
		||||
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4)
 | 
			
		||||
// GCC Bug 33916, "Default constructor fails to initialize array members",
 | 
			
		||||
// reported by Michael Elizabeth Chastain in 2007,
 | 
			
		||||
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4)
 | 
			
		||||
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
 | 
			
		||||
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
# define BOOST_NO_EXCEPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Threading support: Turn this on unconditionally here (except for
 | 
			
		||||
// those platforms where we can know for sure). It will get turned off again
 | 
			
		||||
// later if no threading API is detected.
 | 
			
		||||
//
 | 
			
		||||
#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__)
 | 
			
		||||
# define BOOST_HAS_THREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// gcc has "long long"
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_LONG_LONG
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// gcc implements the named return value optimization since version 3.1
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_NRVO
 | 
			
		||||
 | 
			
		||||
// Branch prediction hints
 | 
			
		||||
#define BOOST_LIKELY(x) __builtin_expect(x, 1)
 | 
			
		||||
#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
 | 
			
		||||
//
 | 
			
		||||
#if __GNUC__ >= 4
 | 
			
		||||
#  if (defined(_WIN32) || defined(__WIN32__) || defined(WIN32)) && !defined(__CYGWIN__)
 | 
			
		||||
     // All Win32 development environments, including 64-bit Windows and MinGW, define
 | 
			
		||||
     // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment,
 | 
			
		||||
     // so does not define _WIN32 or its variants.
 | 
			
		||||
#    define BOOST_HAS_DECLSPEC
 | 
			
		||||
#    define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__))
 | 
			
		||||
#    define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__))
 | 
			
		||||
#  else
 | 
			
		||||
#    define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
 | 
			
		||||
#    define BOOST_SYMBOL_IMPORT
 | 
			
		||||
#  endif
 | 
			
		||||
#  define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
 | 
			
		||||
#else
 | 
			
		||||
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
 | 
			
		||||
#  define BOOST_SYMBOL_EXPORT
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// RTTI and typeinfo detection is possible post gcc-4.3:
 | 
			
		||||
//
 | 
			
		||||
#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403
 | 
			
		||||
#  ifndef __GXX_RTTI
 | 
			
		||||
#     ifndef BOOST_NO_TYPEID
 | 
			
		||||
#        define BOOST_NO_TYPEID
 | 
			
		||||
#     endif
 | 
			
		||||
#     ifndef BOOST_NO_RTTI
 | 
			
		||||
#        define BOOST_NO_RTTI
 | 
			
		||||
#     endif
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Recent GCC versions have __int128 when in 64-bit mode.
 | 
			
		||||
//
 | 
			
		||||
// We disable this if the compiler is really nvcc as it
 | 
			
		||||
// doesn't actually support __int128 as of CUDA_VERSION=5000
 | 
			
		||||
// even though it defines __SIZEOF_INT128__.
 | 
			
		||||
// See https://svn.boost.org/trac/boost/ticket/8048
 | 
			
		||||
// Only re-enable this for nvcc if you're absolutely sure
 | 
			
		||||
// of the circumstances under which it's supported:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__SIZEOF_INT128__) && !defined(__CUDACC__)
 | 
			
		||||
#  define BOOST_HAS_INT128
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.3.n and later
 | 
			
		||||
//
 | 
			
		||||
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
// C++0x features are only enabled when -std=c++0x or -std=gnu++0x are
 | 
			
		||||
// passed on the command line, which in turn defines
 | 
			
		||||
// __GXX_EXPERIMENTAL_CXX0X__.
 | 
			
		||||
#  define BOOST_HAS_DECLTYPE
 | 
			
		||||
#  define BOOST_HAS_RVALUE_REFS
 | 
			
		||||
#  define BOOST_HAS_STATIC_ASSERT
 | 
			
		||||
#  define BOOST_HAS_VARIADIC_TMPL
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#  define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
 | 
			
		||||
// Variadic templates compiler:
 | 
			
		||||
//   http://www.generic-programming.org/~dgregor/cpp/variadic-templates.html
 | 
			
		||||
#  if defined(__VARIADIC_TEMPLATES) || (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4) && defined(__GXX_EXPERIMENTAL_CXX0X__))
 | 
			
		||||
#    define BOOST_HAS_VARIADIC_TMPL
 | 
			
		||||
#  else
 | 
			
		||||
#    define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.4.n and later
 | 
			
		||||
//
 | 
			
		||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#  define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#  define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5)
 | 
			
		||||
#  define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// GCC 4.5 forbids declaration of defaulted functions in private or protected sections
 | 
			
		||||
#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && (__GNUC__ == 4 && __GNUC_MINOR__ <= 5)
 | 
			
		||||
#  define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.5.0 and later
 | 
			
		||||
//
 | 
			
		||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#  define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#  define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#  define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.5.1 and later
 | 
			
		||||
//
 | 
			
		||||
#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40501) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_CXX11_SCOPED_ENUMS before 4.5.1
 | 
			
		||||
// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
 | 
			
		||||
#  define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.6.n and later
 | 
			
		||||
//
 | 
			
		||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.7.n and later
 | 
			
		||||
//
 | 
			
		||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
#  define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#  define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.8.n and later
 | 
			
		||||
//
 | 
			
		||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
#  define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++0x features in 4.8.1 and later
 | 
			
		||||
//
 | 
			
		||||
#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40801) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_COMPILER
 | 
			
		||||
#  define BOOST_COMPILER "GNU C++ version " __VERSION__
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// ConceptGCC compiler:
 | 
			
		||||
//   http://www.generic-programming.org/software/ConceptGCC/
 | 
			
		||||
#ifdef __GXX_CONCEPTS__
 | 
			
		||||
#  define BOOST_HAS_CONCEPTS
 | 
			
		||||
#  define BOOST_COMPILER "ConceptGCC version " __VERSION__
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't know gcc prior to version 3.30:
 | 
			
		||||
#if (__GNUC__ < 3) || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3))
 | 
			
		||||
#  error "Compiler not configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is 4.6 (Pre-release):
 | 
			
		||||
#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6))
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  else
 | 
			
		||||
// we don't emit warnings here anymore since there are no defect macros defined for
 | 
			
		||||
// gcc post 3.4, so any failures are gcc regressions...
 | 
			
		||||
//#     warning "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										64
									
								
								xs/src/boost/config/compiler/gcc_xml.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								xs/src/boost/config/compiler/gcc_xml.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,64 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2006.
 | 
			
		||||
//  Use, modification and distribution are subject to the
 | 
			
		||||
//  Boost Software License, Version 1.0. (See accompanying file
 | 
			
		||||
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
 | 
			
		||||
//  See http://www.boost.org for most recent version.
 | 
			
		||||
 | 
			
		||||
//  GCC-XML C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#  if !defined(__GCCXML_GNUC__) || ((__GCCXML_GNUC__ <= 3) && (__GCCXML_GNUC_MINOR__ <= 3))
 | 
			
		||||
#     define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Threading support: Turn this on unconditionally here (except for
 | 
			
		||||
// those platforms where we can know for sure). It will get turned off again
 | 
			
		||||
// later if no threading API is detected.
 | 
			
		||||
//
 | 
			
		||||
#if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__)
 | 
			
		||||
# define BOOST_HAS_THREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// gcc has "long long"
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_LONG_LONG
 | 
			
		||||
 | 
			
		||||
// C++0x features:
 | 
			
		||||
//
 | 
			
		||||
#  define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#  define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#  define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#  define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#  define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#  define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#  define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#  define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#  define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#  define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#  define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#  define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#  define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#  define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#  define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								xs/src/boost/config/compiler/greenhills.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								xs/src/boost/config/compiler/greenhills.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  Greenhills C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs)
 | 
			
		||||
 | 
			
		||||
#include "boost/config/compiler/common_edg.hpp"
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support Greenhills prior to version 0:
 | 
			
		||||
#if __ghs < 0
 | 
			
		||||
#  error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is 0:
 | 
			
		||||
#if (__ghs > 0)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										144
									
								
								xs/src/boost/config/compiler/hp_acc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								xs/src/boost/config/compiler/hp_acc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,144 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Aleksey Gurtovoy 2002.
 | 
			
		||||
//  (C) Copyright David Abrahams 2002 - 2003.
 | 
			
		||||
//  (C) Copyright Toon Knapen 2003.
 | 
			
		||||
//  (C) Copyright Boris Gubenko 2006 - 2007.
 | 
			
		||||
//  Use, modification and distribution are subject to the
 | 
			
		||||
//  Boost Software License, Version 1.0. (See accompanying file
 | 
			
		||||
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
 | 
			
		||||
//  See http://www.boost.org for most recent version.
 | 
			
		||||
 | 
			
		||||
//  HP aCC C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#if defined(__EDG__)
 | 
			
		||||
#include "boost/config/compiler/common_edg.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__HP_aCC <= 33100)
 | 
			
		||||
#    define BOOST_NO_INTEGRAL_INT64_T
 | 
			
		||||
#    define BOOST_NO_OPERATORS_IN_NAMESPACE
 | 
			
		||||
#  if !defined(_NAMESPACE_STD)
 | 
			
		||||
#     define BOOST_NO_STD_LOCALE
 | 
			
		||||
#     define BOOST_NO_STRINGSTREAM
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__HP_aCC <= 33300)
 | 
			
		||||
// member templates are sufficiently broken that we disable them for now
 | 
			
		||||
#    define BOOST_NO_MEMBER_TEMPLATES
 | 
			
		||||
#    define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
 | 
			
		||||
#    define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__HP_aCC <= 38000)
 | 
			
		||||
#  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__HP_aCC > 50000) && (__HP_aCC < 60000)
 | 
			
		||||
#    define BOOST_NO_UNREACHABLE_RETURN_DETECTION
 | 
			
		||||
#    define BOOST_NO_TEMPLATE_TEMPLATES
 | 
			
		||||
#    define BOOST_NO_SWPRINTF
 | 
			
		||||
#    define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
 | 
			
		||||
#    define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#    define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// optional features rather than defects:
 | 
			
		||||
#if (__HP_aCC >= 33900)
 | 
			
		||||
#    define BOOST_HAS_LONG_LONG
 | 
			
		||||
#    define BOOST_HAS_PARTIAL_STD_ALLOCATOR
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__HP_aCC >= 50000 ) && (__HP_aCC <= 53800 ) || (__HP_aCC < 31300 )
 | 
			
		||||
#    define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// This macro should not be defined when compiling in strict ansi
 | 
			
		||||
// mode, but, currently, we don't have the ability to determine
 | 
			
		||||
// what standard mode we are compiling with. Some future version
 | 
			
		||||
// of aCC6 compiler will provide predefined macros reflecting the
 | 
			
		||||
// compilation options, including the standard mode.
 | 
			
		||||
#if (__HP_aCC >= 60000) || ((__HP_aCC > 38000) && defined(__hpxstd98))
 | 
			
		||||
#    define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support HP aCC prior to version 33000:
 | 
			
		||||
#if __HP_aCC < 33000
 | 
			
		||||
#  error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Extended checks for supporting aCC on PA-RISC
 | 
			
		||||
#if __HP_aCC > 30000 && __HP_aCC < 50000
 | 
			
		||||
#  if __HP_aCC < 38000
 | 
			
		||||
      // versions prior to version A.03.80 not supported
 | 
			
		||||
#     error "Compiler version not supported - version A.03.80 or higher is required"
 | 
			
		||||
#  elif !defined(__hpxstd98)
 | 
			
		||||
      // must compile using the option +hpxstd98 with version A.03.80 and above
 | 
			
		||||
#     error "Compiler option '+hpxstd98' is required for proper support"
 | 
			
		||||
#  endif //PA-RISC
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
//   See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
 | 
			
		||||
//
 | 
			
		||||
#if !defined(__EDG__)
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
  See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and
 | 
			
		||||
      https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443436
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
#if (__HP_aCC < 62500) || !defined(HP_CXX0x_SOURCE)
 | 
			
		||||
  #define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version for HP-UX/ia64 is 61300
 | 
			
		||||
// last known and checked version for PA-RISC is 38000
 | 
			
		||||
#if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										323
									
								
								xs/src/boost/config/compiler/intel.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										323
									
								
								xs/src/boost/config/compiler/intel.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,323 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001-8.
 | 
			
		||||
//  (C) Copyright Peter Dimov 2001.
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001.
 | 
			
		||||
//  (C) Copyright David Abrahams 2002 - 2003.
 | 
			
		||||
//  (C) Copyright Aleksey Gurtovoy 2002 - 2003.
 | 
			
		||||
//  (C) Copyright Guillaume Melquiond 2002 - 2003.
 | 
			
		||||
//  (C) Copyright Beman Dawes 2003.
 | 
			
		||||
//  (C) Copyright Martin Wille 2003.
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  Intel compiler setup:
 | 
			
		||||
 | 
			
		||||
#include "boost/config/compiler/common_edg.hpp"
 | 
			
		||||
 | 
			
		||||
#if defined(__INTEL_COMPILER)
 | 
			
		||||
#  define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER
 | 
			
		||||
#elif defined(__ICL)
 | 
			
		||||
#  define BOOST_INTEL_CXX_VERSION __ICL
 | 
			
		||||
#elif defined(__ICC)
 | 
			
		||||
#  define BOOST_INTEL_CXX_VERSION __ICC
 | 
			
		||||
#elif defined(__ECC)
 | 
			
		||||
#  define BOOST_INTEL_CXX_VERSION __ECC
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x'
 | 
			
		||||
#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__)
 | 
			
		||||
#  define BOOST_INTEL_STDCXX0X
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
 | 
			
		||||
#  define BOOST_INTEL_STDCXX0X
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_INTEL_STDCXX0X
 | 
			
		||||
#define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
 | 
			
		||||
#else
 | 
			
		||||
#define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32) || defined(_WIN64)
 | 
			
		||||
#  define BOOST_INTEL_WIN BOOST_INTEL
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_INTEL_LINUX BOOST_INTEL
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (BOOST_INTEL_CXX_VERSION <= 600)
 | 
			
		||||
 | 
			
		||||
#  if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
 | 
			
		||||
 | 
			
		||||
// Boost libraries assume strong standard conformance unless otherwise
 | 
			
		||||
// indicated by a config macro. As configured by Intel, the EDG front-end
 | 
			
		||||
// requires certain compiler options be set to achieve that strong conformance.
 | 
			
		||||
// Particularly /Qoption,c,--arg_dep_lookup (reported by Kirk Klobe & Thomas Witt)
 | 
			
		||||
// and /Zc:wchar_t,forScope. See boost-root/tools/build/intel-win32-tools.jam for
 | 
			
		||||
// details as they apply to particular versions of the compiler. When the
 | 
			
		||||
// compiler does not predefine a macro indicating if an option has been set,
 | 
			
		||||
// this config file simply assumes the option has been set.
 | 
			
		||||
// Thus BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP will not be defined, even if
 | 
			
		||||
// the compiler option is not enabled.
 | 
			
		||||
 | 
			
		||||
#     define BOOST_NO_SWPRINTF
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
// Void returns, 64 bit integrals don't work when emulating VC 6 (Peter Dimov)
 | 
			
		||||
 | 
			
		||||
#  if defined(_MSC_VER) && (_MSC_VER <= 1200)
 | 
			
		||||
#     define BOOST_NO_VOID_RETURNS
 | 
			
		||||
#     define BOOST_NO_INTEGRAL_INT64_T
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (BOOST_INTEL_CXX_VERSION <= 710) && defined(_WIN32)
 | 
			
		||||
#  define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// See http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864
 | 
			
		||||
#if BOOST_INTEL_CXX_VERSION < 600
 | 
			
		||||
#  define BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
#else
 | 
			
		||||
// We should test the macro _WCHAR_T_DEFINED to check if the compiler
 | 
			
		||||
// supports wchar_t natively. *BUT* there is a problem here: the standard
 | 
			
		||||
// headers define this macro if they typedef wchar_t. Anyway, we're lucky
 | 
			
		||||
// because they define it without a value, while Intel C++ defines it
 | 
			
		||||
// to 1. So we can check its value to see if the macro was defined natively
 | 
			
		||||
// or not.
 | 
			
		||||
// Under UNIX, the situation is exactly the same, but the macro _WCHAR_T
 | 
			
		||||
// is used instead.
 | 
			
		||||
#  if ((_WCHAR_T_DEFINED + 0) == 0) && ((_WCHAR_T + 0) == 0)
 | 
			
		||||
#    define BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
 | 
			
		||||
//
 | 
			
		||||
// Figure out when Intel is emulating this gcc bug
 | 
			
		||||
// (All Intel versions prior to 9.0.26, and versions
 | 
			
		||||
// later than that if they are set up to emulate gcc 3.2
 | 
			
		||||
// or earlier):
 | 
			
		||||
//
 | 
			
		||||
#  if ((__GNUC__ == 3) && (__GNUC_MINOR__ <= 2)) || (BOOST_INTEL < 900) || (__INTEL_COMPILER_BUILD_DATE < 20050912)
 | 
			
		||||
#     define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
#if (defined(__GNUC__) && (__GNUC__ < 4)) || (defined(_WIN32) && (BOOST_INTEL_CXX_VERSION <= 1200)) || (BOOST_INTEL_CXX_VERSION <= 1200)
 | 
			
		||||
// GCC or VC emulation:
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// Verify that we have actually got BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
// set correctly, if we don't do this now, we will get errors later
 | 
			
		||||
// in type_traits code among other things, getting this correct
 | 
			
		||||
// for the Intel compiler is actually remarkably fragile and tricky:
 | 
			
		||||
//
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#if defined(BOOST_NO_INTRINSIC_WCHAR_T)
 | 
			
		||||
#include <cwchar>
 | 
			
		||||
template< typename T > struct assert_no_intrinsic_wchar_t;
 | 
			
		||||
template<> struct assert_no_intrinsic_wchar_t<wchar_t> { typedef void type; };
 | 
			
		||||
// if you see an error here then you need to unset BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
// where it is defined above:
 | 
			
		||||
typedef assert_no_intrinsic_wchar_t<unsigned short>::type assert_no_intrinsic_wchar_t_;
 | 
			
		||||
#else
 | 
			
		||||
template< typename T > struct assert_intrinsic_wchar_t;
 | 
			
		||||
template<> struct assert_intrinsic_wchar_t<wchar_t> {};
 | 
			
		||||
// if you see an error here then define BOOST_NO_INTRINSIC_WCHAR_T on the command line:
 | 
			
		||||
template<> struct assert_intrinsic_wchar_t<unsigned short> {};
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER+0 >= 1000)
 | 
			
		||||
#  if _MSC_VER >= 1200
 | 
			
		||||
#     define BOOST_HAS_MS_INT64
 | 
			
		||||
#  endif
 | 
			
		||||
#  define BOOST_NO_SWPRINTF
 | 
			
		||||
#  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#elif defined(_WIN32)
 | 
			
		||||
#  define BOOST_DISABLE_WIN32
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// I checked version 6.0 build 020312Z, it implements the NRVO.
 | 
			
		||||
// Correct this as you find out which version of the compiler
 | 
			
		||||
// implemented the NRVO first.  (Daniel Frey)
 | 
			
		||||
#if (BOOST_INTEL_CXX_VERSION >= 600)
 | 
			
		||||
#  define BOOST_HAS_NRVO
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Branch prediction hints
 | 
			
		||||
// I'm not sure 8.0 was the first version to support these builtins,
 | 
			
		||||
// update the condition if the version is not accurate. (Andrey Semashev)
 | 
			
		||||
#if defined(__GNUC__) && BOOST_INTEL_CXX_VERSION >= 800
 | 
			
		||||
#define BOOST_LIKELY(x) __builtin_expect(x, 1)
 | 
			
		||||
#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support Intel prior to version 6.0:
 | 
			
		||||
#if BOOST_INTEL_CXX_VERSION < 600
 | 
			
		||||
#  error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Intel on MacOS requires
 | 
			
		||||
#if defined(__APPLE__) && defined(__INTEL_COMPILER)
 | 
			
		||||
#  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Intel on Altix Itanium
 | 
			
		||||
#if defined(__itanium__) && defined(__INTEL_COMPILER)
 | 
			
		||||
#  define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// An attempt to value-initialize a pointer-to-member may trigger an
 | 
			
		||||
// internal error on Intel <= 11.1 (last checked version), as was
 | 
			
		||||
// reported by John Maddock, Intel support issue 589832, May 2010.
 | 
			
		||||
// Moreover, according to test results from Huang-Vista-x86_32_intel,
 | 
			
		||||
// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
 | 
			
		||||
// cases when it should be value-initialized.
 | 
			
		||||
// (Niels Dekker, LKEB, May 2010)
 | 
			
		||||
// Apparently Intel 12.1 (compiler version number 9999 !!) has the same issue (compiler regression).
 | 
			
		||||
#if defined(__INTEL_COMPILER)
 | 
			
		||||
#  if (__INTEL_COMPILER <= 1110) || (__INTEL_COMPILER == 9999) || (defined(_WIN32) && (__INTEL_COMPILER < 1500))
 | 
			
		||||
#    define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
 | 
			
		||||
//
 | 
			
		||||
#if defined(__GNUC__) && (__GNUC__ >= 4)
 | 
			
		||||
#  define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
 | 
			
		||||
#  define BOOST_SYMBOL_IMPORT
 | 
			
		||||
#  define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//     - ICC added static_assert in 11.0 (first version with C++0x support)
 | 
			
		||||
//
 | 
			
		||||
#if defined(BOOST_INTEL_STDCXX0X)
 | 
			
		||||
#  undef  BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
//
 | 
			
		||||
// These pass our test cases, but aren't officially supported according to:
 | 
			
		||||
// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
 | 
			
		||||
//
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200)
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_RVALUE_REFERENCES // Enabling this breaks Filesystem and Exception libraries
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_SCOPED_ENUMS  // doesn't really work!!
 | 
			
		||||
#  undef  BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#  undef  BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#  undef  BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#  undef  BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#  undef  BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#  undef  BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#  undef  BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#  undef  BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// icl Version 12.1.0.233 Build 20110811 and possibly some other builds
 | 
			
		||||
// had an incorrect __INTEL_COMPILER value of 9999. Intel say this has been fixed.
 | 
			
		||||
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION > 1200)
 | 
			
		||||
#  undef  BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#  undef  BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#  undef  BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#  undef  BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#  undef  BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#  undef  BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
 | 
			
		||||
// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
 | 
			
		||||
// continues to list scoped enum support as "Partial"
 | 
			
		||||
//#  undef  BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(_MSC_VER)
 | 
			
		||||
#  undef BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
#  undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
// This one generates internal compiler errors in multiprecision, disabled for now:
 | 
			
		||||
//#  undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS  
 | 
			
		||||
// This one generates errors when used with conditional exception specifications, for example in multiprecision:
 | 
			
		||||
//#  undef BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#  undef BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#  undef BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#  undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#endif
 | 
			
		||||
#if (BOOST_INTEL_CXX_VERSION >= 1310)
 | 
			
		||||
#  undef  BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1400) && !defined(_MSC_VER)
 | 
			
		||||
#  undef BOOST_NO_CXX11_UNICODE_LITERALS 
 | 
			
		||||
#  undef BOOST_NO_CXX11_RAW_LITERALS 
 | 
			
		||||
// This one generates errors when used with conditional exception specifications, for example in multiprecision:
 | 
			
		||||
//#  undef BOOST_NO_CXX11_NOEXCEPT 
 | 
			
		||||
// This breaks multiprecision:
 | 
			
		||||
//#  undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS 
 | 
			
		||||
#  undef BOOST_NO_CXX11_HDR_THREAD 
 | 
			
		||||
#  undef BOOST_NO_CXX11_CHAR32_T 
 | 
			
		||||
#  undef BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310)
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_FUTURE
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION == 1400)
 | 
			
		||||
// A regression in Intel's compiler means that <tuple> seems to be broken in this release as well as <future> :
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_FUTURE
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_TUPLE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER <= 1700)
 | 
			
		||||
//
 | 
			
		||||
// Although the Intel compiler is capable of supporting these, it appears not to in MSVC compatibility mode:
 | 
			
		||||
//
 | 
			
		||||
#  define  BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#  define  BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#  define  BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#  define  BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#  define  BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#  if(BOOST_INTEL_CXX_VERSION < 1310)
 | 
			
		||||
#     define  BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (BOOST_INTEL_CXX_VERSION < 1200)
 | 
			
		||||
//
 | 
			
		||||
// fenv.h appears not to work with Intel prior to 12.0:
 | 
			
		||||
//
 | 
			
		||||
#  define BOOST_NO_FENV_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_MSC_VER) && (_MSC_VER >= 1600)
 | 
			
		||||
#  define BOOST_HAS_STDINT_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310)
 | 
			
		||||
#  define BOOST_HAS_INT128
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version:
 | 
			
		||||
#if (BOOST_INTEL_CXX_VERSION > 1310)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  elif defined(_MSC_VER)
 | 
			
		||||
//
 | 
			
		||||
//      We don't emit this warning any more, since we have so few
 | 
			
		||||
//      defect macros set anyway (just the one).
 | 
			
		||||
//
 | 
			
		||||
//#     pragma message("Unknown compiler version - please run the configure tests and report the results")
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										33
									
								
								xs/src/boost/config/compiler/kai.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								xs/src/boost/config/compiler/kai.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										148
									
								
								xs/src/boost/config/compiler/metrowerks.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								xs/src/boost/config/compiler/metrowerks.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,148 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001.
 | 
			
		||||
//  (C) Copyright Darin Adler 2001.
 | 
			
		||||
//  (C) Copyright Peter Dimov 2001.
 | 
			
		||||
//  (C) Copyright David Abrahams 2001 - 2002.
 | 
			
		||||
//  (C) Copyright Beman Dawes 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Stefan Slapeta 2004.
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  Metrowerks C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
// locale support is disabled when linking with the dynamic runtime
 | 
			
		||||
#   ifdef _MSL_NO_LOCALE
 | 
			
		||||
#     define BOOST_NO_STD_LOCALE
 | 
			
		||||
#   endif
 | 
			
		||||
 | 
			
		||||
#   if __MWERKS__ <= 0x2301  // 5.3
 | 
			
		||||
#     define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 | 
			
		||||
#     define BOOST_NO_POINTER_TO_MEMBER_CONST
 | 
			
		||||
#     define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
 | 
			
		||||
#     define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
 | 
			
		||||
#   endif
 | 
			
		||||
 | 
			
		||||
#   if __MWERKS__ <= 0x2401  // 6.2
 | 
			
		||||
//#     define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 | 
			
		||||
#   endif
 | 
			
		||||
 | 
			
		||||
#   if(__MWERKS__ <= 0x2407)  // 7.x
 | 
			
		||||
#     define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
 | 
			
		||||
#     define BOOST_NO_UNREACHABLE_RETURN_DETECTION
 | 
			
		||||
#   endif
 | 
			
		||||
 | 
			
		||||
#   if(__MWERKS__ <= 0x3003)  // 8.x
 | 
			
		||||
#     define BOOST_NO_SFINAE
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
// the "|| !defined(BOOST_STRICT_CONFIG)" part should apply to the last
 | 
			
		||||
// tested version *only*:
 | 
			
		||||
#   if(__MWERKS__ <= 0x3207) || !defined(BOOST_STRICT_CONFIG) // 9.6
 | 
			
		||||
#     define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#     define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#if !__option(wchar_type)
 | 
			
		||||
#   define BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !__option(exceptions) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
#   define BOOST_NO_EXCEPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__INTEL__ && _WIN32) || (__POWERPC__ && macintosh)
 | 
			
		||||
#   if __MWERKS__ == 0x3000
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 8.0
 | 
			
		||||
#   elif __MWERKS__ == 0x3001
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 8.1
 | 
			
		||||
#   elif __MWERKS__ == 0x3002
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 8.2
 | 
			
		||||
#   elif __MWERKS__ == 0x3003
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 8.3
 | 
			
		||||
#   elif __MWERKS__ == 0x3200
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.0
 | 
			
		||||
#   elif __MWERKS__ == 0x3201
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.1
 | 
			
		||||
#   elif __MWERKS__ == 0x3202
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.2
 | 
			
		||||
#   elif __MWERKS__ == 0x3204
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.3
 | 
			
		||||
#   elif __MWERKS__ == 0x3205
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.4
 | 
			
		||||
#   elif __MWERKS__ == 0x3206
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.5
 | 
			
		||||
#   elif __MWERKS__ == 0x3207
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.6
 | 
			
		||||
#   else
 | 
			
		||||
#     define BOOST_COMPILER_VERSION __MWERKS__
 | 
			
		||||
#   endif
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_COMPILER_VERSION __MWERKS__
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
//   See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
 | 
			
		||||
//
 | 
			
		||||
#if __MWERKS__ > 0x3206 && __option(rvalue_refs)
 | 
			
		||||
#  define BOOST_HAS_RVALUE_REFS
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support Metrowerks prior to version 5.3:
 | 
			
		||||
#if __MWERKS__ < 0x2301
 | 
			
		||||
#  error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version:
 | 
			
		||||
#if (__MWERKS__ > 0x3205)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										90
									
								
								xs/src/boost/config/compiler/mpw.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										90
									
								
								xs/src/boost/config/compiler/mpw.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,90 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 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.
 | 
			
		||||
 | 
			
		||||
//  MPW C++ compilers setup:
 | 
			
		||||
 | 
			
		||||
#   if    defined(__SC__)
 | 
			
		||||
#     define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__)
 | 
			
		||||
#   elif defined(__MRC__)
 | 
			
		||||
#     define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__)
 | 
			
		||||
#   else
 | 
			
		||||
#     error "Using MPW compiler configuration by mistake.  Please update."
 | 
			
		||||
#   endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// MPW 8.90:
 | 
			
		||||
//
 | 
			
		||||
#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG)
 | 
			
		||||
#  define BOOST_NO_CV_SPECIALIZATIONS
 | 
			
		||||
#  define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
 | 
			
		||||
#  define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
 | 
			
		||||
#  define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
 | 
			
		||||
#  define BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
#  define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 | 
			
		||||
#  define BOOST_NO_USING_TEMPLATE
 | 
			
		||||
 | 
			
		||||
#  define BOOST_NO_CWCHAR
 | 
			
		||||
#  define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
 | 
			
		||||
 | 
			
		||||
#  define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
//   See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support MPW prior to version 8.9:
 | 
			
		||||
#if MPW_CPLUS < 0x890
 | 
			
		||||
#  error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is 0x890:
 | 
			
		||||
#if (MPW_CPLUS > 0x890)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										16
									
								
								xs/src/boost/config/compiler/nvcc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								xs/src/boost/config/compiler/nvcc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
//  (C) Copyright Eric Jourdanneau, Joel Falcou 2010
 | 
			
		||||
//  Use, modification and distribution are subject to the 
 | 
			
		||||
//  Boost Software License, Version 1.0. (See accompanying file 
 | 
			
		||||
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
 | 
			
		||||
//  See http://www.boost.org for most recent version.
 | 
			
		||||
 | 
			
		||||
//  NVIDIA CUDA C++ compiler setup
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_COMPILER
 | 
			
		||||
#  define BOOST_COMPILER "NVIDIA CUDA C++ Compiler"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// NVIDIA Specific support
 | 
			
		||||
// BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device
 | 
			
		||||
#define BOOST_GPU_ENABLED __host__ __device__
 | 
			
		||||
							
								
								
									
										83
									
								
								xs/src/boost/config/compiler/pathscale.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								xs/src/boost/config/compiler/pathscale.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,83 @@
 | 
			
		|||
//  (C) Copyright Bryce Lelbach 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.
 | 
			
		||||
 | 
			
		||||
// PathScale EKOPath C++ Compiler
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_COMPILER
 | 
			
		||||
#  define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if __PATHCC__ >= 4
 | 
			
		||||
#  define BOOST_MSVC6_MEMBER_TEMPLATES
 | 
			
		||||
#  define BOOST_HAS_UNISTD_H
 | 
			
		||||
#  define BOOST_HAS_STDINT_H
 | 
			
		||||
#  define BOOST_HAS_SIGACTION
 | 
			
		||||
#  define BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#  define BOOST_HAS_THREADS
 | 
			
		||||
#  define BOOST_HAS_PTHREADS
 | 
			
		||||
#  define BOOST_HAS_PTHREAD_YIELD
 | 
			
		||||
#  define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#  define BOOST_HAS_PARTIAL_STD_ALLOCATOR
 | 
			
		||||
#  define BOOST_HAS_NRVO
 | 
			
		||||
#  define BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#  define BOOST_HAS_NANOSLEEP
 | 
			
		||||
#  define BOOST_HAS_LONG_LONG
 | 
			
		||||
#  define BOOST_HAS_LOG1P
 | 
			
		||||
#  define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#  define BOOST_HAS_EXPM1
 | 
			
		||||
#  define BOOST_HAS_DIRENT_H
 | 
			
		||||
#  define BOOST_HAS_CLOCK_GETTIME
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#  define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#  define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#  define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#  define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#  define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#  define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#  define BOOST_NO_CXX11_NUMERIC_LIMITS
 | 
			
		||||
#  define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#  define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#  define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#  define BOOST_NO_MS_INT64_NUMERIC_LIMITS
 | 
			
		||||
#  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#  define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#  define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#  define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_UNORDERED_SET
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_UNORDERED_MAP
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_TYPEINDEX
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_TUPLE
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_THREAD
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_REGEX
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_RATIO
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_RANDOM
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_MUTEX
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_FUTURE
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_FORWARD_LIST
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_CODECVT
 | 
			
		||||
#  define BOOST_NO_CXX11_HDR_CHRONO
 | 
			
		||||
#  define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#  define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#  define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										125
									
								
								xs/src/boost/config/compiler/pgi.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								xs/src/boost/config/compiler/pgi.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,125 @@
 | 
			
		|||
//  (C) Copyright Noel Belcourt 2007.
 | 
			
		||||
//  Use, modification and distribution are subject to the
 | 
			
		||||
//  Boost Software License, Version 1.0. (See accompanying file
 | 
			
		||||
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
 | 
			
		||||
//  See http://www.boost.org for most recent version.
 | 
			
		||||
 | 
			
		||||
//  PGI C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__
 | 
			
		||||
#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Threading support:
 | 
			
		||||
// Turn this on unconditionally here, it will get turned off again later
 | 
			
		||||
// if no threading API is detected.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#if __PGIC__ >= 11
 | 
			
		||||
 | 
			
		||||
// options requested by configure --enable-test
 | 
			
		||||
#define BOOST_HAS_PTHREADS
 | 
			
		||||
#define BOOST_HAS_THREADS
 | 
			
		||||
#define BOOST_HAS_PTHREAD_YIELD
 | 
			
		||||
#define BOOST_HAS_NRVO
 | 
			
		||||
#define BOOST_HAS_LONG_LONG
 | 
			
		||||
 | 
			
		||||
// options --enable-test wants undefined
 | 
			
		||||
#undef BOOST_NO_STDC_NAMESPACE
 | 
			
		||||
#undef BOOST_NO_EXCEPTION_STD_NAMESPACE
 | 
			
		||||
#undef BOOST_DEDUCED_TYPENAME
 | 
			
		||||
 | 
			
		||||
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
 | 
			
		||||
#elif __PGIC__ >= 10
 | 
			
		||||
 | 
			
		||||
// options requested by configure --enable-test
 | 
			
		||||
#define BOOST_HAS_THREADS
 | 
			
		||||
#define BOOST_HAS_NRVO
 | 
			
		||||
#define BOOST_HAS_LONG_LONG
 | 
			
		||||
#if defined(linux) || defined(__linux) || defined(__linux__)
 | 
			
		||||
#  define BOOST_HAS_STDINT_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// options --enable-test wants undefined
 | 
			
		||||
#undef BOOST_NO_STDC_NAMESPACE
 | 
			
		||||
#undef BOOST_NO_EXCEPTION_STD_NAMESPACE
 | 
			
		||||
#undef BOOST_DEDUCED_TYPENAME
 | 
			
		||||
 | 
			
		||||
#elif __PGIC__ >= 7
 | 
			
		||||
 | 
			
		||||
#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#define BOOST_NO_SWPRINTF
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
#  error "Pgi compiler not configured - please reconfigure"
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
//   See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_NUMERIC_LIMITS
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_SWPRINTF
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_UNORDERED_SET
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_UNORDERED_MAP
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_TYPEINDEX
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_TUPLE
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_THREAD
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_REGEX
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_RATIO
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_RANDOM
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_MUTEX
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_FUTURE
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_FORWARD_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_CODECVT
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_CHRONO
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_ARRAY
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// version check:
 | 
			
		||||
// probably nothing to do here?
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								xs/src/boost/config/compiler/sgi_mipspro.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								xs/src/boost/config/compiler/sgi_mipspro.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,29 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 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.
 | 
			
		||||
 | 
			
		||||
//  SGI C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
 | 
			
		||||
 | 
			
		||||
#include "boost/config/compiler/common_edg.hpp"
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Threading support:
 | 
			
		||||
// Turn this on unconditionally here, it will get turned off again later
 | 
			
		||||
// if no threading API is detected.
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_THREADS
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
 | 
			
		||||
#undef BOOST_NO_SWPRINTF
 | 
			
		||||
#undef BOOST_DEDUCED_TYPENAME
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// version check:
 | 
			
		||||
// probably nothing to do here?
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										153
									
								
								xs/src/boost/config/compiler/sunpro_cc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								xs/src/boost/config/compiler/sunpro_cc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,153 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001.
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Peter Dimov 2002.
 | 
			
		||||
//  (C) Copyright Aleksey Gurtovoy 2002 - 2003.
 | 
			
		||||
//  (C) Copyright David Abrahams 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.
 | 
			
		||||
 | 
			
		||||
//  Sun C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#    if __SUNPRO_CC <= 0x500
 | 
			
		||||
#      define BOOST_NO_MEMBER_TEMPLATES
 | 
			
		||||
#      define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#    if (__SUNPRO_CC <= 0x520)
 | 
			
		||||
       //
 | 
			
		||||
       // Sunpro 5.2 and earler:
 | 
			
		||||
       //
 | 
			
		||||
       // although sunpro 5.2 supports the syntax for
 | 
			
		||||
       // inline initialization it often gets the value
 | 
			
		||||
       // wrong, especially where the value is computed
 | 
			
		||||
       // from other constants (J Maddock 6th May 2001)
 | 
			
		||||
#      define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
 | 
			
		||||
 | 
			
		||||
       // Although sunpro 5.2 supports the syntax for
 | 
			
		||||
       // partial specialization, it often seems to
 | 
			
		||||
       // bind to the wrong specialization.  Better
 | 
			
		||||
       // to disable it until suppport becomes more stable
 | 
			
		||||
       // (J Maddock 6th May 2001).
 | 
			
		||||
#      define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#    if (__SUNPRO_CC <= 0x530)
 | 
			
		||||
       // Requesting debug info (-g) with Boost.Python results
 | 
			
		||||
       // in an internal compiler error for "static const"
 | 
			
		||||
       // initialized in-class.
 | 
			
		||||
       //    >> Assertion:   (../links/dbg_cstabs.cc, line 611)
 | 
			
		||||
       //         while processing ../test.cpp at line 0.
 | 
			
		||||
       // (Jens Maurer according to Gottfried Ganssauge 04 Mar 2002)
 | 
			
		||||
#      define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
 | 
			
		||||
 | 
			
		||||
       // SunPro 5.3 has better support for partial specialization,
 | 
			
		||||
       // but breaks when compiling std::less<shared_ptr<T> >
 | 
			
		||||
       // (Jens Maurer 4 Nov 2001).
 | 
			
		||||
 | 
			
		||||
       // std::less specialization fixed as reported by George
 | 
			
		||||
       // Heintzelman; partial specialization re-enabled
 | 
			
		||||
       // (Peter Dimov 17 Jan 2002)
 | 
			
		||||
 | 
			
		||||
//#      define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
 | 
			
		||||
 | 
			
		||||
       // integral constant expressions with 64 bit numbers fail
 | 
			
		||||
#      define BOOST_NO_INTEGRAL_INT64_T
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#    if (__SUNPRO_CC < 0x570)
 | 
			
		||||
#      define BOOST_NO_TEMPLATE_TEMPLATES
 | 
			
		||||
       // see http://lists.boost.org/MailArchives/boost/msg47184.php
 | 
			
		||||
       // and http://lists.boost.org/MailArchives/boost/msg47220.php
 | 
			
		||||
#      define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
 | 
			
		||||
#      define BOOST_NO_SFINAE
 | 
			
		||||
#      define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
 | 
			
		||||
#    endif
 | 
			
		||||
#    if (__SUNPRO_CC <= 0x580)
 | 
			
		||||
#      define BOOST_NO_IS_ABSTRACT
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
#    if (__SUNPRO_CC <= 0x5100)
 | 
			
		||||
       // Sun 5.10 may not correctly value-initialize objects of
 | 
			
		||||
       // some user defined types, as was reported in April 2010
 | 
			
		||||
       // (CR 6947016), and confirmed by Steve Clamage.
 | 
			
		||||
       // (Niels Dekker, LKEB, May 2010).
 | 
			
		||||
#      define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
#    endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
 | 
			
		||||
//
 | 
			
		||||
#if __SUNPRO_CC > 0x500
 | 
			
		||||
#  define BOOST_SYMBOL_EXPORT __global
 | 
			
		||||
#  define BOOST_SYMBOL_IMPORT __global
 | 
			
		||||
#  define BOOST_SYMBOL_VISIBLE __global
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Issues that effect all known versions:
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#define BOOST_NO_ADL_BARRIER
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
#  define BOOST_HAS_LONG_LONG
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Version
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support sunpro prior to version 4:
 | 
			
		||||
#if __SUNPRO_CC < 0x400
 | 
			
		||||
#error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is 0x590:
 | 
			
		||||
#if (__SUNPRO_CC > 0x590)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										131
									
								
								xs/src/boost/config/compiler/vacpp.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								xs/src/boost/config/compiler/vacpp.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,131 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Toon Knapen 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Lie-Quan Lee 2001.
 | 
			
		||||
//  (C) Copyright Markus Schoepflin 2002 - 2003.
 | 
			
		||||
//  (C) Copyright Beman Dawes 2002 - 2003.
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  Visual Age (IBM) C++ compiler setup:
 | 
			
		||||
 | 
			
		||||
#if __IBMCPP__ <= 501
 | 
			
		||||
#  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#  define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__IBMCPP__ <= 502)
 | 
			
		||||
// Actually the compiler supports inclass member initialization but it
 | 
			
		||||
// requires a definition for the class member and it doesn't recognize
 | 
			
		||||
// it as an integral constant expression when used as a template argument.
 | 
			
		||||
#  define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
 | 
			
		||||
#  define BOOST_NO_INTEGRAL_INT64_T
 | 
			
		||||
#  define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG)
 | 
			
		||||
#  define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if (__IBMCPP__ <= 1110)
 | 
			
		||||
// XL C++ V11.1 and earlier versions may not always value-initialize
 | 
			
		||||
// a temporary object T(), when T is a non-POD aggregate class type.
 | 
			
		||||
// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it
 | 
			
		||||
// high priority. -- Niels Dekker (LKEB), May 2010.
 | 
			
		||||
#  define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// On AIX thread support seems to be indicated by _THREAD_SAFE:
 | 
			
		||||
//
 | 
			
		||||
#ifdef _THREAD_SAFE
 | 
			
		||||
#  define BOOST_HAS_THREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#define BOOST_COMPILER "IBM Visual Age version " BOOST_STRINGIZE(__IBMCPP__)
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support Visual age prior to version 5:
 | 
			
		||||
#if __IBMCPP__ < 500
 | 
			
		||||
#error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is 1210:
 | 
			
		||||
#if (__IBMCPP__ > 1210)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Some versions of the compiler have issues with default arguments on partial specializations
 | 
			
		||||
#if __IBMCPP__ <= 1010
 | 
			
		||||
#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
//   See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
 | 
			
		||||
//
 | 
			
		||||
#if ! __IBMCPP_AUTO_TYPEDEDUCTION
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#endif
 | 
			
		||||
#if ! __IBMCPP_UTF_LITERAL__
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#  define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#endif
 | 
			
		||||
#if ! __IBMCPP_CONSTEXPR
 | 
			
		||||
#  define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#endif
 | 
			
		||||
#if ! __IBMCPP_DECLTYPE
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_HAS_DECLTYPE
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#if ! __IBMCPP_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#endif
 | 
			
		||||
#if ! __IBMCPP_EXTERN_TEMPLATE
 | 
			
		||||
#  define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
#endif
 | 
			
		||||
#if ! __IBMCPP_VARIADIC_TEMPLATES
 | 
			
		||||
// not enabled separately at this time
 | 
			
		||||
#  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
 | 
			
		||||
#define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#if ! __IBMCPP_RVALUE_REFERENCES
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#endif
 | 
			
		||||
#if ! __IBMCPP_SCOPED_ENUM
 | 
			
		||||
#  define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#if ! __IBMCPP_STATIC_ASSERT
 | 
			
		||||
#  define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#if ! __IBMCPP_VARIADIC_TEMPLATES
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#endif
 | 
			
		||||
#if ! __C99_MACRO_WITH_VA_ARGS
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#endif
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
							
								
								
									
										276
									
								
								xs/src/boost/config/compiler/visualc.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										276
									
								
								xs/src/boost/config/compiler/visualc.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,276 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003.
 | 
			
		||||
//  (C) Copyright Darin Adler 2001 - 2002.
 | 
			
		||||
//  (C) Copyright Peter Dimov 2001.
 | 
			
		||||
//  (C) Copyright Aleksey Gurtovoy 2002.
 | 
			
		||||
//  (C) Copyright David Abrahams 2002 - 2003.
 | 
			
		||||
//  (C) Copyright Beman Dawes 2002 - 2003.
 | 
			
		||||
//  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.
 | 
			
		||||
//
 | 
			
		||||
//  Microsoft Visual C++ compiler setup:
 | 
			
		||||
//
 | 
			
		||||
//  We need to be careful with the checks in this file, as contrary
 | 
			
		||||
//  to popular belief there are versions with _MSC_VER with the final
 | 
			
		||||
//  digit non-zero (mainly the MIPS cross compiler).
 | 
			
		||||
//
 | 
			
		||||
//  So we either test _MSC_VER >= XXXX or else _MSC_VER < XXXX.
 | 
			
		||||
//  No other comparisons (==, >, or <=) are safe.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#define BOOST_MSVC _MSC_VER
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Helper macro BOOST_MSVC_FULL_VER for use in Boost code:
 | 
			
		||||
//
 | 
			
		||||
#if _MSC_FULL_VER > 100000000
 | 
			
		||||
#  define BOOST_MSVC_FULL_VER _MSC_FULL_VER
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_MSVC_FULL_VER (_MSC_FULL_VER * 10)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// Attempt to suppress VC6 warnings about the length of decorated names (obsolete):
 | 
			
		||||
#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_PRAGMA_ONCE
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// versions check:
 | 
			
		||||
// we don't support Visual C++ prior to version 7.1:
 | 
			
		||||
#if _MSC_VER < 1310
 | 
			
		||||
#  error "Compiler not supported or configured - please reconfigure"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if _MSC_FULL_VER < 180020827
 | 
			
		||||
#  define BOOST_NO_FENV_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if _MSC_VER < 1400
 | 
			
		||||
// although a conforming signature for swprint exists in VC7.1
 | 
			
		||||
// it appears not to actually work:
 | 
			
		||||
#  define BOOST_NO_SWPRINTF
 | 
			
		||||
// Our extern template tests also fail for this compiler:
 | 
			
		||||
#  define BOOST_NO_CXX11_EXTERN_TEMPLATE
 | 
			
		||||
// Variadic macros do not exist for VC7.1 and lower
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_MACROS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(UNDER_CE)
 | 
			
		||||
// Windows CE does not have a conforming signature for swprintf
 | 
			
		||||
#  define BOOST_NO_SWPRINTF
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if _MSC_VER < 1500  // 140X == VC++ 8.0
 | 
			
		||||
#  define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if _MSC_VER < 1600  // 150X == VC++ 9.0
 | 
			
		||||
   // A bug in VC9:
 | 
			
		||||
#  define BOOST_NO_ADL_BARRIER
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// MSVC (including the latest checked version) has not yet completely
 | 
			
		||||
// implemented value-initialization, as is reported:
 | 
			
		||||
// "VC++ does not value-initialize members of derived classes without
 | 
			
		||||
// user-declared constructor", reported in 2009 by Sylvester Hesp:
 | 
			
		||||
// https://connect.microsoft.com/VisualStudio/feedback/details/484295
 | 
			
		||||
// "Presence of copy constructor breaks member class initialization",
 | 
			
		||||
// reported in 2009 by Alex Vakulenko:
 | 
			
		||||
// https://connect.microsoft.com/VisualStudio/feedback/details/499606
 | 
			
		||||
// "Value-initialization in new-expression", reported in 2005 by
 | 
			
		||||
// Pavel Kuznetsov (MetaCommunications Engineering):
 | 
			
		||||
// https://connect.microsoft.com/VisualStudio/feedback/details/100744
 | 
			
		||||
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
 | 
			
		||||
// (Niels Dekker, LKEB, May 2010)
 | 
			
		||||
#  define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
 | 
			
		||||
 | 
			
		||||
#ifndef _NATIVE_WCHAR_T_DEFINED
 | 
			
		||||
#  define BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(_WIN32_WCE) || defined(UNDER_CE)
 | 
			
		||||
#  define BOOST_NO_SWPRINTF
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// we have ThreadEx or GetSystemTimeAsFileTime unless we're running WindowsCE
 | 
			
		||||
#if !defined(_WIN32_WCE) && !defined(UNDER_CE)
 | 
			
		||||
#  define BOOST_HAS_THREADEX
 | 
			
		||||
#  define BOOST_HAS_GETSYSTEMTIMEASFILETIME
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// check for exception handling support:
 | 
			
		||||
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
 | 
			
		||||
#  define BOOST_NO_EXCEPTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// __int64 support:
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_MS_INT64
 | 
			
		||||
#if defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1400)
 | 
			
		||||
#   define BOOST_HAS_LONG_LONG
 | 
			
		||||
#else
 | 
			
		||||
#   define BOOST_NO_LONG_LONG
 | 
			
		||||
#endif
 | 
			
		||||
#if (_MSC_VER >= 1400) && !defined(_DEBUG)
 | 
			
		||||
#   define BOOST_HAS_NRVO
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// disable Win32 API's if compiler extentions are
 | 
			
		||||
// turned off:
 | 
			
		||||
//
 | 
			
		||||
#if !defined(_MSC_EXTENSIONS) && !defined(BOOST_DISABLE_WIN32)
 | 
			
		||||
#  define BOOST_DISABLE_WIN32
 | 
			
		||||
#endif
 | 
			
		||||
#if !defined(_CPPRTTI) && !defined(BOOST_NO_RTTI)
 | 
			
		||||
#  define BOOST_NO_RTTI
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// TR1 features:
 | 
			
		||||
//
 | 
			
		||||
#if _MSC_VER >= 1700
 | 
			
		||||
// # define BOOST_HAS_TR1_HASH			// don't know if this is true yet.
 | 
			
		||||
// # define BOOST_HAS_TR1_TYPE_TRAITS	// don't know if this is true yet.
 | 
			
		||||
# define BOOST_HAS_TR1_UNORDERED_MAP
 | 
			
		||||
# define BOOST_HAS_TR1_UNORDERED_SET
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// C++0x features
 | 
			
		||||
//
 | 
			
		||||
//   See above for BOOST_NO_LONG_LONG
 | 
			
		||||
 | 
			
		||||
// C++ features supported by VC++ 10 (aka 2010)
 | 
			
		||||
//
 | 
			
		||||
#if _MSC_VER < 1600
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_DECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_LAMBDAS
 | 
			
		||||
#  define BOOST_NO_CXX11_RVALUE_REFERENCES
 | 
			
		||||
#  define BOOST_NO_CXX11_STATIC_ASSERT
 | 
			
		||||
#  define BOOST_NO_CXX11_NULLPTR
 | 
			
		||||
#  define BOOST_NO_CXX11_DECLTYPE
 | 
			
		||||
#endif // _MSC_VER < 1600
 | 
			
		||||
 | 
			
		||||
#if _MSC_VER >= 1600
 | 
			
		||||
#  define BOOST_HAS_STDINT_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++11 features supported by VC++ 11 (aka 2012)
 | 
			
		||||
//
 | 
			
		||||
#if _MSC_VER < 1700
 | 
			
		||||
#  define BOOST_NO_CXX11_RANGE_BASED_FOR
 | 
			
		||||
#  define BOOST_NO_CXX11_SCOPED_ENUMS
 | 
			
		||||
#endif // _MSC_VER < 1700
 | 
			
		||||
 | 
			
		||||
// C++11 features supported by VC++ 12 (aka 2013).
 | 
			
		||||
//
 | 
			
		||||
#if _MSC_FULL_VER < 180020827
 | 
			
		||||
#  define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_DELETED_FUNCTIONS
 | 
			
		||||
#  define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
 | 
			
		||||
#  define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
 | 
			
		||||
#  define BOOST_NO_CXX11_RAW_LITERALS
 | 
			
		||||
#  define BOOST_NO_CXX11_TEMPLATE_ALIASES
 | 
			
		||||
#  define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
 | 
			
		||||
#  define BOOST_NO_CXX11_VARIADIC_TEMPLATES
 | 
			
		||||
#  define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// C++11 features not supported by any versions
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR16_T
 | 
			
		||||
#define BOOST_NO_CXX11_CHAR32_T
 | 
			
		||||
#define BOOST_NO_CXX11_CONSTEXPR
 | 
			
		||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
 | 
			
		||||
#define BOOST_NO_CXX11_NOEXCEPT
 | 
			
		||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
 | 
			
		||||
#define BOOST_NO_SFINAE_EXPR
 | 
			
		||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
 | 
			
		||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
 | 
			
		||||
#define BOOST_NO_CXX11_ALIGNAS
 | 
			
		||||
#define BOOST_NO_CXX11_INLINE_NAMESPACES
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// prefix and suffix headers:
 | 
			
		||||
//
 | 
			
		||||
#ifndef BOOST_ABI_PREFIX
 | 
			
		||||
#  define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_ABI_SUFFIX
 | 
			
		||||
#  define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_COMPILER
 | 
			
		||||
// TODO:
 | 
			
		||||
// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
 | 
			
		||||
// artificial versions assigned to them only refer to the versions of some IDE
 | 
			
		||||
// these compilers have been shipped with, and even that is not all of it. Some
 | 
			
		||||
// were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
 | 
			
		||||
// IOW, you can't use these 'versions' in any sensible way. Sorry.
 | 
			
		||||
# if defined(UNDER_CE)
 | 
			
		||||
#   if _MSC_VER < 1400
 | 
			
		||||
      // Note: I'm not aware of any CE compiler with version 13xx
 | 
			
		||||
#      if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#         error "Unknown EVC++ compiler version - please run the configure tests and report the results"
 | 
			
		||||
#      else
 | 
			
		||||
#         pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
 | 
			
		||||
#      endif
 | 
			
		||||
#   elif _MSC_VER < 1500
 | 
			
		||||
#     define BOOST_COMPILER_VERSION evc8
 | 
			
		||||
#   elif _MSC_VER < 1600
 | 
			
		||||
#     define BOOST_COMPILER_VERSION evc9
 | 
			
		||||
#   elif _MSC_VER < 1700
 | 
			
		||||
#     define BOOST_COMPILER_VERSION evc10
 | 
			
		||||
#   elif _MSC_VER < 1800 
 | 
			
		||||
#     define BOOST_COMPILER_VERSION evc11 
 | 
			
		||||
#   elif _MSC_VER < 1900 
 | 
			
		||||
#     define BOOST_COMPILER_VERSION evc12
 | 
			
		||||
#   else
 | 
			
		||||
#      if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#         error "Unknown EVC++ compiler version - please run the configure tests and report the results"
 | 
			
		||||
#      else
 | 
			
		||||
#         pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
 | 
			
		||||
#      endif
 | 
			
		||||
#   endif
 | 
			
		||||
# else
 | 
			
		||||
#   if _MSC_VER < 1310
 | 
			
		||||
      // Note: Versions up to 7.0 aren't supported.
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 5.0
 | 
			
		||||
#   elif _MSC_VER < 1300
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 6.0
 | 
			
		||||
#   elif _MSC_VER < 1310
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 7.0
 | 
			
		||||
#   elif _MSC_VER < 1400
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 7.1
 | 
			
		||||
#   elif _MSC_VER < 1500
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 8.0
 | 
			
		||||
#   elif _MSC_VER < 1600
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 9.0
 | 
			
		||||
#   elif _MSC_VER < 1700
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 10.0
 | 
			
		||||
#   elif _MSC_VER < 1800 
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 11.0
 | 
			
		||||
#   elif _MSC_VER < 1900
 | 
			
		||||
#     define BOOST_COMPILER_VERSION 12.0
 | 
			
		||||
#   else
 | 
			
		||||
#     define BOOST_COMPILER_VERSION _MSC_VER
 | 
			
		||||
#   endif
 | 
			
		||||
# endif
 | 
			
		||||
 | 
			
		||||
#  define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// last known and checked version is 18.00.20827.3 (VC12 RC, aka 2013 RC):
 | 
			
		||||
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 180020827)
 | 
			
		||||
#  if defined(BOOST_ASSERT_CONFIG)
 | 
			
		||||
#     error "Unknown compiler version - please run the configure tests and report the results"
 | 
			
		||||
#  else
 | 
			
		||||
#     pragma message("Unknown compiler version - please run the configure tests and report the results")
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										28
									
								
								xs/src/boost/config/no_tr1/cmath.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								xs/src/boost/config/no_tr1/cmath.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2008.
 | 
			
		||||
//  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)
 | 
			
		||||
//
 | 
			
		||||
// The aim of this header is just to include <cmath> but to do
 | 
			
		||||
// so in a way that does not result in recursive inclusion of
 | 
			
		||||
// the Boost TR1 components if boost/tr1/tr1/cmath is in the
 | 
			
		||||
// include search path.  We have to do this to avoid circular
 | 
			
		||||
// dependencies:
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_CMATH
 | 
			
		||||
#  define BOOST_CONFIG_CMATH
 | 
			
		||||
 | 
			
		||||
#  ifndef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_CONFIG_NO_CMATH_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  include <cmath>
 | 
			
		||||
 | 
			
		||||
#  ifdef BOOST_CONFIG_NO_CMATH_RECURSION
 | 
			
		||||
#     undef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     undef BOOST_CONFIG_NO_CMATH_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										28
									
								
								xs/src/boost/config/no_tr1/complex.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								xs/src/boost/config/no_tr1/complex.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
//  (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)
 | 
			
		||||
//
 | 
			
		||||
// The aim of this header is just to include <complex> but to do
 | 
			
		||||
// so in a way that does not result in recursive inclusion of
 | 
			
		||||
// the Boost TR1 components if boost/tr1/tr1/complex is in the
 | 
			
		||||
// include search path.  We have to do this to avoid circular
 | 
			
		||||
// dependencies:
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_COMPLEX
 | 
			
		||||
#  define BOOST_CONFIG_COMPLEX
 | 
			
		||||
 | 
			
		||||
#  ifndef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_CONFIG_NO_COMPLEX_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  include <complex>
 | 
			
		||||
 | 
			
		||||
#  ifdef BOOST_CONFIG_NO_COMPLEX_RECURSION
 | 
			
		||||
#     undef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     undef BOOST_CONFIG_NO_COMPLEX_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										28
									
								
								xs/src/boost/config/no_tr1/functional.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								xs/src/boost/config/no_tr1/functional.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
//  (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)
 | 
			
		||||
//
 | 
			
		||||
// The aim of this header is just to include <functional> but to do
 | 
			
		||||
// so in a way that does not result in recursive inclusion of
 | 
			
		||||
// the Boost TR1 components if boost/tr1/tr1/functional is in the
 | 
			
		||||
// include search path.  We have to do this to avoid circular
 | 
			
		||||
// dependencies:
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_FUNCTIONAL
 | 
			
		||||
#  define BOOST_CONFIG_FUNCTIONAL
 | 
			
		||||
 | 
			
		||||
#  ifndef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  include <functional>
 | 
			
		||||
 | 
			
		||||
#  ifdef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
 | 
			
		||||
#     undef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     undef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										28
									
								
								xs/src/boost/config/no_tr1/memory.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								xs/src/boost/config/no_tr1/memory.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
//  (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)
 | 
			
		||||
//
 | 
			
		||||
// The aim of this header is just to include <memory> but to do
 | 
			
		||||
// so in a way that does not result in recursive inclusion of
 | 
			
		||||
// the Boost TR1 components if boost/tr1/tr1/memory is in the
 | 
			
		||||
// include search path.  We have to do this to avoid circular
 | 
			
		||||
// dependencies:
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_MEMORY
 | 
			
		||||
#  define BOOST_CONFIG_MEMORY
 | 
			
		||||
 | 
			
		||||
#  ifndef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_CONFIG_NO_MEMORY_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  include <memory>
 | 
			
		||||
 | 
			
		||||
#  ifdef BOOST_CONFIG_NO_MEMORY_RECURSION
 | 
			
		||||
#     undef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     undef BOOST_CONFIG_NO_MEMORY_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										28
									
								
								xs/src/boost/config/no_tr1/utility.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								xs/src/boost/config/no_tr1/utility.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
//  (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)
 | 
			
		||||
//
 | 
			
		||||
// The aim of this header is just to include <utility> but to do
 | 
			
		||||
// so in a way that does not result in recursive inclusion of
 | 
			
		||||
// the Boost TR1 components if boost/tr1/tr1/utility is in the
 | 
			
		||||
// include search path.  We have to do this to avoid circular
 | 
			
		||||
// dependencies:
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_UTILITY
 | 
			
		||||
#  define BOOST_CONFIG_UTILITY
 | 
			
		||||
 | 
			
		||||
#  ifndef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     define BOOST_CONFIG_NO_UTILITY_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  include <utility>
 | 
			
		||||
 | 
			
		||||
#  ifdef BOOST_CONFIG_NO_UTILITY_RECURSION
 | 
			
		||||
#     undef BOOST_TR1_NO_RECURSION
 | 
			
		||||
#     undef BOOST_CONFIG_NO_UTILITY_RECURSION
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
							
								
								
									
										33
									
								
								xs/src/boost/config/platform/aix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								xs/src/boost/config/platform/aix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,33 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 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.
 | 
			
		||||
 | 
			
		||||
//  IBM/Aix specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "IBM Aix"
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#define BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#define BOOST_HAS_NANOSLEEP
 | 
			
		||||
#define BOOST_HAS_CLOCK_GETTIME
 | 
			
		||||
 | 
			
		||||
// This needs support in "boost/cstdint.hpp" exactly like FreeBSD.
 | 
			
		||||
// This platform has header named <inttypes.h> which includes all
 | 
			
		||||
// the things needed.
 | 
			
		||||
#define BOOST_HAS_STDINT_H
 | 
			
		||||
 | 
			
		||||
// Threading API's:
 | 
			
		||||
#define BOOST_HAS_PTHREADS
 | 
			
		||||
#define BOOST_HAS_PTHREAD_DELAY_NP
 | 
			
		||||
#define BOOST_HAS_SCHED_YIELD
 | 
			
		||||
//#define BOOST_HAS_PTHREAD_YIELD
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										15
									
								
								xs/src/boost/config/platform/amigaos.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								xs/src/boost/config/platform/amigaos.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,15 @@
 | 
			
		|||
//  (C) Copyright John Maddock 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.
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "AmigaOS"
 | 
			
		||||
 | 
			
		||||
#define BOOST_DISABLE_THREADS
 | 
			
		||||
#define BOOST_NO_CWCHAR
 | 
			
		||||
#define BOOST_NO_STD_WSTRING
 | 
			
		||||
#define BOOST_NO_INTRINSIC_WCHAR_T
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										26
									
								
								xs/src/boost/config/platform/beos.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								xs/src/boost/config/platform/beos.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  BeOS specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "BeOS"
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_CWCHAR
 | 
			
		||||
#define BOOST_NO_CWCTYPE
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_BETHREADS
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_DISABLE_THREADS
 | 
			
		||||
#  define BOOST_HAS_THREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										86
									
								
								xs/src/boost/config/platform/bsd.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								xs/src/boost/config/platform/bsd.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,86 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright Darin Adler 2001. 
 | 
			
		||||
//  (C) Copyright Douglas Gregor 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.
 | 
			
		||||
 | 
			
		||||
//  generic BSD config options:
 | 
			
		||||
 | 
			
		||||
#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
 | 
			
		||||
#error "This platform is not BSD"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __FreeBSD__
 | 
			
		||||
#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
 | 
			
		||||
#elif defined(__NetBSD__)
 | 
			
		||||
#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
 | 
			
		||||
#elif defined(__OpenBSD__)
 | 
			
		||||
#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
 | 
			
		||||
#elif defined(__DragonFly__)
 | 
			
		||||
#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__)
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// is this the correct version check?
 | 
			
		||||
// FreeBSD has <nl_types.h> but does not
 | 
			
		||||
// advertise the fact in <unistd.h>:
 | 
			
		||||
//
 | 
			
		||||
#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) || defined(__DragonFly__)
 | 
			
		||||
#  define BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// FreeBSD 3.x has pthreads support, but defines _POSIX_THREADS in <pthread.h>
 | 
			
		||||
// and not in <unistd.h>
 | 
			
		||||
//
 | 
			
		||||
#if (defined(__FreeBSD__) && (__FreeBSD__ <= 3))\
 | 
			
		||||
   || defined(__OpenBSD__) || defined(__DragonFly__) 
 | 
			
		||||
#  define BOOST_HAS_PTHREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// No wide character support in the BSD header files:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__NetBSD__)
 | 
			
		||||
#define __NetBSD_GCC__ (__GNUC__         * 1000000 \
 | 
			
		||||
                       + __GNUC_MINOR__ *    1000 \
 | 
			
		||||
                       + __GNUC_PATCHLEVEL__)
 | 
			
		||||
// XXX - the following is required until c++config.h
 | 
			
		||||
//       defines _GLIBCXX_HAVE_SWPRINTF and friends
 | 
			
		||||
//       or the preprocessor conditionals are removed
 | 
			
		||||
//       from the cwchar header.
 | 
			
		||||
#define _GLIBCXX_HAVE_SWPRINTF 1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \
 | 
			
		||||
      || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) || defined(__DragonFly__))
 | 
			
		||||
#  define BOOST_NO_CWCHAR
 | 
			
		||||
#endif
 | 
			
		||||
//
 | 
			
		||||
// The BSD <ctype.h> has macros only, no functions:
 | 
			
		||||
//
 | 
			
		||||
#if !defined(__OpenBSD__) || defined(__DragonFly__)
 | 
			
		||||
#  define BOOST_NO_CTYPE_FUNCTIONS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// thread API's not auto detected:
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#define BOOST_HAS_NANOSLEEP
 | 
			
		||||
#define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#define BOOST_HAS_SIGACTION
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								xs/src/boost/config/platform/cray.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								xs/src/boost/config/platform/cray.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,18 @@
 | 
			
		|||
//  (C) Copyright John Maddock 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.
 | 
			
		||||
 | 
			
		||||
//  SGI Irix specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "Cray"
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										58
									
								
								xs/src/boost/config/platform/cygwin.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								xs/src/boost/config/platform/cygwin.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,58 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  cygwin specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "Cygwin"
 | 
			
		||||
#define BOOST_HAS_DIRENT_H
 | 
			
		||||
#define BOOST_HAS_LOG1P
 | 
			
		||||
#define BOOST_HAS_EXPM1
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Threading API:
 | 
			
		||||
// See if we have POSIX threads, if we do use them, otherwise
 | 
			
		||||
// revert to native Win threads.
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
 | 
			
		||||
#  define BOOST_HAS_PTHREADS
 | 
			
		||||
#  define BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#  define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#  define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#  define BOOST_HAS_SIGACTION
 | 
			
		||||
#else
 | 
			
		||||
#  if !defined(BOOST_HAS_WINTHREADS)
 | 
			
		||||
#     define BOOST_HAS_WINTHREADS
 | 
			
		||||
#  endif
 | 
			
		||||
#  define BOOST_HAS_FTIME
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// find out if we have a stdint.h, there should be a better way to do this:
 | 
			
		||||
//
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#ifdef _STDINT_H
 | 
			
		||||
#define BOOST_HAS_STDINT_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
/// Cygwin has no fenv.h
 | 
			
		||||
#define BOOST_NO_FENV_H
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Cygwin lies about XSI conformance, there is no nl_types.h:
 | 
			
		||||
//
 | 
			
		||||
#ifdef BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#  undef BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#endif
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										87
									
								
								xs/src/boost/config/platform/hpux.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								xs/src/boost/config/platform/hpux.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,87 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright David Abrahams 2002. 
 | 
			
		||||
//  (C) Copyright Toon Knapen 2003. 
 | 
			
		||||
//  (C) Copyright Boris Gubenko 2006 - 2007.
 | 
			
		||||
//  Use, modification and distribution are subject to the 
 | 
			
		||||
//  Boost Software License, Version 1.0. (See accompanying file 
 | 
			
		||||
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
			
		||||
 | 
			
		||||
//  See http://www.boost.org for most recent version.
 | 
			
		||||
 | 
			
		||||
//  hpux specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "HP-UX"
 | 
			
		||||
 | 
			
		||||
// In principle, HP-UX has a nice <stdint.h> under the name <inttypes.h>
 | 
			
		||||
// However, it has the following problem:
 | 
			
		||||
// Use of UINT32_C(0) results in "0u l" for the preprocessed source
 | 
			
		||||
// (verifyable with gcc 2.95.3)
 | 
			
		||||
#if (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__HP_aCC)
 | 
			
		||||
#  define BOOST_HAS_STDINT_H
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if !(defined(__HP_aCC) || !defined(_INCLUDE__STDC_A1_SOURCE))
 | 
			
		||||
#  define BOOST_NO_SWPRINTF
 | 
			
		||||
#endif
 | 
			
		||||
#if defined(__HP_aCC) && !defined(_INCLUDE__STDC_A1_SOURCE)
 | 
			
		||||
#  define BOOST_NO_CWCTYPE
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__GNUC__)
 | 
			
		||||
#  if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))
 | 
			
		||||
      // GNU C on HP-UX does not support threads (checked up to gcc 3.3)
 | 
			
		||||
#     define BOOST_DISABLE_THREADS
 | 
			
		||||
#  elif !defined(BOOST_DISABLE_THREADS)
 | 
			
		||||
      // threads supported from gcc-3.3 onwards:
 | 
			
		||||
#     define BOOST_HAS_THREADS
 | 
			
		||||
#     define BOOST_HAS_PTHREADS
 | 
			
		||||
#  endif
 | 
			
		||||
#elif defined(__HP_aCC) && !defined(BOOST_DISABLE_THREADS)
 | 
			
		||||
#  define BOOST_HAS_PTHREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
// the following are always available:
 | 
			
		||||
#ifndef BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#  define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#    define BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#    define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#    define BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_NANOSLEEP
 | 
			
		||||
#    define BOOST_HAS_NANOSLEEP
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#    define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_DIRENT_H
 | 
			
		||||
#    define BOOST_HAS_DIRENT_H
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_CLOCK_GETTIME
 | 
			
		||||
#    define BOOST_HAS_CLOCK_GETTIME
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_SIGACTION
 | 
			
		||||
#  define BOOST_HAS_SIGACTION
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_NRVO 
 | 
			
		||||
#  ifndef __parisc
 | 
			
		||||
#    define BOOST_HAS_NRVO
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_LOG1P 
 | 
			
		||||
#  define BOOST_HAS_LOG1P
 | 
			
		||||
#endif
 | 
			
		||||
#ifndef BOOST_HAS_EXPM1
 | 
			
		||||
#  define BOOST_HAS_EXPM1
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										31
									
								
								xs/src/boost/config/platform/irix.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								xs/src/boost/config/platform/irix.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright Jens Maurer 2003. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  SGI Irix specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "SGI Irix"
 | 
			
		||||
 | 
			
		||||
#define BOOST_NO_SWPRINTF 
 | 
			
		||||
//
 | 
			
		||||
// these are not auto detected by POSIX feature tests:
 | 
			
		||||
//
 | 
			
		||||
#define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
 | 
			
		||||
#ifdef __GNUC__
 | 
			
		||||
   // GNU C on IRIX does not support threads (checked up to gcc 3.3)
 | 
			
		||||
#  define BOOST_DISABLE_THREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										103
									
								
								xs/src/boost/config/platform/linux.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								xs/src/boost/config/platform/linux.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,103 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001 - 2003. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  linux specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "linux"
 | 
			
		||||
 | 
			
		||||
// make sure we have __GLIBC_PREREQ if available at all
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
#else
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// <stdint.h> added to glibc 2.1.1
 | 
			
		||||
// We can only test for 2.1 though:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
 | 
			
		||||
   // <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines
 | 
			
		||||
   // int64_t only if __GNUC__.  Thus, assume a fully usable <stdint.h>
 | 
			
		||||
   // only when using GCC.
 | 
			
		||||
#  if defined __GNUC__
 | 
			
		||||
#    define BOOST_HAS_STDINT_H
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__LIBCOMO__)
 | 
			
		||||
   //
 | 
			
		||||
   // como on linux doesn't have std:: c functions:
 | 
			
		||||
   // NOTE: versions of libcomo prior to beta28 have octal version numbering,
 | 
			
		||||
   // e.g. version 25 is 21 (dec)
 | 
			
		||||
   //
 | 
			
		||||
#  if __LIBCOMO_VERSION__ <= 20
 | 
			
		||||
#    define BOOST_NO_STDC_NAMESPACE
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  if __LIBCOMO_VERSION__ <= 21
 | 
			
		||||
#    define BOOST_NO_SWPRINTF
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// If glibc is past version 2 then we definitely have
 | 
			
		||||
// gettimeofday, earlier versions may or may not have it:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__GLIBC__) && (__GLIBC__ >= 2)
 | 
			
		||||
#  define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __USE_POSIX199309
 | 
			
		||||
#  define BOOST_HAS_NANOSLEEP
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
 | 
			
		||||
// __GLIBC_PREREQ is available since 2.1.2
 | 
			
		||||
 | 
			
		||||
   // swprintf is available since glibc 2.2.0
 | 
			
		||||
#  if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
 | 
			
		||||
#    define BOOST_NO_SWPRINTF
 | 
			
		||||
#  endif
 | 
			
		||||
#else
 | 
			
		||||
#  define BOOST_NO_SWPRINTF
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
#define BOOST_HAS_PTHREAD_YIELD
 | 
			
		||||
 | 
			
		||||
#ifndef __GNUC__
 | 
			
		||||
//
 | 
			
		||||
// if the compiler is not gcc we still need to be able to parse
 | 
			
		||||
// the GNU system headers, some of which (mainly <stdint.h>)
 | 
			
		||||
// use GNU specific extensions:
 | 
			
		||||
//
 | 
			
		||||
#  ifndef __extension__
 | 
			
		||||
#     define __extension__
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef __const__
 | 
			
		||||
#     define __const__ const
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef __volatile__
 | 
			
		||||
#     define __volatile__ volatile
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef __signed__
 | 
			
		||||
#     define __signed__ signed
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef __typeof__
 | 
			
		||||
#     define __typeof__ typeof
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef __inline__
 | 
			
		||||
#     define __inline__ inline
 | 
			
		||||
#  endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										87
									
								
								xs/src/boost/config/platform/macos.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								xs/src/boost/config/platform/macos.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,87 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright Darin Adler 2001 - 2002. 
 | 
			
		||||
//  (C) Copyright Bill Kempf 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.
 | 
			
		||||
 | 
			
		||||
//  Mac OS specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "Mac OS"
 | 
			
		||||
 | 
			
		||||
#if __MACH__ && !defined(_MSL_USING_MSL_C)
 | 
			
		||||
 | 
			
		||||
// Using the Mac OS X system BSD-style C library.
 | 
			
		||||
 | 
			
		||||
#  ifndef BOOST_HAS_UNISTD_H
 | 
			
		||||
#    define BOOST_HAS_UNISTD_H
 | 
			
		||||
#  endif
 | 
			
		||||
//
 | 
			
		||||
// Begin by including our boilerplate code for POSIX
 | 
			
		||||
// feature detection, this is safe even when using
 | 
			
		||||
// the MSL as Metrowerks supply their own <unistd.h>
 | 
			
		||||
// to replace the platform-native BSD one. G++ users
 | 
			
		||||
// should also always be able to do this on MaxOS X.
 | 
			
		||||
//
 | 
			
		||||
#  include <boost/config/posix_features.hpp>
 | 
			
		||||
#  ifndef BOOST_HAS_STDINT_H
 | 
			
		||||
#     define BOOST_HAS_STDINT_H
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// BSD runtime has pthreads, sigaction, sched_yield and gettimeofday,
 | 
			
		||||
// of these only pthreads are advertised in <unistd.h>, so set the 
 | 
			
		||||
// other options explicitly:
 | 
			
		||||
//
 | 
			
		||||
#  define BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#  define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#  define BOOST_HAS_SIGACTION
 | 
			
		||||
 | 
			
		||||
#  if (__GNUC__ < 3) && !defined( __APPLE_CC__)
 | 
			
		||||
 | 
			
		||||
// GCC strange "ignore std" mode works better if you pretend everything
 | 
			
		||||
// is in the std namespace, for the most part.
 | 
			
		||||
 | 
			
		||||
#    define BOOST_NO_STDC_NAMESPACE
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#  if (__GNUC__ == 4)
 | 
			
		||||
 | 
			
		||||
// Both gcc and intel require these.  
 | 
			
		||||
#    define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#    define BOOST_HAS_NANOSLEEP
 | 
			
		||||
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#else
 | 
			
		||||
 | 
			
		||||
// Using the MSL C library.
 | 
			
		||||
 | 
			
		||||
// We will eventually support threads in non-Carbon builds, but we do
 | 
			
		||||
// not support this yet.
 | 
			
		||||
#  if ( defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON ) || ( defined(TARGET_CARBON) && TARGET_CARBON )
 | 
			
		||||
 | 
			
		||||
#  if !defined(BOOST_HAS_PTHREADS)
 | 
			
		||||
// MPTasks support is deprecated/removed from Boost:
 | 
			
		||||
//#    define BOOST_HAS_MPTASKS
 | 
			
		||||
#  elif ( __dest_os == __mac_os_x )
 | 
			
		||||
// We are doing a Carbon/Mach-O/MSL build which has pthreads, but only the
 | 
			
		||||
// gettimeofday and no posix.
 | 
			
		||||
#  define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#ifdef BOOST_HAS_PTHREADS
 | 
			
		||||
#  define BOOST_HAS_THREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
// The remote call manager depends on this.
 | 
			
		||||
#    define BOOST_BIND_ENABLE_PASCAL
 | 
			
		||||
 | 
			
		||||
#  endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										31
									
								
								xs/src/boost/config/platform/qnxnto.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								xs/src/boost/config/platform/qnxnto.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,31 @@
 | 
			
		|||
//  (C) Copyright Jim Douglas 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 for most recent version.
 | 
			
		||||
 | 
			
		||||
//  QNX specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "QNX"
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
// QNX claims XOpen version 5 compatibility, but doesn't have an nl_types.h
 | 
			
		||||
// or log1p and expm1:
 | 
			
		||||
#undef  BOOST_HAS_NL_TYPES_H
 | 
			
		||||
#undef  BOOST_HAS_LOG1P
 | 
			
		||||
#undef  BOOST_HAS_EXPM1
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_PTHREADS
 | 
			
		||||
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#define BOOST_HAS_CLOCK_GETTIME
 | 
			
		||||
#define BOOST_HAS_NANOSLEEP
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										28
									
								
								xs/src/boost/config/platform/solaris.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								xs/src/boost/config/platform/solaris.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,28 @@
 | 
			
		|||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright Jens Maurer 2003. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  sun specific config options:
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "Sun Solaris"
 | 
			
		||||
 | 
			
		||||
#define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
 | 
			
		||||
// boilerplate code:
 | 
			
		||||
#define BOOST_HAS_UNISTD_H
 | 
			
		||||
#include <boost/config/posix_features.hpp>
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// pthreads don't actually work with gcc unless _PTHREADS is defined:
 | 
			
		||||
//
 | 
			
		||||
#if defined(__GNUC__) && defined(_POSIX_THREADS) && !defined(_PTHREADS)
 | 
			
		||||
# undef BOOST_HAS_PTHREADS
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										97
									
								
								xs/src/boost/config/platform/symbian.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								xs/src/boost/config/platform/symbian.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,97 @@
 | 
			
		|||
//  (C) Copyright Yuriy Krasnoschek 2009. 
 | 
			
		||||
//  (C) Copyright John Maddock 2001 - 2003. 
 | 
			
		||||
//  (C) Copyright Jens Maurer 2001 - 2003. 
 | 
			
		||||
//  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.
 | 
			
		||||
 | 
			
		||||
//  symbian specific config options:
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "Symbian"
 | 
			
		||||
#define BOOST_SYMBIAN 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#if defined(__S60_3X__)
 | 
			
		||||
// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL
 | 
			
		||||
#  define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK
 | 
			
		||||
// make sure we have __GLIBC_PREREQ if available at all
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
#else
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#endif// boilerplate code:
 | 
			
		||||
#  define BOOST_HAS_UNISTD_H
 | 
			
		||||
#  include <boost/config/posix_features.hpp>
 | 
			
		||||
// S60 SDK defines _POSIX_VERSION as POSIX.1
 | 
			
		||||
#  ifndef BOOST_HAS_STDINT_H
 | 
			
		||||
#    define BOOST_HAS_STDINT_H
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#    define BOOST_HAS_GETTIMEOFDAY
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_DIRENT_H
 | 
			
		||||
#    define BOOST_HAS_DIRENT_H
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_SIGACTION
 | 
			
		||||
#    define BOOST_HAS_SIGACTION
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_PTHREADS
 | 
			
		||||
#    define BOOST_HAS_PTHREADS
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_NANOSLEEP
 | 
			
		||||
#    define BOOST_HAS_NANOSLEEP
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#    define BOOST_HAS_SCHED_YIELD
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#    define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_LOG1P
 | 
			
		||||
#    define BOOST_HAS_LOG1P
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_HAS_EXPM1
 | 
			
		||||
#    define BOOST_HAS_EXPM1
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef BOOST_POSIX_API
 | 
			
		||||
#    define BOOST_POSIX_API
 | 
			
		||||
#  endif
 | 
			
		||||
// endianess support
 | 
			
		||||
#  include <sys/endian.h>
 | 
			
		||||
// Symbian SDK provides _BYTE_ORDER instead of __BYTE_ORDER
 | 
			
		||||
#  ifndef __LITTLE_ENDIAN
 | 
			
		||||
#    ifdef _LITTLE_ENDIAN
 | 
			
		||||
#      define __LITTLE_ENDIAN _LITTLE_ENDIAN
 | 
			
		||||
#    else
 | 
			
		||||
#      define __LITTLE_ENDIAN 1234
 | 
			
		||||
#    endif
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef __BIG_ENDIAN
 | 
			
		||||
#    ifdef _BIG_ENDIAN
 | 
			
		||||
#      define __BIG_ENDIAN _BIG_ENDIAN
 | 
			
		||||
#    else
 | 
			
		||||
#      define __BIG_ENDIAN 4321
 | 
			
		||||
#    endif
 | 
			
		||||
#  endif
 | 
			
		||||
#  ifndef __BYTE_ORDER
 | 
			
		||||
#    define __BYTE_ORDER __LITTLE_ENDIAN // Symbian is LE
 | 
			
		||||
#  endif
 | 
			
		||||
// Known limitations
 | 
			
		||||
#  define BOOST_ASIO_DISABLE_SERIAL_PORT
 | 
			
		||||
#  define BOOST_DATE_TIME_NO_LOCALE
 | 
			
		||||
#  define BOOST_NO_STD_WSTRING
 | 
			
		||||
#  define BOOST_EXCEPTION_DISABLE
 | 
			
		||||
#  define BOOST_NO_EXCEPTIONS
 | 
			
		||||
 | 
			
		||||
#else // TODO: More platform support e.g. UIQ
 | 
			
		||||
#  error "Unsuppoted Symbian SDK"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined(__WINSCW__) && !defined(BOOST_DISABLE_WIN32)
 | 
			
		||||
#  define BOOST_DISABLE_WIN32 // winscw defines WIN32 macro
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										25
									
								
								xs/src/boost/config/platform/vms.hpp
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								xs/src/boost/config/platform/vms.hpp
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
//  (C) Copyright Artyom Beilis 2010.  
 | 
			
		||||
//  Use, modification and distribution are subject to the  
 | 
			
		||||
//  Boost Software License, Version 1.0. (See accompanying file  
 | 
			
		||||
//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 
 | 
			
		||||
 | 
			
		||||
#ifndef BOOST_CONFIG_PLATFORM_VMS_HPP 
 | 
			
		||||
#define BOOST_CONFIG_PLATFORM_VMS_HPP 
 | 
			
		||||
 | 
			
		||||
#define BOOST_PLATFORM "OpenVMS" 
 | 
			
		||||
 | 
			
		||||
#undef  BOOST_HAS_STDINT_H 
 | 
			
		||||
#define BOOST_HAS_UNISTD_H 
 | 
			
		||||
#define BOOST_HAS_NL_TYPES_H 
 | 
			
		||||
#define BOOST_HAS_GETTIMEOFDAY 
 | 
			
		||||
#define BOOST_HAS_DIRENT_H 
 | 
			
		||||
#define BOOST_HAS_PTHREADS 
 | 
			
		||||
#define BOOST_HAS_NANOSLEEP 
 | 
			
		||||
#define BOOST_HAS_CLOCK_GETTIME 
 | 
			
		||||
#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE 
 | 
			
		||||
#define BOOST_HAS_LOG1P 
 | 
			
		||||
#define BOOST_HAS_EXPM1 
 | 
			
		||||
#define BOOST_HAS_THREADS 
 | 
			
		||||
#undef  BOOST_HAS_SCHED_YIELD 
 | 
			
		||||
 | 
			
		||||
#endif 
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show more
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue